changes in the pipeline_notification 16/13716/4
authorrajdeep11 <rajdeep.sin@samsung.com>
Wed, 30 Oct 2024 07:05:07 +0000 (12:35 +0530)
committersubhash kumar singh <subh.singh@samsung.com>
Wed, 30 Oct 2024 10:15:02 +0000 (10:15 +0000)
Change-Id: Ifffe07899f624abab710899b180c513157df270f
Signed-off-by: rajdeep11 <rajdeep.sin@samsung.com>
trainingmgr/db/trainingjob_db.py
trainingmgr/trainingmgr_main.py

index e4f4353..9e13186 100644 (file)
@@ -229,4 +229,30 @@ def change_field_of_latest_version(trainingjob_name, field, field_value):
         db.session.commit()
 
     except Exception as err:
-        raise DBException("Failed to execute query in change_field_of_latest_version,"  + str(err))
\ No newline at end of file
+        raise DBException("Failed to execute query in change_field_of_latest_version,"  + str(err))
+    
+def get_latest_version_trainingjob_name(trainingjob_name):
+    """
+    This function returns latest version of given trainingjob_name.
+    """
+    try:
+        trainingjob_max_version = TrainingJob.query.filter(TrainingJob.trainingjob_name == trainingjob_name).order_by(TrainingJob.version.desc()).first()
+
+    except Exception as err:
+        raise DBException(DB_QUERY_EXEC_ERROR + \
+            "get_latest_version_trainingjob_name"  + str(err))
+    
+    return trainingjob_max_version.version
+
+def update_model_download_url(trainingjob_name, version, url):
+    """
+    This function updates model download url for given <trainingjob_name, version>.
+    """
+    try:
+
+        trainingjob_max_version = TrainingJob.query.filter(TrainingJob.trainingjob_name == trainingjob_name).filter(TrainingJob.version == version).first()
+        trainingjob_max_version.model_url = url
+    except Exception as err:
+        raise DBException(DB_QUERY_EXEC_ERROR + \
+            "update_model_download_url"  + str(err))
+    db.session.commit()
index f832542..1ebe638 100644 (file)
@@ -51,8 +51,7 @@ from trainingmgr.db.trainingmgr_ps_db import PSDB
 from trainingmgr.common.exceptions_utls import DBException
 from trainingmgr.db.common_db_fun import get_data_extraction_in_progress_trainingjobs, \
     change_in_progress_to_failed_by_latest_version, \
-    get_info_by_version, \
-    get_latest_version_trainingjob_name, get_all_versions_info_by_name, \
+    get_info_by_version, get_all_versions_info_by_name, \
     update_model_download_url, \
     get_field_of_given_version,get_all_jobs_latest_status_version, get_info_of_latest_version, \
     delete_trainingjob_version, change_field_value_by_version
@@ -62,7 +61,7 @@ from trainingmgr.db.featuregroup_db import add_featuregroup, edit_featuregroup,
     get_feature_group_by_name_db, delete_feature_group_by_name
 from trainingmgr.db.trainingjob_db import add_update_trainingjob, get_trainingjob_info_by_name, \
     get_all_jobs_latest_status_version, change_steps_state_of_latest_version, get_info_by_version, \
-    get_steps_state_db, change_field_of_latest_version
+    get_steps_state_db, change_field_of_latest_version, get_latest_version_trainingjob_name
 
 APP = Flask(__name__)
 
@@ -560,18 +559,18 @@ def pipeline_notification():
         run_status = request.json["run_status"]
 
         if run_status == 'SUCCEEDED':
-            change_steps_state_of_latest_version(trainingjob_name, PS_DB_OBJ,
+            change_steps_state_of_latest_version(trainingjob_name,
                                                     Steps.TRAINING.name,
                                                     States.FINISHED.name)
-            change_steps_state_of_latest_version(trainingjob_name, PS_DB_OBJ,
+            change_steps_state_of_latest_version(trainingjob_name,
                                                     Steps.TRAINING_AND_TRAINED_MODEL.name,
                                                     States.IN_PROGRESS.name)
                    
-            version = get_latest_version_trainingjob_name(trainingjob_name, PS_DB_OBJ)
-            change_steps_state_of_latest_version(trainingjob_name, PS_DB_OBJ,
+            version = get_latest_version_trainingjob_name(trainingjob_name)
+            change_steps_state_of_latest_version(trainingjob_name,
                                                     Steps.TRAINING_AND_TRAINED_MODEL.name,
                                                     States.FINISHED.name)
-            change_steps_state_of_latest_version(trainingjob_name, PS_DB_OBJ,
+            change_steps_state_of_latest_version(trainingjob_name,
                                                     Steps.TRAINED_MODEL.name,
                                                     States.IN_PROGRESS.name)
                                                     
@@ -583,15 +582,15 @@ def pipeline_notification():
                 update_model_download_url(trainingjob_name, version, model_url, PS_DB_OBJ)
 
                 
-                change_steps_state_of_latest_version(trainingjob_name, PS_DB_OBJ,
+                change_steps_state_of_latest_version(trainingjob_name,
                                                         Steps.TRAINED_MODEL.name,
                                                         States.FINISHED.name)
                 # upload to the mme
-                trainingjob_info=get_trainingjob_info_by_name(trainingjob_name, PS_DB_OBJ)
+                trainingjob_info=get_trainingjob_info_by_name(trainingjob_name)
 
-                is_mme= trainingjob_info[0][20]
+                is_mme= trainingjob_info.is_mme
                 if is_mme:   
-                    model_name=trainingjob_info[0][21] #model_name
+                    model_name=trainingjob_info.model_name #model_name
                     file=MM_SDK.get_model_zip(trainingjob_name, str(version))
                     url ="http://"+str(TRAININGMGR_CONFIG_OBJ.model_management_service_ip)+":"+str(TRAININGMGR_CONFIG_OBJ.model_management_service_port)+"/uploadModel/{}".format(model_name)
                     LOGGER.debug("url for upload is: ", url)
@@ -614,16 +613,16 @@ def pipeline_notification():
     except Exception as err:
         #Training failure response
         LOGGER.error("Pipeline notification failed" + str(err))
-        if not change_in_progress_to_failed_by_latest_version(trainingjob_name, PS_DB_OBJ) :
+        if not change_in_progress_to_failed_by_latest_version(trainingjob_name) :
             LOGGER.error(ERROR_TYPE_DB_STATUS)
         
         return response_for_training(status.HTTP_500_INTERNAL_SERVER_ERROR,
                             str(err) + " (trainingjob " + trainingjob_name + ")",
-                            LOGGER, False, trainingjob_name, PS_DB_OBJ, MM_SDK)
+                            LOGGER, False, trainingjob_name, MM_SDK)
     #Training success response
     return response_for_training(status.HTTP_200_OK,
                                             "Pipeline notification success.",
-                                            LOGGER, True, trainingjob_name, PS_DB_OBJ, MM_SDK)
+                                            LOGGER, True, trainingjob_name, MM_SDK)
 
 
 @APP.route('/trainingjobs/latest', methods=['GET'])