First Commit of Voltha-Go-Controller from Radisys
Change-Id: I8e2e908e7ab09a4fe3d86849da18b6d69dcf4ab0
diff --git a/database/common.go b/database/common.go
new file mode 100644
index 0000000..653fccc
--- /dev/null
+++ b/database/common.go
@@ -0,0 +1,147 @@
+/*
+* Copyright 2022-present Open Networking Foundation
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+// This implementation of database assumes that it is working for
+// Open ONU adapter. Thus, it assumes some base path for all the
+// database operations. For all database operations, the key passed is
+// added to the database base path.
+
+package database
+
+import "fmt"
+
+const (
+ // PresentVersion represnts the Present version
+ // Modify this as we give Major version releases
+ PresentVersion = "v1"
+ // PreviousVersion represnts the Previous version
+ PreviousVersion = "v1"
+)
+
+//These are present path where different database elements are store in database
+//In case any of these paths change, update the present and previous version
+const (
+ BasePath string = "service/vgc/%s/"
+ ServicePath string = "services/"
+ DevicePath string = "devices/%s/"
+ DevicePortPath string = DevicePath + "ports/"
+ DeviceFlowPath string = DevicePath + "flows/"
+ DeviceGroupPath string = DevicePath + "groups/"
+ DeviceMeterPath string = DevicePath + "meters/"
+ VnetPath string = "vnets/"
+ VpvPath string = "vpvs/"
+ MvlanPath string = "mvlans/"
+ MeterPath string = "meters/"
+ IgmpConfPath string = "igmp/conf/"
+ IgmpGroupPath string = "igmp/groups/"
+ IgmpDevicePath string = "igmp/devices/"
+ IgmpChannelPath string = "igmp/channels/"
+ IgmpPortPath string = "igmp/ports/"
+ IgmpProfPath string = "igmp/prof/"
+ McastConfigPath string = "igmp/mcastconfig/"
+ MigrationInfoPath string = "data/migration/"
+ LogLevelPath string = "log-level/"
+ HealthPath string = "health/"
+ PonCounterPath string = "pon-counter/"
+ OltIgmpCounterPath string = "olt-igmp-counter/"
+ ChannelCounterPath string = "channel-counter/"
+ ServiceCounterPath string = "service-counter/"
+ NbDevicePath string = "nb-device/"
+ DeviceFlowHashPath string = DevicePath + "flowhash"
+ PortAlarmProfilePath string = "port-alarm-profile/"
+ PortAlarmDataPath string = DevicePortPath + "portalarmdata/"
+ SubAlarmDataPath string = DevicePath + "sub-alarm-data/"
+ ServicesMigrateReqPath string = DevicePath + "migrateServicesReq/"
+)
+
+//PresentVersionMap - map of present version for all database tables
+var PresentVersionMap = map[string]string{
+ ServicePath: "v3",
+ DevicePath: "v1",
+ DevicePortPath: "v1",
+ DeviceFlowPath: "v1",
+ DeviceGroupPath: "v1",
+ DeviceMeterPath: "v1",
+ VnetPath: "v3",
+ VpvPath: "v3",
+ MvlanPath: "v3",
+ MeterPath: "v1",
+ IgmpConfPath: "v2",
+ IgmpGroupPath: "v1",
+ IgmpDevicePath: "v1",
+ IgmpChannelPath: "v1",
+ IgmpPortPath: "v1",
+ IgmpProfPath: "v1",
+ McastConfigPath: "v1",
+ MigrationInfoPath: "v1",
+ LogLevelPath: "v1",
+ HealthPath: "v1",
+ PonCounterPath: "v1",
+ OltIgmpCounterPath: "v1",
+ ChannelCounterPath: "v1",
+ ServiceCounterPath: "v1",
+ NbDevicePath: "v1",
+ DeviceFlowHashPath: "v1",
+ PortAlarmProfilePath: "v1",
+ PortAlarmDataPath: "v1",
+ SubAlarmDataPath: "v1",
+ ServicesMigrateReqPath: "v1",
+}
+
+//PreviousVersionMap - map of previous version for all database tables
+var PreviousVersionMap = map[string]string{
+ ServicePath: "v2",
+ DevicePath: "v1",
+ DevicePortPath: "v1",
+ DeviceFlowPath: "v1",
+ DeviceGroupPath: "v1",
+ DeviceMeterPath: "v1",
+ VnetPath: "v2",
+ VpvPath: "v2",
+ MvlanPath: "v2",
+ MeterPath: "v1",
+ IgmpConfPath: "v1",
+ IgmpGroupPath: "v1",
+ IgmpDevicePath: "v1",
+ IgmpChannelPath: "v1",
+ IgmpPortPath: "v1",
+ IgmpProfPath: "v1",
+ McastConfigPath: "v1",
+ MigrationInfoPath: "v1",
+ LogLevelPath: "v1",
+ HealthPath: "v1",
+ PonCounterPath: "v1",
+ OltIgmpCounterPath: "v1",
+ ChannelCounterPath: "v1",
+ ServiceCounterPath: "v1",
+ NbDevicePath: "v1",
+ DeviceFlowHashPath: "v1",
+ PortAlarmProfilePath: "v1",
+ PortAlarmDataPath: "v1",
+ SubAlarmDataPath: "v1",
+ ServicesMigrateReqPath: "v1",
+}
+
+//DBVersionMap - Version of tables present in DB
+var DBVersionMap = PreviousVersionMap
+
+// GetModuleKeypath returns the DB keypath for particular module along with version
+func GetModuleKeypath(key, ver string) string {
+ return fmt.Sprintf(BasePath, ver) + key
+}
+
+// GetKeyPath returns the base path for the given key along with version
+func GetKeyPath(key string) string {
+ return fmt.Sprintf(BasePath, PresentVersionMap[key]) + key
+}