Repository: exasol/integration-test-docker-environment (language: python)

Issue:
Add Docker-DB 7.1.15 and prepare release
# Summary
A new Docker-DB version which we need to support have been released.

## Task(s)
- [x] Add config for Docker-DB X.Y.Z
- [x] Change default image version to X.Y.Z
- [x] Update `LATEST_DB_VERSION` in `test_environment_options.py`
- [x] Update currently supported version(s) in `user_guide.rst`
- [x] Update changelog

Add Docker-DB 7.1.15 and prepare release
# Summary
A new Docker-DB version which we need to support have been released.

## Task(s)
- [x] Add config for Docker-DB X.Y.Z
- [x] Change default image version to X.Y.Z
- [x] Update `LATEST_DB_VERSION` in `test_environment_options.py`
- [x] Update currently supported version(s) in `user_guide.rst`
- [x] Update changelog



Discussion / hints:

Fix patch:
diff --git a/doc/changes/changes_1.2.0.md b/doc/changes/changes_1.2.0.md
index 85d71b0fd..c7ae12bbe 100644
--- a/doc/changes/changes_1.2.0.md
+++ b/doc/changes/changes_1.2.0.md
@@ -1,13 +1,13 @@
-# Integration-Test-Docker-Environment 1.2.0, released TBD
+# Integration-Test-Docker-Environment 1.2.0, released 2022-11-03
 
 ## Summary
 
-TBD
+This release supports a new option which allows the injection of custom parameters to the database and also supports docker db version 7.1.15.
 
 ### Supported Exasol Versions
 
 * **7.0**: up to 7.0.20, **except 7.0.5**
-* **7.1**: up to 7.1.14
+* **7.1**: up to 7.1.15
 
 If you need further versions, please open an issue.
 
@@ -22,6 +22,7 @@ n/a
 ## Features / Enhancements:
 
  - #270: Added support for additional db parameters
+ - #272: Added Docker-DB 7.1.15 and prepare release
 
 ## Refactoring:
 
diff --git a/doc/user_guide/user_guide.rst b/doc/user_guide/user_guide.rst
index 30a0b208d..3473c8f5f 100644
--- a/doc/user_guide/user_guide.rst
+++ b/doc/user_guide/user_guide.rst
@@ -130,7 +130,7 @@ The following options are available to customize the test environment.
                                      containers
 
      --docker-db-image-version TEXT  Docker DB Image Version against which the
-                                     tests should run.  [default: 7.1.12]
+                                     tests should run.  [default: 7.1.15]
 
      --docker-db-image-name TEXT     Docker DB Image Name against which the tests
                                      should run.  [default: exasol/docker-db]
@@ -255,7 +255,7 @@ Currently supported Exasol Versions
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 -  **7.0**: up to 7.0.20 **except 7.0.5**
--  **7.1**: up to 7.1.14
+-  **7.1**: up to 7.1.15
 
 If you need further versions, please open an issue.
 
diff --git a/docker_db_config_template/7.1.15 b/docker_db_config_template/7.1.15
new file mode 120000
index 000000000..3769235d3
--- /dev/null
+++ b/docker_db_config_template/7.1.15
@@ -0,0 +1,1 @@
+7.1.0
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 898351db5..2c4b26fb5 100644
--- a/setup.py
+++ b/setup.py
@@ -61,6 +61,7 @@
                                                 'docker_db_config/7.1.12/*',
                                                 'docker_db_config/7.1.13/*',
                                                 'docker_db_config/7.1.14/*',
+                                                'docker_db_config/7.1.15/*',
                                                 'docker_db_config/7.1.2/*',
                                                 'docker_db_config/7.1.3/*',
                                                 'docker_db_config/7.1.4/*',


Test patch:
diff --git a/exasol_integration_test_docker_environment/cli/options/test_environment_options.py b/exasol_integration_test_docker_environment/cli/options/test_environment_options.py
index 494bb9e36..f61b849eb 100644
--- a/exasol_integration_test_docker_environment/cli/options/test_environment_options.py
+++ b/exasol_integration_test_docker_environment/cli/options/test_environment_options.py
@@ -10,7 +10,7 @@
 
 ]
 
-LATEST_DB_VERSION = """7.1.14"""
+LATEST_DB_VERSION = """7.1.15"""
 
 docker_db_options = [
     click.option('--docker-db-image-version', type=str, default=LATEST_DB_VERSION,
diff --git a/exasol_integration_test_docker_environment/docker_db_config/7.1.15/EXAConf b/exasol_integration_test_docker_environment/docker_db_config/7.1.15/EXAConf
new file mode 100644
index 000000000..d7f517ec7
--- /dev/null
+++ b/exasol_integration_test_docker_environment/docker_db_config/7.1.15/EXAConf
@@ -0,0 +1,209 @@
+[Global]
+    Revision = 14
+    Checksum = COMMIT
+    ClusterName = cl4
+    Platform = Docker
+    LicenseFile = /exa/etc/license.xml
+    CoredPort = 10001
+    SSHPort = 22
+    XMLRPCPort = 443
+    WebUIBackendPort = 4444
+    WebUIDomain = exacluster.local
+    EnableLoadBalancer = False
+    AuthenticationToken = VFdOQ2ZVZExoRGZqb21ZVzpWWVR0d0NXYVh6am9TckhmeGdnQ3pwU2pFSktOTXlqUHNMclhQU0drWHdld2xDZndXeFFORU1rVnNFSGN4c2Jp
+    # List of networks for this cluster: 'private' is mandatory, 'public' is optional.
+    Networks = private
+    # Comma-separated list of nameservers for this cluster.
+    NameServers = {{ name_servers }}
+    # Path to c4 unix domain socket, used for deployments of new clusters and nodes.
+    C4Socket = /var/run/c4_socket
+    Timezone = Europe/Berlin
+    LicenseRAWMEMWarnThreshold = 80
+    # Nr. of hugepages ('0' = disabled, 'host' = manually configured on the host, 'auto' = set automatically based on DB config)
+    Hugepages = 0
+    StorageConnectionThreads = 16
+    StorageMaxConnections = 1024
+    ConfVersion = {{ db_version }}
+    OSVersion = {{ db_version }}
+    REVersion = {{ db_version }}
+    DBVersion = {{ db_version }}
+    ImageVersion = {{ db_version }}
+
+# SSL options
+[SSL]
+    # The SSL certificate, private key and CA for all EXASOL services
+    Cert = {{ certificate_dir }}/cert.crt
+    CertKey = {{ certificate_dir }}/cert.key
+    CertAuth = {{ certificate_dir }}/rootCA.crt
+    # Options to verify certificates: none, optional, required
+    CertVerify = none
+    # Domain name in the certifcate
+    CertDomainName = 
+
+# Docker related options
+[Docker]
+    # The directory that contains all data related to this docker cluster
+    # (except for mapped devices)
+    RootDir = /exa/etc
+    # The EXASOL docker image used for all containers of this cluster
+    Image = exasol/docker-db:latest
+    # The type of storage devices for this cluster: 'block' or 'file'
+    DeviceType = file
+    # Comma-separated list of volumes to be mounted in all containers (e. g. '/mnt/my_data:/exa/my_data:rw' )
+    # These user-defined volumes are mounted additionally to the internal ones (like the node root volume)
+    AdditionalVolumes = 
+
+[Groups]
+    [[root]]
+        ID = 0
+    [[exausers]]
+        ID = 500
+    [[exadbadm]]
+        ID = 1001
+    [[exastoradm]]
+        ID = 1002
+    [[exabfsadm]]
+        ID = 1003
+    [[exaadm]]
+        ID = 1004
+
+[Users]
+    [[root]]
+        ID = 0
+        Group = root
+        LoginEnabled = True
+        AdditionalGroups = exausers, exadbadm, exastoradm, exabfsadm, exaadm
+    [[exadefusr]]
+        ID = 500
+        Group = exausers
+        LoginEnabled = False
+        AdditionalGroups = exadbadm, exastoradm, exabfsadm, exaadm
+
+[Node : 11]
+    PrivateNet = {{private_network}}
+    PublicNet = 
+    Name = n11
+    # Affinity decides how this node is used in the cluster. i.e, the possibility to become master
+    Affinity = 11
+    UUID = 02F4E2AF9C294CABA0A119A89AC60B44EC95D19C
+    DockerVolume = n11
+    # Ports to be exposed (container : host)
+    ExposedPorts = 8888:8899, 6583:6594
+    [[Disk : disk1]]
+        Component = exastorage
+        Devices = dev.1
+        Mapping = dev.1:/exa/data/storage
+
+# Global EXAStorage options
+[EXAStorage]
+    # Enable or disable background recovery / data restoration (does not affect on-demand recovery)
+    BgRecEnabled = True
+    # Max. throughput for background recovery / data restoration (in MiB/s)
+    BgRecLimit = 
+    # Space usage threshold (in percent, per node) for sending a warning
+    SpaceWarnThreshold = 90
+
+# An EXAStorage volume
+[EXAVolume : DataVolume1]
+    # Type of volume: 'data' | 'archive'
+    Type = data
+    # Volume size (e. g. '1 TiB')
+    Size = {{ disk_size }}
+    # Name of the disk to be used for this volume.
+    # This disk must exist on all volume nodes.
+    Disk = disk1
+    # Comma-separated list of node IDs for this volume (put dedicated redundancy nodes at the end, if any)
+    Nodes = 11
+    # OPTIONAL: Nr. of master nodes for this volume. Remaining nodes will be used for redundancy only.
+    NumMasterNodes = 1
+    # Desired redundancy for this volume
+    Redundancy = 1
+    BlockSize = 4 KiB
+    StripeSize = 256 KiB
+    # User and group IDs that own this volume (e. g. '1000:1005')
+    Owner = 500 : 500
+    Permissions = rwx
+    # OPTIONAL: shared volumes can be opened (for writing) by multiple clients simultaneously
+    Shared = True
+    # OPTIONAL: I/O priority (0 = highest, 20 = lowest)
+    Priority = 10
+
+# An EXASOL database
+[DB : DB1]
+    # Version nr. of this database.
+    Version = {{db_version}}
+    # Memory size over all nodes (e. g. '1 TiB').
+    MemSize = {{ mem_size }}
+    Port = 8888
+    # User and group IDs that own this database (e. g. '1000:1005').
+    Owner = 500 : 500
+    # Comma-separated list of node IDs for this DB (put reserve nodes at the end, if any).
+    Nodes = 11
+    # Nr. of initially active nodes for this DB. The remaining nodes will be reserve nodes.
+    NumActiveNodes = 1
+    # Name of the data volume to be used by this database.
+    DataVolume = DataVolume1
+    EnableAuditing = True
+    BuiltinScriptLanguageName = ScriptLanguages-release-standard-exasol-7.1.0-1.1.0
+    AutoStart = True
+    # Additional db parameters
+    {% if additional_db_parameters %}
+    Params = {{ additional_db_parameters }}
+    {% endif %}
+    # JDBC driver configuration
+    [[JDBC]]
+        # BucketFS that contains the JDBC driver
+        BucketFS = bfsdefault
+        # Bucket that contains the JDBC driver
+        Bucket = default
+        # Directory within the bucket that contains the drivers
+        Dir = drivers/jdbc
+    # Oracle driver configuration
+    [[Oracle]]
+        # BucketFS that contains the JDBC drivers
+        BucketFS = bfsdefault
+        # Bucket that contains the JDBC drivers
+        Bucket = default
+        # Directory within the bucket that contains the drivers
+        Dir = drivers/oracle
+
+# The default BucketFS (auto-generated)
+[BucketFS : bfsdefault]
+    Owner = 500 : 500
+    # HTTP port number (0 = disabled)
+    HttpPort = 6583
+    # HTTPS port number (0 = disabled)
+    HttpsPort = 0
+    SyncKey = c3RxWjRxWUFpZUFQblEyc0p2djZUM0VZamVZa1M0bUs=
+    SyncPeriod = 30000
+    mode = rsync
+    bucketvolume = None
+    # The default bucket (auto-generated)
+    [[Bucket : default]]
+        # ReadPasswd is "read" (without quotes)
+        ReadPasswd = cmVhZAo=
+        # WritePasswd is "write" (without quotes)
+        WritePasswd = d3JpdGU=
+        Public = True
+        Name = default
+        AdditionalFiles = EXAClusterOS:/usr/opt/EXASuite-7/ScriptLanguages/*
+
+    [[Bucket : myudfs]]
+        # ReadPasswd is "read" (without quotes)
+        ReadPasswd = cmVhZAo=
+        # WritePasswd is "write" (without quotes)
+        WritePasswd = d3JpdGU=
+        Public = True
+        Name = myudfs
+
+    [[Bucket : jdbc_adapter]]
+        # ReadPasswd is "read" (without quotes)
+        ReadPasswd = cmVhZAo=
+        # WritePasswd is "write" (without quotes)
+        WritePasswd = d3JpdGU=
+        Public = True
+        Name = jdbc-adapter
+[Logging]
+    LogRotationTypes = local,
+    RemoteLogRotationVolume = cloud_data_remote_volume
+    RemoteLogRotationPrefix = Logs
diff --git a/exasol_integration_test_docker_environment/docker_db_config/7.1.15/init_db.sh b/exasol_integration_test_docker_environment/docker_db_config/7.1.15/init_db.sh
new file mode 100755
index 000000000..d30413601
--- /dev/null
+++ b/exasol_integration_test_docker_environment/docker_db_config/7.1.15/init_db.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+DEVICE_SIZE_IN_MEGABYTES=$1
+
+# Setup directory "exa" with pre-configured EXAConf to attach it to the exasoldb docker container
+mkdir -p /exa/{etc,data/storage}
+cp EXAConf /exa/etc/EXAConf
+dd if=/dev/zero of=/exa/data/storage/dev.1 bs=1M count=1 seek="$DEVICE_SIZE_IN_MEGABYTES"