DBAdapter code refactoring 41/3441/1
authoragrawalgaurav <gaurav.agrawal@huawei.com>
Wed, 13 May 2020 18:43:37 +0000 (00:13 +0530)
committeragrawalgaurav <gaurav.agrawal@huawei.com>
Wed, 13 May 2020 18:43:37 +0000 (00:13 +0530)
Change-Id: If96c972e12ed44c89be51ad2ea552e2de80cba9b

mecm/mepm/applcm/broker/pkg/handlers/adapter/dbAdapter/dbAdapter.go
mecm/mepm/applcm/broker/pkg/handlers/handlersImpl.go

index 2e527ec..8af5e51 100644 (file)
@@ -17,23 +17,58 @@ package dbAdapter
 
 import (
        "broker/pkg/handlers/model"
-       "fmt"
        "github.com/jinzhu/gorm"
-       "net/http"
+       "github.com/sirupsen/logrus"
+       "os"
 )
 
-func InsertAppInstanceInfo(db *gorm.DB, n model.AppInstanceInfo) {
-       fmt.Printf("Insert App Instance Info (%v, %T)\n", n, n)
-       db.Create(&model.AppInstanceInfo{ID: n.ID, AppInstanceName: n.AppInstanceName, AppInstanceDescription: n.AppInstanceDescription,
+// DB name
+const DbName = "applcmDB"
+
+// Database adapter
+type DbAdapter struct {
+       logger *logrus.Logger
+       db     *gorm.DB
+}
+
+func NewDbAdapter(logger *logrus.Logger) *DbAdapter {
+       return &DbAdapter{logger: logger}
+}
+
+// Creates database
+func (adapter *DbAdapter) CreateDatabase() {
+       adapter.logger.Info("creating Database...")
+
+       usrpswd := os.Getenv("MYSQL_USER") + ":" + os.Getenv("MYSQL_PASSWORD")
+       host := "@tcp(" + "dbhost" + ":3306)/"
+
+       db, err := gorm.Open("mysql", usrpswd + host)
+       if err != nil {
+               adapter.logger.Fatalf("Database connect error", err.Error())
+       }
+
+       db.Exec("CREATE DATABASE  " + DbName)
+       db.Exec("USE applcmDB")
+       gorm.DefaultCallback.Create().Remove("mysql:set_identity_insert")
+
+       adapter.logger.Info("Migrating models...")
+       db.AutoMigrate(&model.AppPackageInfo{})
+       db.AutoMigrate(&model.AppInstanceInfo{})
+       adapter.db = db
+}
+
+func (adapter *DbAdapter) InsertAppInstanceInfo(n model.AppInstanceInfo) {
+       adapter.logger.Infof("Insert App Instance Info (%v, %T)\n", n, n)
+       adapter.db.Create(&model.AppInstanceInfo{ID: n.ID, AppInstanceName: n.AppInstanceName, AppInstanceDescription: n.AppInstanceDescription,
                AppDID: n.AppDID, AppProvider: n.AppProvider, AppName: n.AppName, AppSoftVersion: n.AppSoftVersion, AppDVersion: n.AppDVersion, AppPkgID: n.AppPkgID, InstantiationState: n.InstantiationState})
 
-       fmt.Printf("Inserting Done")
+       adapter.logger.Infof("Inserting Done")
 }
 
-func GetAppInstanceInfo(db *gorm.DB, key string) (appInstInfo model.AppInstanceInfo) {
-       fmt.Printf("Get App Instance Info %s", key)
+func (adapter *DbAdapter) GetAppInstanceInfo(key string) (appInstInfo model.AppInstanceInfo) {
+       adapter.logger.Infof("Get App Instance Info %s", key)
        var appInstanceInfo model.AppInstanceInfo
-       returnVal := db.First(&appInstanceInfo, "id=?", key).Error
+       returnVal := adapter.db.First(&appInstanceInfo, "id=?", key).Error
        if returnVal !=  nil {
                return
        }
@@ -41,58 +76,52 @@ func GetAppInstanceInfo(db *gorm.DB, key string) (appInstInfo model.AppInstanceI
        return appInstanceInfo
 }
 
-func UpdateAppInstanceInfoInstStatusHostAndWorkloadId(db *gorm.DB, id string, instantiationState string, host string, workloadId string) {
-       fmt.Printf("update into DB (%v, %T)\n", id, instantiationState, host, workloadId)
+func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusHostAndWorkloadId(id string, instantiationState string, host string, workloadId string) {
+       adapter.logger.Infof("update into DB (%v, %T)\n", id, instantiationState, host, workloadId)
 
        var appInstInfo model.AppInstanceInfo
-       db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("host", host).Update("workloadID", workloadId)
-       fmt.Printf("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
+       adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("host", host).Update("workloadID", workloadId)
+       adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
                appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
 
-       fmt.Printf("Update Done")
+       adapter.logger.Infof("Update Done")
 }
 
-func UpdateAppInstanceInfoInstStatusAndWorkload(db *gorm.DB, id string, instantiationState string, workloadId string) {
-       fmt.Printf("update DB (%v, %T)\n", id, instantiationState)
+func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusAndWorkload(id string, instantiationState string, workloadId string) {
+       adapter.logger.Infof("update DB (%v, %T)\n", id, instantiationState)
 
        var appInstInfo model.AppInstanceInfo
-       db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("workloadID", workloadId)
-       fmt.Printf("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
+       adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("workloadID", workloadId)
+       adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
                appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
-       fmt.Printf("Update Done")
-}
-
-func UpdateAppInstanceInfoHost(db *gorm.DB, w http.ResponseWriter, id string, host string) {
+       adapter.logger.Infof("Update Done")
 }
 
-func DeleteAppInstanceInfo(db *gorm.DB, key string) {
-
-       db.Where("id=?", key).Delete(&model.AppInstanceInfo{})
-
-       fmt.Println("Delete App Instance Info: $s", key)
+func (adapter *DbAdapter) DeleteAppInstanceInfo(key string) {
+       adapter.db.Where("id=?", key).Delete(&model.AppInstanceInfo{})
+       adapter.logger.Infof("Delete App Instance Info: $s", key)
 }
 
-func InsertAppPackageInfo(db *gorm.DB, n model.AppPackageInfo) {
-       fmt.Printf("Insert App Package Info (%v, %T)\n", n, n)
-       db.Create(&model.AppPackageInfo{ID: n.ID, AppDID: n.AppDID, AppProvider: n.AppProvider,
+func (adapter *DbAdapter) InsertAppPackageInfo(n model.AppPackageInfo) {
+       adapter.logger.Infof("Insert App Package Info (%v, %T)\n", n, n)
+       adapter.db.Create(&model.AppPackageInfo{ID: n.ID, AppDID: n.AppDID, AppProvider: n.AppProvider,
                AppName: n.AppName, AppSoftwareVersion: n.AppSoftwareVersion, AppDVersion: n.AppDVersion,
                OnboardingState: n.OnboardingState, DeployType: n.DeployType, AppPackage: n.AppPackage})
-
-       fmt.Printf("Inserting done")
+       adapter.logger.Infof("Inserting done")
 }
 
-func GetAppPackageInfo(db *gorm.DB, key string) (appPackageInfo model.AppPackageInfo) {
-       fmt.Printf("Get App Package Info: %s", key)
+func (adapter *DbAdapter) GetAppPackageInfo(key string) (appPackageInfo model.AppPackageInfo) {
+       adapter.logger.Infof("Get App Package Info: %s", key)
        var appPkgInfo model.AppPackageInfo
-       err := db.First(&appPkgInfo, "id=?", key).Error
+       err := adapter.db.First(&appPkgInfo, "id=?", key).Error
        if err !=  nil {
                return
        }
        return appPkgInfo
 }
 
-func DeleteAppPackageInfo(db *gorm.DB, key string) {
-       fmt.Printf("Delete App Package Info: %s", key)
-       db.Where("id=?", key).Delete(&model.AppPackageInfo{})
-       fmt.Println("Delete App Package Info: $s", key)
+func (adapter *DbAdapter) DeleteAppPackageInfo(key string) {
+       adapter.logger.Infof("Delete App Package Info: %s", key)
+       adapter.db.Where("id=?", key).Delete(&model.AppPackageInfo{})
+       adapter.logger.Infof("Delete App Package Info: $s", key)
 }
index cd66846..83594ec 100644 (file)
@@ -27,7 +27,6 @@ import (
        "github.com/ghodss/yaml"
        "github.com/google/uuid"
        "github.com/gorilla/mux"
-       "github.com/jinzhu/gorm"
        "github.com/sirupsen/logrus"
        "google.golang.org/grpc/codes"
        "google.golang.org/grpc/status"
@@ -39,44 +38,20 @@ import (
        "strings"
 )
 
-// DB name
-const DbName = "applcmDB"
-
 // Handler of REST APIs
 type HandlerImpl struct {
-       logger *logrus.Logger
-       db     *gorm.DB
+       logger     *logrus.Logger
+       dbAdapter  *dbAdapter.DbAdapter
 }
 
 // Creates handler implementation
 func newHandlerImpl(logger *logrus.Logger) (impl HandlerImpl) {
        impl.logger = logger
-       impl.db = impl.createDatabase()
+       impl.dbAdapter = dbAdapter.NewDbAdapter(logger)
+       impl.dbAdapter.CreateDatabase()
        return
 }
 
-// Creates database
-func (impl *HandlerImpl) createDatabase() *gorm.DB {
-       impl.logger.Info("creating Database...")
-
-       usrpswd := os.Getenv("MYSQL_USER") + ":" + os.Getenv("MYSQL_PASSWORD")
-       host := "@tcp(" + "dbhost" + ":3306)/"
-
-       db, err := gorm.Open("mysql", usrpswd + host)
-       if err != nil {
-               impl.logger.Fatalf("Database connect error", err.Error())
-       }
-
-       db.Exec("CREATE DATABASE  " + DbName)
-       db.Exec("USE applcmDB")
-       gorm.DefaultCallback.Create().Remove("mysql:set_identity_insert")
-
-       impl.logger.Info("Migrating models...")
-       db.AutoMigrate(&model.AppPackageInfo{})
-       db.AutoMigrate(&model.AppInstanceInfo{})
-       return db
-}
-
 // Uploads package
 func (impl *HandlerImpl) UploadPackage(w http.ResponseWriter, r *http.Request) {
 
@@ -124,7 +99,7 @@ func (impl *HandlerImpl) UploadPackage(w http.ResponseWriter, r *http.Request) {
        impl.logger.Infof("Application package info from package")
        defer r.Body.Close()
 
-       dbAdapter.InsertAppPackageInfo(impl.db, appPkgInfo)
+       impl.dbAdapter.InsertAppPackageInfo(appPkgInfo)
 
        /*http.StatusOK*/
        respondJSON(w, http.StatusCreated, appPkgInfo)
@@ -206,7 +181,7 @@ func (impl *HandlerImpl) decodeApplicationDescriptor(w http.ResponseWriter, serv
 func (impl *HandlerImpl) QueryAppPackageInfo(w http.ResponseWriter, r *http.Request) {
        params := mux.Vars(r)
        appPkgId := params["appPkgId"]
-       appPkgInfo := dbAdapter.GetAppPackageInfo(impl.db, appPkgId)
+       appPkgInfo := impl.dbAdapter.GetAppPackageInfo(appPkgId)
        if appPkgInfo.ID == "" {
                respondJSON(w, http.StatusNotFound, "ID not exist")
                return
@@ -218,12 +193,12 @@ func (impl *HandlerImpl) QueryAppPackageInfo(w http.ResponseWriter, r *http.Requ
 func (impl *HandlerImpl) DeleteAppPackage(w http.ResponseWriter, r *http.Request) {
        params := mux.Vars(r)
        appPkgId := params["appPkgId"]
-       appPackageInfo := dbAdapter.GetAppPackageInfo(impl.db, appPkgId)
+       appPackageInfo := impl.dbAdapter.GetAppPackageInfo(appPkgId)
        if appPackageInfo.ID == "" {
                respondJSON(w, http.StatusNotFound, "ID not exist")
                return
        }
-       dbAdapter.DeleteAppPackageInfo(impl.db, appPkgId)
+       impl.dbAdapter.DeleteAppPackageInfo(appPkgId)
 
        deletePackage := PackageFolderPath + appPackageInfo.AppPackage
 
@@ -247,7 +222,7 @@ func (impl *HandlerImpl) CreateAppInstance(w http.ResponseWriter, r *http.Reques
                return
        }
 
-       appPkgInfo := dbAdapter.GetAppPackageInfo(impl.db, req.AppDID)
+       appPkgInfo := impl.dbAdapter.GetAppPackageInfo(req.AppDID)
        if appPkgInfo.ID == "" {
                respondJSON(w, http.StatusNotFound, "ID not exist")
                return
@@ -272,7 +247,7 @@ func (impl *HandlerImpl) CreateAppInstance(w http.ResponseWriter, r *http.Reques
                AppPkgID:               appPkgInfo.AppDID,
                InstantiationState:     "NOT_INSTANTIATED",
        }
-       dbAdapter.InsertAppInstanceInfo(impl.db, appInstanceInfo)
+       impl.dbAdapter.InsertAppInstanceInfo(appInstanceInfo)
        impl.logger.Infof("CreateAppInstance:", req)
        /*http.StatusOK*/
        respondJSON(w, http.StatusCreated, json.NewEncoder(w).Encode(appInstanceInfo))
@@ -290,8 +265,8 @@ func (impl *HandlerImpl) InstantiateAppInstance(w http.ResponseWriter, r *http.R
        params := mux.Vars(r)
        appInstanceId := params["appInstanceId"]
 
-       appInstanceInfo := dbAdapter.GetAppInstanceInfo(impl.db, appInstanceId)
-       appPackageInfo := dbAdapter.GetAppPackageInfo(impl.db, appInstanceInfo.AppDID)
+       appInstanceInfo := impl.dbAdapter.GetAppInstanceInfo(appInstanceId)
+       appPackageInfo := impl.dbAdapter.GetAppPackageInfo(appInstanceInfo.AppDID)
        if appInstanceInfo.ID == "" || appPackageInfo.ID == "" {
                respondJSON(w, http.StatusNotFound, "ID not exist")
                return
@@ -347,7 +322,7 @@ func (impl *HandlerImpl) InstantiateAppInstance(w http.ResponseWriter, r *http.R
                        respondError(w, http.StatusInternalServerError, err.Error())
                }
        }
-       dbAdapter.UpdateAppInstanceInfoInstStatusHostAndWorkloadId(impl.db, appInstanceId, "INSTANTIATED", req.SelectedMECHostInfo.HostID, workloadId)
+       impl.dbAdapter.UpdateAppInstanceInfoInstStatusHostAndWorkloadId(appInstanceId, "INSTANTIATED", req.SelectedMECHostInfo.HostID, workloadId)
 
        respondJSON(w, http.StatusAccepted, json.NewEncoder(w).Encode(""))
 }
@@ -387,8 +362,8 @@ func (impl *HandlerImpl) QueryAppInstanceInfo(w http.ResponseWriter, r *http.Req
        params := mux.Vars(r)
        appInstanceId := params["appInstanceId"]
 
-       appInstanceInfo := dbAdapter.GetAppInstanceInfo(impl.db, appInstanceId)
-       appPackageInfo := dbAdapter.GetAppPackageInfo(impl.db, appInstanceInfo.AppDID)
+       appInstanceInfo := impl.dbAdapter.GetAppInstanceInfo(appInstanceId)
+       appPackageInfo := impl.dbAdapter.GetAppPackageInfo(appInstanceInfo.AppDID)
        if appInstanceInfo.ID == "" || appPackageInfo.ID == "" {
                respondJSON(w, http.StatusNotFound, "ID not exist")
                return
@@ -439,8 +414,8 @@ func (impl *HandlerImpl) TerminateAppInstance(w http.ResponseWriter, r *http.Req
        params := mux.Vars(r)
        appInstanceId := params["appInstanceId"]
 
-       appInstanceInfo := dbAdapter.GetAppInstanceInfo(impl.db, appInstanceId)
-       appPackageInfo := dbAdapter.GetAppPackageInfo(impl.db, appInstanceInfo.AppDID)
+       appInstanceInfo := impl.dbAdapter.GetAppInstanceInfo(appInstanceId)
+       appPackageInfo := impl.dbAdapter.GetAppPackageInfo(appInstanceInfo.AppDID)
        if appInstanceInfo.ID == "" || appPackageInfo.ID == "" {
                respondJSON(w, http.StatusNotFound, "ID not exist")
                return
@@ -468,7 +443,7 @@ func (impl *HandlerImpl) TerminateAppInstance(w http.ResponseWriter, r *http.Req
                respondError(w, http.StatusInternalServerError, err.Error())
                return
        }
-       dbAdapter.UpdateAppInstanceInfoInstStatusAndWorkload(impl.db, appInstanceId, "NOT_INSTANTIATED", "")
+       impl.dbAdapter.UpdateAppInstanceInfoInstStatusAndWorkload(appInstanceId, "NOT_INSTANTIATED", "")
 
        respondJSON(w, http.StatusAccepted, json.NewEncoder(w).Encode(""))
 }
@@ -479,7 +454,7 @@ func (impl *HandlerImpl) DeleteAppInstanceIdentifier(w http.ResponseWriter, r *h
        params := mux.Vars(r)
        appInstanceId := params["appInstanceId"]
 
-       dbAdapter.DeleteAppInstanceInfo(impl.db, appInstanceId)
+       impl.dbAdapter.DeleteAppInstanceInfo(appInstanceId)
        respondJSON(w, http.StatusOK, json.NewEncoder(w).Encode(""))
 }