[VOL-3678] First implementation of the BBSim-sadis-server
Change-Id: I5077a8f861f4cc6af9759f31a4a415042c05eba3
diff --git a/internal/core/sadis_if.go b/internal/core/sadis_if.go
new file mode 100644
index 0000000..3b5abfb
--- /dev/null
+++ b/internal/core/sadis_if.go
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2018-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.
+ */
+
+package core
+
+// TODO this should be imported from github.com/opencord/bbsim
+// but to do that we need to move them from the "internal" module
+
+type SadisConfig struct {
+ Sadis SadisEntries `json:"sadis"`
+ BandwidthProfile BandwidthProfileEntries `json:"bandwidthprofile"`
+}
+
+type SadisEntries struct {
+ Integration SadisIntegration `json:"integration"`
+ Entries []*SadisEntry `json:"entries,omitempty"`
+ //Entries []interface{} `json:"entries,omitempty"`
+}
+
+type BandwidthProfileEntries struct {
+ Integration SadisIntegration `json:"integration"`
+ Entries []*SadisBWPEntry `json:"entries,omitempty"`
+}
+
+type SadisIntegration struct {
+ URL string `json:"url,omitempty"`
+ Cache struct {
+ Enabled bool `json:"enabled"`
+ MaxSize int `json:"maxsize"`
+ TTL string `json:"ttl"`
+ } `json:"cache"`
+}
+
+type SadisEntry struct {
+ // common
+ ID string `json:"id"`
+ // olt
+ HardwareIdentifier string `json:"hardwareIdentifier"`
+ IPAddress string `json:"ipAddress"`
+ NasID string `json:"nasId"`
+ UplinkPort int `json:"uplinkPort"`
+ // onu
+ NasPortID string `json:"nasPortId"`
+ CircuitID string `json:"circuitId"`
+ RemoteID string `json:"remoteId"`
+ UniTagList []SadisUniTag `json:"uniTagList"`
+}
+
+type SadisOltEntry struct {
+ ID string `json:"id"`
+ HardwareIdentifier string `json:"hardwareIdentifier"`
+ IPAddress string `json:"ipAddress"`
+ NasID string `json:"nasId"`
+ UplinkPort int `json:"uplinkPort"`
+}
+
+type SadisOnuEntryV2 struct {
+ ID string `json:"id"`
+ NasPortID string `json:"nasPortId"`
+ CircuitID string `json:"circuitId"`
+ RemoteID string `json:"remoteId"`
+ UniTagList []SadisUniTag `json:"uniTagList"` // this can be SadisUniTagAtt, SadisUniTagDt
+}
+
+type SadisUniTag struct {
+ UniTagMatch int `json:"uniTagMatch,omitempty"`
+ PonCTag int `json:"ponCTag,omitempty"`
+ PonSTag int `json:"ponSTag,omitempty"`
+ TechnologyProfileID int `json:"technologyProfileId,omitempty"`
+ UpstreamBandwidthProfile string `json:"upstreamBandwidthProfile,omitempty"`
+ DownstreamBandwidthProfile string `json:"downstreamBandwidthProfile,omitempty"`
+ IsDhcpRequired bool `json:"isDhcpRequired,omitempty"`
+ IsIgmpRequired bool `json:"isIgmpRequired,omitempty"`
+ ConfiguredMacAddress string `json:"configuredMacAddress,omitempty"`
+ UsPonCTagPriority uint8 `json:"usPonCTagPriority,omitempty"`
+ UsPonSTagPriority uint8 `json:"usPonSTagPriority,omitempty"`
+ DsPonCTagPriority uint8 `json:"dsPonCTagPriority,omitempty"`
+ DsPonSTagPriority uint8 `json:"dsPonSTagPriority,omitempty"`
+ ServiceName string `json:"serviceName,omitempty"`
+}
+
+// SADIS BandwithProfile Entry
+type SadisBWPEntry struct {
+ ID string `json:"id"`
+ AIR int `json:"air"`
+ CBS int `json:"cbs"`
+ CIR int `json:"cir"`
+ EBS int `json:"ebs"`
+ EIR int `json:"eir"`
+}