diff --git a/.gitignore b/.gitignore index b8a7072..001d216 100644 --- a/.gitignore +++ b/.gitignore @@ -1,58 +1,58 @@ -# Local .terraform directories -.terraform/ - -# .tfstate files -*.tfstate -*.tfstate.* - -# Crash log files -crash.log -crash.*.log - -# Exclude all .tfvars files, which are likely to contain sensitive data, such as -# password, private keys, and other secrets. These should not be part of version -# control as they are data points which are potentially sensitive and subject -# to change depending on the environment. -*.tfvars -*.tfvars.json - -# Ignore override files as they are usually used to override resources locally and so -# are not checked in -override.tf -override.tf.json -*_override.tf -*_override.tf.json - -# Ignore transient lock info files created by terraform apply -.terraform.tfstate.lock.info - -# Include override files you do wish to add to version control using negated pattern -# !example_override.tf - -# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan -# example: *tfplan* - -# Ignore CLI configuration files -.terraformrc -terraform.rc - -# Optional: ignore graph output files generated by `terraform graph` -# *.dot - -# Optional: ignore plan files saved before destroying Terraform configuration -# Uncomment the line below if you want to ignore planout files. -# planout - -.DS_Store - -# Ignorer les .venv -.venv - -# Ignorer le dossier node_modules -node_modules - -logs - -email-template.md - -venv \ No newline at end of file +# Local .terraform directories +.terraform/ + +# .tfstate files +*.tfstate +*.tfstate.* + +# Crash log files +crash.log +crash.*.log + +# Exclude all .tfvars files, which are likely to contain sensitive data, such as +# password, private keys, and other secrets. These should not be part of version +# control as they are data points which are potentially sensitive and subject +# to change depending on the environment. +*.tfvars +*.tfvars.json + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json + +# Ignore transient lock info files created by terraform apply +.terraform.tfstate.lock.info + +# Include override files you do wish to add to version control using negated pattern +# !example_override.tf + +# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan +# example: *tfplan* + +# Ignore CLI configuration files +.terraformrc +terraform.rc + +# Optional: ignore graph output files generated by `terraform graph` +# *.dot + +# Optional: ignore plan files saved before destroying Terraform configuration +# Uncomment the line below if you want to ignore planout files. +# planout + +.DS_Store + +# Ignorer les .venv +.venv + +# Ignorer le dossier node_modules +node_modules + +logs + +email-template.md + +venv diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3c892ac --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +version: '3.8' + +services: + python-api: + build: ./python-api + ports: + - "5000:5000" + container_name: log-analyser-api + volumes: + - ./config.json:/app/../config.json + + node-client: + build: ./node-client + depends_on: + - python-api + volumes: + - ./config.json:/app/../config.json + container_name: log-analyser-client + + diff --git a/node-client/Dockerfile b/node-client/Dockerfile new file mode 100644 index 0000000..6594a29 --- /dev/null +++ b/node-client/Dockerfile @@ -0,0 +1,10 @@ +FROM node:18-alpine + +WORKDIR /app + +COPY package.json . +RUN npm install + +COPY . . + +CMD ["node", "app.js"] \ No newline at end of file diff --git a/node-client/app.js b/node-client/app.js index 47cf0a2..e066213 100644 --- a/node-client/app.js +++ b/node-client/app.js @@ -3,10 +3,10 @@ const path = require('path'); -// Configuration partagée chargée depuis config.json (à la racine du projet) const config = require(path.join(__dirname, '..', 'config.json')); const API_URL = `http://${config.api.host}:${config.api.port}${config.api.route}`; + const axios = require('axios'); async function getLogs() { diff --git a/python-api/Dockerfile b/python-api/Dockerfile new file mode 100644 index 0000000..b9df468 --- /dev/null +++ b/python-api/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.11-slim + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +EXPOSE 5000 + +CMD ["python", "app.py"] \ No newline at end of file diff --git a/python-api/app.py b/python-api/app.py index bc7c4b5..a01a75e 100644 --- a/python-api/app.py +++ b/python-api/app.py @@ -6,6 +6,7 @@ # Chargement de la configuration partagée (config.json à la racine du projet) config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'config.json') + with open(config_path, 'r') as f: config = json.load(f) @@ -15,7 +16,7 @@ # ------------------------------------------------------- def parse_logs(filepath): - errors = [] + erreurs = [] warnings = [] infos = [] @@ -25,17 +26,17 @@ def parse_logs(filepath): if not line: continue if "ERROR" in line: - errors.append(line) + erreurs.append(line) elif "WARNING" in line: warnings.append(line) elif "INFO" in line: infos.append(line) return { - "error_count": len(errors), + "error_count": len(erreurs), "warning_count": len(warnings), "info_count": len(infos), - "errors": errors, + "errors": erreurs, "warnings": warnings }