2 * Copyright 2020 Huawei Technologies Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 "broker/pkg/handlers/model"
20 "github.com/jinzhu/gorm"
21 "github.com/sirupsen/logrus"
26 const DbName = "applcmDB"
29 type DbAdapter struct {
34 func NewDbAdapter(logger *logrus.Logger) *DbAdapter {
35 return &DbAdapter{logger: logger}
39 func (adapter *DbAdapter) CreateDatabase() {
40 adapter.logger.Info("creating Database...")
42 usrpswd := os.Getenv("MYSQL_USER") + ":" + os.Getenv("MYSQL_PASSWORD")
43 host := "@tcp(" + "dbhost" + ":3306)/"
45 db, err := gorm.Open("mysql", usrpswd + host)
47 adapter.logger.Fatalf("Database connect error", err.Error())
50 db.Exec("CREATE DATABASE " + DbName)
51 db.Exec("USE applcmDB")
52 gorm.DefaultCallback.Create().Remove("mysql:set_identity_insert")
54 adapter.logger.Info("Migrating models...")
55 db.AutoMigrate(&model.AppPackageInfo{})
56 db.AutoMigrate(&model.AppInstanceInfo{})
60 func (adapter *DbAdapter) InsertAppInstanceInfo(n model.AppInstanceInfo) {
61 adapter.logger.Infof("Insert App Instance Info (%v, %T)\n", n, n)
62 adapter.db.Create(&model.AppInstanceInfo{ID: n.ID, AppInstanceName: n.AppInstanceName, AppInstanceDescription: n.AppInstanceDescription,
63 AppDID: n.AppDID, AppProvider: n.AppProvider, AppName: n.AppName, AppSoftVersion: n.AppSoftVersion, AppDVersion: n.AppDVersion, AppPkgID: n.AppPkgID, InstantiationState: n.InstantiationState})
65 adapter.logger.Infof("Inserting Done")
68 func (adapter *DbAdapter) GetAppInstanceInfo(key string) (appInstInfo model.AppInstanceInfo) {
69 adapter.logger.Infof("Get App Instance Info %s", key)
70 var appInstanceInfo model.AppInstanceInfo
71 returnVal := adapter.db.First(&appInstanceInfo, "id=?", key).Error
76 return appInstanceInfo
79 func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusHostAndWorkloadId(id string, instantiationState string, host string, workloadId string) {
80 adapter.logger.Infof("update into DB (%v, %T)\n", id, instantiationState, host, workloadId)
82 var appInstInfo model.AppInstanceInfo
83 adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("host", host).Update("workloadID", workloadId)
84 adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
85 appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
87 adapter.logger.Infof("Update Done")
90 func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusAndWorkload(id string, instantiationState string, workloadId string) {
91 adapter.logger.Infof("update DB (%v, %T)\n", id, instantiationState)
93 var appInstInfo model.AppInstanceInfo
94 adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("workloadID", workloadId)
95 adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
96 appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
97 adapter.logger.Infof("Update Done")
100 func (adapter *DbAdapter) DeleteAppInstanceInfo(key string) {
101 adapter.db.Where("id=?", key).Delete(&model.AppInstanceInfo{})
102 adapter.logger.Infof("Delete App Instance Info: $s", key)
105 func (adapter *DbAdapter) InsertAppPackageInfo(n model.AppPackageInfo) {
106 adapter.logger.Infof("Insert App Package Info (%v, %T)\n", n, n)
107 adapter.db.Create(&model.AppPackageInfo{ID: n.ID, AppDID: n.AppDID, AppProvider: n.AppProvider,
108 AppName: n.AppName, AppSoftwareVersion: n.AppSoftwareVersion, AppDVersion: n.AppDVersion,
109 OnboardingState: n.OnboardingState, DeployType: n.DeployType, AppPackage: n.AppPackage})
110 adapter.logger.Infof("Inserting done")
113 func (adapter *DbAdapter) GetAppPackageInfo(key string) (appPackageInfo model.AppPackageInfo) {
114 adapter.logger.Infof("Get App Package Info: %s", key)
115 var appPkgInfo model.AppPackageInfo
116 err := adapter.db.First(&appPkgInfo, "id=?", key).Error
123 func (adapter *DbAdapter) DeleteAppPackageInfo(key string) {
124 adapter.logger.Infof("Delete App Package Info: %s", key)
125 adapter.db.Where("id=?", key).Delete(&model.AppPackageInfo{})
126 adapter.logger.Infof("Delete App Package Info: $s", key)