Uniform formatting and volume as hostpath
[ealt-edge.git] / mecm / mepm / applcm / broker / pkg / handlers / adapter / dbAdapter / dbAdapter.go
1 /*
2  * Copyright 2020 Huawei Technologies Co., Ltd.
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package dbAdapter
17
18 import (
19         "broker/pkg/handlers/model"
20         "os"
21
22         "github.com/jinzhu/gorm"
23         "github.com/sirupsen/logrus"
24 )
25
26 // DB name
27 const DbName = "applcmDB"
28
29 // Database adapter
30 type DbAdapter struct {
31         logger *logrus.Logger
32         db     *gorm.DB
33 }
34
35 func NewDbAdapter(logger *logrus.Logger) *DbAdapter {
36         return &DbAdapter{logger: logger}
37 }
38
39 // Creates database
40 func (adapter *DbAdapter) CreateDatabase() {
41         adapter.logger.Infof("creating Database...")
42
43         usrpswd := os.Getenv("MYSQL_USER") + ":" + os.Getenv("MYSQL_PASSWORD")
44         host := "@tcp(" + "dbhost" + ":3306)/"
45
46         db, err := gorm.Open("mysql", usrpswd+host)
47         if err != nil {
48                 adapter.logger.Fatalf("Database connect error", err.Error())
49         }
50
51         db.Exec("CREATE DATABASE  " + DbName)
52         db.Exec("USE applcmDB")
53         gorm.DefaultCallback.Create().Remove("mysql:set_identity_insert")
54
55         adapter.logger.Infof("Migrating models...")
56         db.AutoMigrate(&model.AppPackageInfo{})
57         db.AutoMigrate(&model.AppInstanceInfo{})
58         adapter.db = db
59 }
60
61 func (adapter *DbAdapter) InsertAppInstanceInfo(n model.AppInstanceInfo) {
62         adapter.logger.Infof("Insert App Instance Info (%v, %T)\n", n, n)
63         adapter.db.Create(&model.AppInstanceInfo{ID: n.ID, AppInstanceName: n.AppInstanceName, AppInstanceDescription: n.AppInstanceDescription,
64                 AppDID: n.AppDID, AppProvider: n.AppProvider, AppName: n.AppName, AppSoftVersion: n.AppSoftVersion, AppDVersion: n.AppDVersion, AppPkgID: n.AppPkgID, InstantiationState: n.InstantiationState})
65
66         adapter.logger.Infof("Inserting Done")
67 }
68
69 func (adapter *DbAdapter) GetAppInstanceInfo(key string) (appInstInfo model.AppInstanceInfo) {
70         adapter.logger.Infof("Get App Instance Info %s", key)
71         var appInstanceInfo model.AppInstanceInfo
72         returnVal := adapter.db.First(&appInstanceInfo, "id=?", key).Error
73         if returnVal != nil {
74                 return
75         }
76
77         return appInstanceInfo
78 }
79
80 func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusHostAndWorkloadId(id string, instantiationState string, host string, workloadId string) {
81         adapter.logger.Infof("update into DB (%v, %T)\n", id, instantiationState, host, workloadId)
82
83         var appInstInfo model.AppInstanceInfo
84         adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("host", host).Update("workloadID", workloadId)
85         adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
86                 appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
87
88         adapter.logger.Infof("Update Done")
89 }
90
91 func (adapter *DbAdapter) UpdateAppInstanceInfoInstStatusAndWorkload(id string, instantiationState string, workloadId string) {
92         adapter.logger.Infof("update DB (%v, %T)\n", id, instantiationState)
93
94         var appInstInfo model.AppInstanceInfo
95         adapter.db.Where("id=?", id).First(&appInstInfo).Update("instantiationState", instantiationState).Update("workloadID", workloadId)
96         adapter.logger.Infof("AppName: %s\nAppDID: %s\nAppInstanceDescription:%t\n\n",
97                 appInstInfo.AppName, appInstInfo.AppDID, appInstInfo.AppInstanceDescription)
98         adapter.logger.Infof("Update Done")
99 }
100
101 func (adapter *DbAdapter) DeleteAppInstanceInfo(key string) {
102         adapter.db.Where("id=?", key).Delete(&model.AppInstanceInfo{})
103         adapter.logger.Infof("Delete App Instance Info: $s", key)
104 }
105
106 func (adapter *DbAdapter) InsertAppPackageInfo(n model.AppPackageInfo) {
107         adapter.logger.Infof("Insert App Package Info (%v, %T)\n", n, n)
108         adapter.db.Create(&model.AppPackageInfo{ID: n.ID, AppDID: n.AppDID, AppProvider: n.AppProvider,
109                 AppName: n.AppName, AppSoftwareVersion: n.AppSoftwareVersion, AppDVersion: n.AppDVersion,
110                 OnboardingState: n.OnboardingState, DeployType: n.DeployType, AppPackage: n.AppPackage})
111         adapter.logger.Infof("Inserting done")
112 }
113
114 func (adapter *DbAdapter) GetAppPackageInfo(key string) (appPackageInfo model.AppPackageInfo) {
115         adapter.logger.Infof("Get App Package Info: %s", key)
116         var appPkgInfo model.AppPackageInfo
117         err := adapter.db.First(&appPkgInfo, "id=?", key).Error
118         if err != nil {
119                 return
120         }
121         return appPkgInfo
122 }
123
124 func (adapter *DbAdapter) DeleteAppPackageInfo(key string) {
125         adapter.logger.Infof("Delete App Package Info: %s", key)
126         adapter.db.Where("id=?", key).Delete(&model.AppPackageInfo{})
127         adapter.logger.Infof("Delete App Package Info: $s", key)
128 }