master
SLW\ARNAUA 2023-03-13 08:35:08 +01:00
parent b0d8b5d809
commit 4a90689e22
1 changed files with 34 additions and 17 deletions

View File

@ -5,7 +5,16 @@
[**2. Info**](#info)<br /> [**2. Info**](#info)<br />
[**3. Repositories**](#repositories)<br /> [**3. Repositories**](#repositories)<br />
[**4. Requirements**](#requirements)<br /> [**4. Requirements**](#requirements)<br />
[4.1 Python](#python)<br />
[4.2 Packages](#packages)<br />
[**5. Documentation**](#documentation)<br /> [**5. Documentation**](#documentation)<br />
[5.1 Arguments](#arguments)<br />
[*5.1.1 Examples*](#examples)<br />
[5.2 Jenkins Pipeline](#jenkins-pipeline)<br />
[5.3 Data Structure of YAML Files](#data-structure-of-yaml-files)<br />
[*5.3.1 Supported Metrics*](#supported-metrics)<br />
[5.4 Jinja Templates](#jinja-templates)<br />
[5.5 Terraform Output Folder Structure](#terraform-output-folder-structure)<br />
<a name="description"></a> <a name="description"></a>
## **1. Description** ## **1. Description**
@ -18,30 +27,33 @@ This repository contains a first draft script that can use a specific YAML file
- Some YAML files have already been created for testing purposes based on the shared_configuration and coco_terraform_config repositories and were therefore added in this repository. - Some YAML files have already been created for testing purposes based on the shared_configuration and coco_terraform_config repositories and were therefore added in this repository.
> ⚠️ Currently the input from YAML filenames starting with the prefix **`TP_`** are supported! > ⚠️ Currently the input from YAML filenames starting with the prefix **`TP_`** are supported!
<a id="repositories"></a> <a name="repositories"></a>
## **3. Repositories** ## **3. Repositories**
The following repositores have been used to create some YAML files. The following repositores have been used to create some YAML files.
- [shared_configuration](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/shared_configuration) - [shared_configuration](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/shared_configuration)
- [coco_terraform_config](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/coco_terraform_config) - [coco_terraform_config](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/coco_terraform_config)
<a id="requirements"></a> <a name="requirements"></a>
## **4. Requirements** ## **4. Requirements**
### **Python** <a name="python"></a>
### 4.1 Python
The used python version for running the script is 3.11.2. The used python version for running the script is 3.11.2.
### **Libraries** <a name="packages"></a>
### 4.2 Packages
Some python packages need to be installed. Please use the requirements.txt file to install missing packages. The command for installing the missing packages is: Some python packages need to be installed. Please use the requirements.txt file to install missing packages. The command for installing the missing packages is:
```sh ```sh
pip3 install --user -r requirements.txt pip3 install --user -r requirements.txt
``` ```
<a id="documentation"></a>
<a name="documentation"></a>
## **5. Documentation** ## **5. Documentation**
The following section is just a small exhibit tailored to the use of the script. The following section is just a small exhibit tailored to the use of the script.
### **Arguments** <a name="arguments"></a>
### 5.1 Arguments
If the script needs to be used for local execution, then the following command should be used: If the script needs to be used for local execution, then the following command should be used:
``` ```
.\generate.py <path to yaml file/folder> <path to output folder> .\generate.py <path to yaml file/folder> <path to output folder>
``` ```
@ -49,7 +61,8 @@ Please note that two arguments are necessary:
- <b>`<path to yaml folder>`</b> - Here it is necessary to provide the path to the folder where the yaml files are stored. Fore example, if the yaml files are stored within the DE-3 business line folder, then it is important to convey the correct path as an argument for the script, in this case <b>`.\DE-3\`</b>. It is also possible to provide multiple folders, but they have to be delimited by a comma when parsing, in this case <b>`.\DE-3\,.\DE-4\,.\DE-7\`</b>! - <b>`<path to yaml folder>`</b> - Here it is necessary to provide the path to the folder where the yaml files are stored. Fore example, if the yaml files are stored within the DE-3 business line folder, then it is important to convey the correct path as an argument for the script, in this case <b>`.\DE-3\`</b>. It is also possible to provide multiple folders, but they have to be delimited by a comma when parsing, in this case <b>`.\DE-3\,.\DE-4\,.\DE-7\`</b>!
- <b>`<optional:path to output folder>`</b> - If it is necessary to store the generated Terraform files to a specific location, then the correct path to that particular folder needs to be provided! Alternatively, the default path <b>`.\output\`</b> will be used which is within the current working directory of the script. - <b>`<optional:path to output folder>`</b> - If it is necessary to store the generated Terraform files to a specific location, then the correct path to that particular folder needs to be provided! Alternatively, the default path <b>`.\output\`</b> will be used which is within the current working directory of the script.
#### **Examples** <a name="examples"></a>
#### *5.1.1 Examples*
Here are some examples when executing the script: Here are some examples when executing the script:
```sh ```sh
# The YAML Files are stored within the business line folder DE-3, in the same working directory as the script, and by the following command it is possible to generate the Terraform files and store them into the default output folder. # The YAML Files are stored within the business line folder DE-3, in the same working directory as the script, and by the following command it is possible to generate the Terraform files and store them into the default output folder.
@ -77,7 +90,9 @@ Here are some examples when executing the script:
# Note here: If all yaml files of the shared_configuration repository need to be provided as an input argument it would also suffice to use the following command: # Note here: If all yaml files of the shared_configuration repository need to be provided as an input argument it would also suffice to use the following command:
.\generate.py ..\shared_configuration\ ..\coco_terraform_config\ .\generate.py ..\shared_configuration\ ..\coco_terraform_config\
``` ```
### **Jenkins Pipeline**
<a name="jenkins-pipeline"></a>
### 5.2 Jenkins Pipeline
This is the link to the pipeline: This is the link to the pipeline:
[Pipeline CoCo SLO YAML 2 TF](https://jaws.bmwgroup.net/opapm/job/CoCo%20SLO%20YAML%202%20TF/). There are basically five main stages: [Pipeline CoCo SLO YAML 2 TF](https://jaws.bmwgroup.net/opapm/job/CoCo%20SLO%20YAML%202%20TF/). There are basically five main stages:
- Fetch Repositories: - Fetch Repositories:
@ -89,11 +104,10 @@ This is the link to the pipeline:
- Execute Script: The script is executed and the YAML files with the corresponding business lines - Execute Script: The script is executed and the YAML files with the corresponding business lines
- Push Changes: Once the script finished with its exection the changes will be pushed with a commit that just includes a timestamp. The changes will be pushed to the newly created branch as mentioned above! - Push Changes: Once the script finished with its exection the changes will be pushed with a commit that just includes a timestamp. The changes will be pushed to the newly created branch as mentioned above!
### **Data Structure of the YAML Files** <a name="data-structure-of-yaml-files"></a>
### 5.3 Data Structure of YAML Files
The majority of the key and value pairs have been taken respectively from the [shared_configuration](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/shared_configuration/) repository. The majority of the key and value pairs have been taken respectively from the [shared_configuration](https://atc.bmwgroup.net/bitbucket/projects/OPAPM/repos/shared_configuration/) repository.
> ⚠️ **Please make sure that the YAML File does not include any tabs otherwise the correct functionality cannot be assured!** > ⚠️ **Please make sure that the YAML File does not include any tabs otherwise the correct functionality cannot be assured!**
```yaml ```yaml
slo_id: # <type:string> - Order of the given SLO within the dashboard slo_id: # <type:string> - Order of the given SLO within the dashboard
slo_name: # <type:string> - Touchpoint Mobile or Vehicle slo_name: # <type:string> - Touchpoint Mobile or Vehicle
@ -137,7 +151,8 @@ slo_definition:
- # <type:string> - # <type:string>
``` ```
#### **Supported Metrics** <a name="supported-metrics"></a>
#### *5.3.1 Supported Metrics*
Currently the following metrics are supported: Currently the following metrics are supported:
```yaml ```yaml
builtin:service.keyRequest.errors.fivexx.rate builtin:service.keyRequest.errors.fivexx.rate
@ -146,7 +161,8 @@ builtin:service.keyRequest.errors.fivexx.count
builtin:service.errors.server.successCount builtin:service.errors.server.successCount
builtin:service.errors.fivexx.successCount builtin:service.errors.fivexx.successCount
``` ```
### **Jinja Templates** <a name="jinja-templates"></a>
### 5.4 Jinja Templates
Currently there are only five Jinja Templates setup to cover mainly five different types of metrics as mentioned before. They can be found within the jinja-templates folder. Currently there are only five Jinja Templates setup to cover mainly five different types of metrics as mentioned before. They can be found within the jinja-templates folder.
```sh ```sh
├───jinja-templates ├───jinja-templates
@ -162,7 +178,8 @@ Currently there are only five Jinja Templates setup to cover mainly five differe
- terraform-template-4.j2 is used for builtin:service.errors.server.successCount - terraform-template-4.j2 is used for builtin:service.errors.server.successCount
- terraform-template-5.j2 is used for builtin:service.errors.fivexx.successCount - terraform-template-5.j2 is used for builtin:service.errors.fivexx.successCount
### **Terraform Output Folder Structure** <a name="terraform-output-folder-structure"></a>
### 5.5 Terraform Output Folder Structure
The output folder structure will look like the following example: The output folder structure will look like the following example:
```sh ```sh
C:.s C:.s