Metrics in append

This commit is contained in:
Lorenzo Venerandi
2025-02-20 18:57:18 +01:00
parent a30fa7e10f
commit 4d2519462f
4 changed files with 27 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
import argparse import argparse
import src import src
import src.utils as ut import src.utils as ut
import time
def main(): def main():
@@ -32,12 +33,12 @@ def main():
pelato = src.Pelato() pelato = src.Pelato()
if pelato.metrics_enabled: if pelato.metrics_enabled:
pelato.metrics = ut.load_metrics(args.dir) pelato.metrics = {}
start_time = time.time()
# Esecuzione del comando specificato # Esecuzione del comando specificato
if args.command == "gen": if args.command == "gen":
pelato.generate(args.dir) pelato.generate(args.dir)
pelato.metrics = {}
elif args.command == "build": elif args.command == "build":
pelato.build(args.dir) pelato.build(args.dir)
elif args.command == "deploy": elif args.command == "deploy":
@@ -51,7 +52,12 @@ def main():
return return
if pelato.metrics_enabled: if pelato.metrics_enabled:
ut.dump_metrics(pelato.metrics, args.dir) end_time = time.time()
pelato.metrics['time_total'] = '%.3f'%(end_time - start_time)
full_metrics = ut.load_metrics(args.dir)
full_metrics['runs'].append(pelato.metrics)
ut.dump_metrics(full_metrics, args.dir)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@@ -39,7 +39,7 @@ def generate(project_dir, registry_url, metrics, metrics_enabled):
print(f"Generating code for project {config['project_name']}") print(f"Generating code for project {config['project_name']}")
if metrics_enabled: if metrics_enabled:
gen_metrics['n_task'] = len(config['tasks']) metrics['n_task'] = len(config['tasks'])
start_time = time.time() start_time = time.time()
# Rimozione della cartella di output # Rimozione della cartella di output

View File

@@ -2,9 +2,12 @@ import docker
import os import os
import logging import logging
import yaml import yaml
import time
def deploy_components(project_dir, nats_host, nats_port, detached): def deploy_components(project_dir, nats_host, nats_port, detached, metrics, metrics_enabled):
deploy_metrics = {}
# Check if the project directory is valid # Check if the project directory is valid
if not os.path.exists(f"{project_dir}/gen"): if not os.path.exists(f"{project_dir}/gen"):
logging.error(f"Project directory is not valid") logging.error(f"Project directory is not valid")
@@ -15,10 +18,13 @@ def deploy_components(project_dir, nats_host, nats_port, detached):
# Docker client # Docker client
client = docker.from_env() client = docker.from_env()
if metrics_enabled:
start_time = time.time()
# Build the images for the project if they don't exist # Build the images for the project if they don't exist
try: try:
client.images.get("wash-deploy-image:latest") client.images.get("wash-deploy-image:latest")
except docker.errors.ImageNotFound: except:
print(' - Building wash-deploy-image from Dockerfile...') print(' - Building wash-deploy-image from Dockerfile...')
client.images.build( client.images.build(
@@ -26,6 +32,8 @@ def deploy_components(project_dir, nats_host, nats_port, detached):
dockerfile="deploy.Dockerfile", dockerfile="deploy.Dockerfile",
tag="wash-deploy-image:latest" tag="wash-deploy-image:latest"
) )
if metrics_enabled:
deploy_metrics['image_build_time'] = '%.3f'%(time.time() - start_time)
try: try:
wait_list = [] wait_list = []
@@ -46,6 +54,10 @@ def deploy_components(project_dir, nats_host, nats_port, detached):
logging.error(f"Error deploying project: {e}") logging.error(f"Error deploying project: {e}")
return return
if metrics_enabled:
deploy_metrics['components_deploy_time'] = '%.3f'%(time.time() - start_time)
metrics['deploy'] = deploy_metrics
print("Project deployed successfully") print("Project deployed successfully")
def __deploy_wadm(task_dir, client, nats_host, nats_port, detached, wait_list): def __deploy_wadm(task_dir, client, nats_host, nats_port, detached, wait_list):

View File

@@ -13,7 +13,9 @@ def dump_metrics(metrics, project_dir):
def load_metrics(project_dir): def load_metrics(project_dir):
if not os.path.exists(f"{project_dir}/metrics.yaml"): if not os.path.exists(f"{project_dir}/metrics.yaml"):
return {} return {
"runs": []
}
with open(f"{project_dir}/metrics.yaml", 'r') as file: with open(f"{project_dir}/metrics.yaml", 'r') as file:
metrics = yaml.safe_load(file) metrics = yaml.safe_load(file)