# limitations under the License.
#
# ==================================================================================
-from flask import Blueprint, jsonify
+from flask import Blueprint, jsonify, request
from trainingmgr.common.trainingmgr_config import TrainingMgrConfig
-from trainingmgr.service.training_job_service import delete_training_job
+from trainingmgr.service.training_job_service import delete_training_job, create_training_job
training_job_controller = Blueprint('training_job_controller', __name__)
LOGGER = TrainingMgrConfig().logger
@training_job_controller.route('/training-jobs/<int:training_job_id>', methods=['DELETE'])
def delete_trainingjob(training_job_id):
- TrainingMgrConfig.logger
LOGGER.debug(f'delete training job : {training_job_id}')
try:
if delete_training_job(str(training_job_id)):
'message': 'training job with given id is not found'
}), 500
+ except Exception as e:
+ return jsonify({
+ 'message': str(e)
+ }), 500
+
+@training_job_controller.route('/training-jobs', methods=['POST'])
+def create_trainingjob():
+ try:
+ data = request.get_json()
+ create_training_job(data)
+ LOGGER.debug(f'create training job Successfully: {data}')
+ return '', 200
except Exception as e:
return jsonify({
'message': str(e)
raise DBException(DB_QUERY_EXEC_ERROR + \
"delete_trainingjob_version" + str(err))
+from trainingmgr.schemas import TrainingJobSchema
+def create_trainingjob(data):
+ tj = TrainingJobSchema().load(data)
+ db.session.add(tj)
+ db.session.commit()
+
def delete_trainingjob_by_id(id: int):
"""
This function delets the trainingjob using the id which is PK
from trainingmgr.models.featuregroup import FeatureGroup
from trainingmgr.models.steps_state import TrainingJobStatus
-__all_ = ['TrainingJob', 'FeatureGroup', 'TrainingJobStatus']
\ No newline at end of file
+__all__ = ['TrainingJob', 'FeatureGroup', 'TrainingJobStatus', 'ModelID']
\ No newline at end of file
from sqlalchemy.sql import func
from sqlalchemy import Integer, ForeignKey, String, DateTime, Column, Boolean
from sqlalchemy.orm import relationship
-from sqlalchemy import PrimaryKeyConstraint, ForeignKeyConstraint, UniqueConstraint
-import json
+
+from . import db
+from sqlalchemy import ForeignKeyConstraint, UniqueConstraint
+
class ModelID(db.Model):
__tablename__ = 'model'
- id = db.Column(db.Integer, primary_key=True)
+ id = db.Column(db.Integer, primary_key=True, autoincrement=True)
modelname = db.Column(db.String(128), nullable=False)
modelversion = db.Column(db.String(128), nullable=False)
artifactversion = db.Column(db.String(128), nullable=True)
UniqueConstraint("modelname", "modelversion", name="unique model"),
)
- trainingJob = relationship("TrainingJob", back_populates='modelref')
+ trainingJob = relationship("TrainingJob", back_populates='modelId')
class TrainingJob(db.Model):
__tablename__ = "trainingjob_info_table"
- id = Column(Integer, primary_key=True)
+ id = Column(Integer, primary_key=True, autoincrement=True, nullable=False)
trainingjob_name= Column(String(128), nullable=False)
run_id = Column(String(1000), nullable=True)
steps_state_id = Column(Integer, ForeignKey('training_job_status_table.id'), nullable=True)
)
- modelref = relationship("ModelID", back_populates="trainingJob")
+ modelId = relationship("ModelID", back_populates="trainingJob")
# # Serialize and Deserialize training_config to/from JSON
# @property
# @training_config_data.setter
# def training_config_data(self, value):
# self.training_config = json.dumps(value)
+
def __repr__(self):
- return f'<Trainingjob {self.trainingjob_name}>'
\ No newline at end of file
+ return f'<Trainingjob {self.trainingjob_name}>'
+
from trainingmgr.schemas import ma
from trainingmgr.models import TrainingJob
+from trainingmgr.models.trainingjob import ModelID
+from marshmallow import pre_load
+
+class ModelSchema(ma.SQLAlchemyAutoSchema):
+ class Meta:
+ model = ModelID
+ load_instance = True
class TrainingJobSchema(ma.SQLAlchemyAutoSchema):
class Meta:
model = TrainingJob
- include_relationships = True
load_instance = True
+
+ modelId = ma.Nested(ModelSchema)
+
+ @pre_load
+ def processModelId(self, data, **kwargs):
+ modelname = data['modelId']['modelname']
+ modelversion = data['modelId']['modelversion']
+
+ modeldict = dict(modelname=modelname, modelversion=modelversion)
+ data['modelId'] = modeldict
+ return data
\ No newline at end of file
# limitations under the License.
#
# ==================================================================================
-from trainingmgr.db.trainingjob_db import delete_trainingjob_by_id
+from trainingmgr.db.trainingjob_db import delete_trainingjob_by_id, create_trainingjob
from trainingmgr.common.exceptions_utls import DBException
+from trainingmgr.schemas import TrainingJobSchema
+
+def create_training_job(data):
+ create_trainingjob(data)
+
def delete_training_job(training_job_id : int):
"""