Removing extra go calls, used to testing 84/12084/2
authorSANDEEP KUMAR JAISAWAL <s.jaisawal@samsung.com>
Wed, 22 Nov 2023 17:00:12 +0000 (22:30 +0530)
committerSANDEEP KUMAR JAISAWAL <s.jaisawal@samsung.com>
Thu, 23 Nov 2023 03:05:33 +0000 (08:35 +0530)
Issue-Id: AIMLFW-64

Change-Id: Ie07cc0f60ce85dcc2ac89e29686d58a1284f7f4b
Signed-off-by: SANDEEP KUMAR JAISAWAL <s.jaisawal@samsung.com>
apis/mmes_apis.go
core/s3_manager.go
logging/logging.go

index 2acaec7..9b20521 100644 (file)
@@ -73,7 +73,7 @@ func RegisterModel(cont *gin.Context) {
                modelInfoBytes, _ := json.Marshal(modelInfo)
 
                //TODO Create singleton for s3_manager
-               s3_manager := core.NewS3Manager()
+               s3_manager := core.GetS3ManagerInstance()
                s3Err := s3_manager.CreateBucket(modelInfo.ModelName)
                if s3Err == nil {
                        s3_manager.UploadFile(modelInfoBytes, modelInfo.ModelName+os.Getenv("INFO_FILE_PREFIX"), modelInfo.ModelName)
@@ -103,7 +103,7 @@ func GetModelInfo(cont *gin.Context) {
        model_name := jsonMap["model-name"].(string)
        logging.INFO("The request model name: ", model_name)
 
-       s3_manager := core.NewS3Manager()
+       s3_manager := core.GetS3ManagerInstance()
        model_info := s3_manager.GetBucketObject(model_name+os.Getenv("INFO_FILE_PREFIX"), model_name)
 
        cont.JSON(http.StatusOK, gin.H{
@@ -119,7 +119,7 @@ func GetModelInfoByName(cont *gin.Context) {
        logging.INFO("Get model info by name API ...")
        modelName := cont.Param("modelName")
 
-       s3_manager := core.NewS3Manager()
+       s3_manager := core.GetS3ManagerInstance()
        model_info := s3_manager.GetBucketObject(modelName+os.Getenv("INFO_FILE_PREFIX"), modelName)
 
        cont.JSON(http.StatusOK, gin.H{
@@ -143,7 +143,7 @@ func UploadModel(cont *gin.Context) {
        byteFile, _ := io.ReadAll((file))
 
        logging.INFO("Uploading model : ", modelName)
-       s3_manager := core.NewS3Manager()
+       s3_manager := core.GetS3ManagerInstance()
        s3_manager.UploadFile(byteFile, modelName+os.Getenv("MODEL_FILE_PREFIX"), modelName)
        cont.JSON(http.StatusOK, gin.H{
                "code":    http.StatusOK,
@@ -159,7 +159,7 @@ func DownloadModel(cont *gin.Context) {
        logging.INFO("Download model API ...")
        modelName := cont.Param("modelName")
        fileName := modelName + os.Getenv("MODEL_FILE_PREFIX")
-       s3_manager := core.NewS3Manager()
+       s3_manager := core.GetS3ManagerInstance()
        fileByes := s3_manager.GetBucketObject(fileName, modelName)
 
        //Return file in api reponse using byte slice
index a8e39f3..acac295 100644 (file)
@@ -23,6 +23,8 @@ import (
        "io"
        "os"
 
+       "sync"
+
        "example.com/mmes/logging"
        "github.com/aws/aws-sdk-go/aws"
        "github.com/aws/aws-sdk-go/aws/awserr"
@@ -31,6 +33,9 @@ import (
        "github.com/aws/aws-sdk-go/service/s3"
 )
 
+var Lock = &sync.Mutex{}
+var s3MgrInstance *S3Manager
+
 type S3Manager struct {
        //S3Client has s3 endpoint connection pointer,
        //Which will be used by all s3 bucket related operatios,
@@ -38,6 +43,21 @@ type S3Manager struct {
        S3Client *s3.S3
 }
 
+// Singleton for S3Manager
+func GetS3ManagerInstance() *S3Manager {
+       Lock.Lock()
+       defer Lock.Unlock()
+
+       if s3MgrInstance == nil {
+               logging.INFO("Creating single instance for S3Manager")
+               s3MgrInstance = newS3Manager()
+       } else {
+               logging.WARN("S3Manager instance already exists")
+       }
+
+       return s3MgrInstance
+}
+
 type S3Error struct {
        msg  string
        code int
@@ -49,7 +69,7 @@ the struct instance hold pointer to s3.S3 connection, which is
 preconfigured using enviroment variables, such as aws s3
 endpoints connection details.
 */
-func NewS3Manager() *S3Manager {
+func newS3Manager() *S3Manager {
        endpoint := os.Getenv("S3_URL")
        accessKey := os.Getenv("S3_ACCESS_KEY")
        secretAccessKey := os.Getenv("S3_SECRET_KEY")
index f4cbcea..47c6de4 100644 (file)
@@ -10,11 +10,12 @@ var warnLogger *log.Logger
 var errorLogger *log.Logger
 
 func init() {
+       //TODO add current timestamp as file prefix to retain the old log file
        logFile, fileErr := os.Create(os.Getenv("LOG_FILE_NAME"))
        if fileErr != nil {
                log.Fatal("Can not start MMES service,issue in creating log file")
        }
-       flags := log.Ldate | log.Ltime 
+       flags := log.Ldate | log.Ltime
        infoLogger = log.New(logFile, "INFO:", flags)
        warnLogger = log.New(logFile, "WARN:", flags)
        errorLogger = log.New(logFile, "ERROR:", flags)