From: SANDEEP KUMAR JAISAWAL Date: Tue, 21 Nov 2023 11:12:36 +0000 (+0530) Subject: Register model error handling X-Git-Tag: 1.0.0~8 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=674209f35027a23f700c4310d762c3ce402f9ef6;p=aiml-fw%2Fawmf%2Fmodelmgmtservice.git Register model error handling Issue-Id: AIMLFW-64 Change-Id: I37be89de3c417e6e7001b1fc114cbf8e1c23fe63 Signed-off-by: SANDEEP KUMAR JAISAWAL --- diff --git a/apis/mmes_apis.go b/apis/mmes_apis.go index 32d7133..479c23c 100644 --- a/apis/mmes_apis.go +++ b/apis/mmes_apis.go @@ -52,6 +52,9 @@ func init() { } func RegisterModel(cont *gin.Context) { + var returnCode int = http.StatusCreated + var responseMsg string = "Model registered successfully" + fmt.Println("Creating model...") bodyBytes, _ := io.ReadAll(cont.Request.Body) @@ -65,21 +68,25 @@ func RegisterModel(cont *gin.Context) { "code": http.StatusBadRequest, "message": string("Can not parse input data, provide mandatory details"), }) - return + //return + } else { + fmt.Println(modelInfo.ModelName, modelInfo.RAppId, modelInfo.Metainfo) + modelInfoBytes, _ := json.Marshal(modelInfo) + + //TODO Create singleton for s3_manager + s3_manager := core.NewS3Manager() + s3Err := s3_manager.CreateBucket(modelInfo.ModelName) + if s3Err == nil { + s3_manager.UploadFile(modelInfoBytes, modelInfo.ModelName+os.Getenv("INFO_FILE_PREFIX"), modelInfo.ModelName) + } else { + returnCode = http.StatusInternalServerError + responseMsg = s3Err.Error() + } + cont.JSON(returnCode, gin.H{ + "code": returnCode, + "message": responseMsg, + }) } - fmt.Println(modelInfo.ModelName, modelInfo.RAppId, modelInfo.Metainfo) - modelInfoBytes, err := json.Marshal(modelInfo) - - //TODO Create singleton for s3_manager - s3_manager := core.NewS3Manager() - s3_manager.CreateBucket(modelInfo.ModelName) - - s3_manager.UploadFile(modelInfoBytes, modelInfo.ModelName+os.Getenv("INFO_FILE_PREFIX"), modelInfo.ModelName) - - cont.JSON(http.StatusCreated, gin.H{ - "code": http.StatusCreated, - "message": string("Model details stored sucessfully"), - }) } /* @@ -104,7 +111,6 @@ func GetModelInfo(cont *gin.Context) { "code": http.StatusOK, "message": string(model_info), }) - } /* diff --git a/core/s3_manager.go b/core/s3_manager.go index 206a182..6059165 100644 --- a/core/s3_manager.go +++ b/core/s3_manager.go @@ -19,11 +19,13 @@ package core import ( "bytes" + "errors" "fmt" "io" "os" "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" @@ -36,6 +38,11 @@ type S3Manager struct { S3Client *s3.S3 } +type S3Error struct { + msg string + code int +} + /* This function return an pointer to instance of S3_manager struct the struct instance hold pointer to s3.S3 connection, which is @@ -63,12 +70,21 @@ func NewS3Manager() *S3Manager { } -func (s3manager *S3Manager) CreateBucket(bucketName string) { - _, err := s3manager.S3Client.CreateBucket(&s3.CreateBucketInput{Bucket: aws.String(bucketName)}) - if err != nil { - panic(err) +// Creates s3 bucket for given bucketName, optionally +// returns named error err +func (s3manager *S3Manager) CreateBucket(bucketName string) (err error) { + _, s3Err := s3manager.S3Client.CreateBucket(&s3.CreateBucketInput{Bucket: aws.String(bucketName)}) + + if s3Err != nil { + fmt.Println(s3Err) + //Convert the aws to get the code/error msg for api response + if aerr, ok := s3Err.(awserr.Error); ok { + err = errors.New(aerr.Message()) + return + } } println("Bucket created : ", bucketName) + return nil } // objectName : Name of file/object under given bucket