From 3ae89fe7e41f324ca11582af14b2c8403bff68e2 Mon Sep 17 00:00:00 2001 From: agrawalgaurav Date: Thu, 14 May 2020 00:13:37 +0530 Subject: [PATCH] DBAdapter code refactoring Change-Id: If96c972e12ed44c89be51ad2ea552e2de80cba9b --- .../pkg/handlers/adapter/dbAdapter/dbAdapter.go | 107 +++++++++++++-------- .../applcm/broker/pkg/handlers/handlersImpl.go | 63 ++++-------- 2 files changed, 87 insertions(+), 83 deletions(-) diff --git a/mecm/mepm/applcm/broker/pkg/handlers/adapter/dbAdapter/dbAdapter.go b/mecm/mepm/applcm/broker/pkg/handlers/adapter/dbAdapter/dbAdapter.go index 2e527ec..8af5e51 100644 --- a/mecm/mepm/applcm/broker/pkg/handlers/adapter/dbAdapter/dbAdapter.go +++ b/mecm/mepm/applcm/broker/pkg/handlers/adapter/dbAdapter/dbAdapter.go @@ -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) } diff --git a/mecm/mepm/applcm/broker/pkg/handlers/handlersImpl.go b/mecm/mepm/applcm/broker/pkg/handlers/handlersImpl.go index cd66846..83594ec 100644 --- a/mecm/mepm/applcm/broker/pkg/handlers/handlersImpl.go +++ b/mecm/mepm/applcm/broker/pkg/handlers/handlersImpl.go @@ -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("")) } -- 2.16.6