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
}
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)
}
"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"
"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) {
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)
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
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
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
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))
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
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(""))
}
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
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
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(""))
}
params := mux.Vars(r)
appInstanceId := params["appInstanceId"]
- dbAdapter.DeleteAppInstanceInfo(impl.db, appInstanceId)
+ impl.dbAdapter.DeleteAppInstanceInfo(appInstanceId)
respondJSON(w, http.StatusOK, json.NewEncoder(w).Encode(""))
}