def get_dashboarddata()

in src/backend/main.py [0:0]


def get_dashboarddata():
    user_info = valid_user()

    if user_info is not None:
        API_ENDPOINT = "{}-aiplatform.googleapis.com".format(REGION)
        # Create Pipelines and Metadata service clients
        client_pipeline = vertex_ai2.PipelineServiceClient(client_options={"api_endpoint": API_ENDPOINT})
        client_metadata = vertex_ai2.MetadataServiceClient(client_options={"api_endpoint": API_ENDPOINT})
        list_pipelines_request = vertex_ai2.ListPipelineJobsRequest(parent=f'projects/{PROJECT_ID}/locations/{REGION}')
        list_pipelines = list(client_pipeline.list_pipeline_jobs(list_pipelines_request))
        running_pp = []
        
        for pipe in list_pipelines:
            labels = pipe.labels
            status = pipe.state.name.split("_")[-1]
            url_link = formatUrlLink(pipe.name, REGION, PROJECT_ID)
            url_all_structures = formatUrlAllStructures(pipe.name, BUCKET_NAME, labels['experiment_id'], PROJECT_NUMBER)

            if pipe.end_time:
                duration = pipe.end_time - ( pipe.end_time if pipe.start_time is None else pipe.start_time)
            else:
                duration = datetime.now(timezone.utc) - pipe.start_time

            seconds = duration.total_seconds()
            hours = int(seconds // 3600)
            minutes = int((seconds % 3600) // 60)
            seconds = seconds % 60
            ti = f'{hours}h{minutes}m'

            # Extract each prediction and its associated relaxation tasks
            if status != "RUNNING":
                predict_relax_tasks = extract_prediction_relaxation_tasks(pipe, client_pipeline)
                for task in predict_relax_tasks:
                    p_data ={
                        "run_tag": labels['run_tag'],
                        "experiment_id":labels['experiment_id'],
                        "sequence":labels['sequence_id'],
                        "status":status,
                        "duration":ti,
                        "url_link": url_link,
                        "url_all_structures": url_all_structures,
                        "predict_uri": task["predict_uri"],
                        "relax_uri": task["relax_uri"],
                        "ranking_confidence": task["ranking_confidence"],
                        "user": labels['user'],
                        "create_time": 0 if pipe.create_time is None else pipe.create_time,
                    }
                    running_pp.append(p_data)
            else:
                p_data ={
                        "run_tag": labels['run_tag'],
                        "experiment_id":labels['experiment_id'],
                        "sequence":labels['sequence_id'],
                        "status":status,
                        "duration":ti,
                        "url_link": url_link,
                        "url_all_structures": url_all_structures,
                        "predict_uri": "NA",
                        "relax_uri": "NA",
                        "ranking_confidence": "NA",
                        "user": labels['user']
                    }
                running_pp.append(p_data)
        return jsonify(running_pp)
    else:
        return Response("{'status':'Unauthorized'}", status=401, mimetype='application/json')