[VOL-5374] Update go version to 1.23
- Upgraded Go version for compatibility with recent toolchain
- Synced with latest dependency requirements
Change-Id: Ib526d29ec9e5d5e08e51354b741541038dcedb35
Signed-off-by: Akash Kankanala <akash.kankanala@radisys.com>
diff --git a/.golangci.yml b/.golangci.yml
index a123737..aca3874 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -21,6 +21,9 @@
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
+ enable:
+ - shadow
+ - fieldalignment
golint:
min-confidence: 0
@@ -37,12 +40,17 @@
#- gochecknoinits
- gocyclo
- gofmt
- - golint
- govet
- ineffassign
- misspell
- gosec
- #- unparam
+ - errcheck
+ - whitespace
+ - goimports
+ - gosimple
+ - staticcheck
+ - unused
+ - unparam
run:
modules-download-mode: vendor
@@ -52,7 +60,12 @@
- text: "weak cryptographic primitive"
linters:
- gosec
+ - path: ".*_test.go"
+ linters:
+ - govet
+ - fieldalignment
exclude-use-default: false
exclude:
- "SA1019: voltha.ImageDownloads is deprecated"
- "SA1019: voltha.ImageDownload is deprecated"
+ - 'G115: integer overflow conversion'
diff --git a/Makefile b/Makefile
index 64e8d84..4882fe7 100644
--- a/Makefile
+++ b/Makefile
@@ -80,7 +80,7 @@
--build-arg org_opencord_vcs_dirty="${DOCKER_LABEL_VCS_DIRTY}"
# tool containers
-VOLTHA_TOOLS_VERSION ?= 2.4.0
+VOLTHA_TOOLS_VERSION ?= 3.1.1
## TODO: Verify / migrate to repo:onf-make
# GO = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang go
@@ -141,12 +141,12 @@
## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
docker-build: local-protos local-lib-go ## Build openolt adapter docker image (set BUILD_PROFILED=true to also build the profiled image)
- docker build $(DOCKER_BUILD_ARGS) --target=${DOCKER_TARGET} --build-arg CGO_PARAMETER=0 -t ${ADAPTER_IMAGENAME} -f docker/Dockerfile.openolt .
+ docker build $(DOCKER_BUILD_ARGS) --platform=linux/amd64 --target=${DOCKER_TARGET} --build-arg CGO_PARAMETER=0 -t ${ADAPTER_IMAGENAME} -f docker/Dockerfile.openolt .
ifdef BUILD_PROFILED
- docker build $(DOCKER_BUILD_ARGS) --target=dev --build-arg CGO_PARAMETER=1 --build-arg EXTRA_GO_BUILD_TAGS="-tags profile" -t ${ADAPTER_IMAGENAME}-profile -f docker/Dockerfile.openolt .
+ docker build $(DOCKER_BUILD_ARGS) --platform=linux/amd64 --target=dev --build-arg CGO_PARAMETER=1 --build-arg EXTRA_GO_BUILD_TAGS="-tags profile" -t ${ADAPTER_IMAGENAME}-profile -f docker/Dockerfile.openolt .
endif
ifdef BUILD_RACE
- docker build $(DOCKER_BUILD_ARGS) --target=dev --build-arg CGO_PARAMETER=1 --build-arg EXTRA_GO_BUILD_TAGS="-race" -t ${ADAPTER_IMAGENAME}-rd -f docker/Dockerfile.openolt .
+ docker build $(DOCKER_BUILD_ARGS) --platform=linux/amd64 --target=dev --build-arg CGO_PARAMETER=1 --build-arg EXTRA_GO_BUILD_TAGS="-race" -t ${ADAPTER_IMAGENAME}-rd -f docker/Dockerfile.openolt .
endif
## -----------------------------------------------------------------------
@@ -269,8 +269,7 @@
@$(RM) -r ./sca-report
@mkdir -p ./sca-report
@echo "Running static code analysis..."
- @${GOLANGCI_LINT} run --deadline=6m --out-format junit-xml ./... \
- | tee ./sca-report/sca-report.xml
+ @${GOLANGCI_LINT} run --out-format junit-xml ./... | tee ./sca-report/sca-report.xml
@echo ""
@echo "Static code analysis OK"
diff --git a/VERSION b/VERSION
index f65ccbd..b7213ae 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.5.9
+4.5.10
diff --git a/cmd/openolt-adapter/main.go b/cmd/openolt-adapter/main.go
index be2c534..fbe7880 100644
--- a/cmd/openolt-adapter/main.go
+++ b/cmd/openolt-adapter/main.go
@@ -53,20 +53,21 @@
oltAdapterService = "olt-adapter-service"
kvService = "kv-service"
coreService = "core-service"
+ etcdStoreName = "etcd"
)
type adapter struct {
- instanceID string
+ kafkaClient kafka.Client
+ kvClient kvstore.Client
+ eventProxy eventif.EventProxy
config *config.AdapterFlags
grpcServer *vgrpc.GrpcServer
oltAdapter *ac.OpenOLT
oltInterAdapter *ac.OpenOLTInterAdapter
- kafkaClient kafka.Client
- kvClient kvstore.Client
coreClient *vgrpc.Client
- eventProxy eventif.EventProxy
- halted bool
exitChannel chan int
+ instanceID string
+ halted bool
}
func newAdapter(cf *config.AdapterFlags) *adapter {
@@ -118,14 +119,14 @@
}
// Start kafka communication with the broker
- if err := kafka.StartAndWaitUntilKafkaConnectionIsUp(ctx, a.kafkaClient, a.config.HeartbeatCheckInterval, clusterMessagingService); err != nil {
+ if err = kafka.StartAndWaitUntilKafkaConnectionIsUp(ctx, a.kafkaClient, a.config.HeartbeatCheckInterval, clusterMessagingService); err != nil {
logger.Fatal(ctx, "unable-to-connect-to-kafka")
}
// Create the event proxy to post events to KAFKA
a.eventProxy = events.NewEventProxy(events.MsgClient(a.kafkaClient), events.MsgTopic(kafka.Topic{Name: a.config.EventTopic}))
go func() {
- if err := a.eventProxy.Start(); err != nil {
+ if err = a.eventProxy.Start(); err != nil {
logger.Fatalw(ctx, "event-proxy-cannot-start", log.Fields{"error": err})
}
}()
@@ -163,10 +164,10 @@
// Create and start the grpc server
a.grpcServer = vgrpc.NewGrpcServer(a.config.GrpcAddress, nil, false, p)
- //Register the adapter service
+ // Register the adapter service
a.addAdapterService(ctx, a.grpcServer, a.oltAdapter)
- //Register the olt inter-adapter service
+ // Register the olt inter-adapter service
a.addOltInterAdapterService(ctx, a.grpcServer, a.oltInterAdapter)
// Start the grpc server
@@ -299,10 +300,9 @@
}
func newKVClient(ctx context.Context, storeType, address string, timeout time.Duration) (kvstore.Client, error) {
-
logger.Infow(ctx, "kv-store-type", log.Fields{"store": storeType})
switch storeType {
- case "etcd":
+ case etcdStoreName:
return kvstore.NewEtcdClient(ctx, address, timeout, log.FatalLevel)
case "redis":
return kvstore.NewRedisClient(address, timeout, false)
@@ -313,7 +313,6 @@
}
func newKafkaClient(ctx context.Context, clientType, address string) (kafka.Client, error) {
-
logger.Infow(ctx, "common-client-type", log.Fields{"client": clientType})
switch clientType {
case "sarama":
@@ -502,12 +501,12 @@
}
// Setup default logger - applies for packages that do not have specific logger set
- if _, err := log.SetDefaultLogger(log.JSON, logLevel, log.Fields{"instanceId": cf.InstanceID}); err != nil {
+ if _, err = log.SetDefaultLogger(log.JSON, logLevel, log.Fields{"instanceId": cf.InstanceID}); err != nil {
logger.With(log.Fields{"error": err}).Fatal(ctx, "Cannot setup logging")
}
// Update all loggers (provisionned via init) with a common field
- if err := log.UpdateAllLoggers(log.Fields{"instanceId": cf.InstanceID}); err != nil {
+ if err = log.UpdateAllLoggers(log.Fields{"instanceId": cf.InstanceID}); err != nil {
logger.With(log.Fields{"error": err}).Fatal(ctx, "Cannot setup logging")
}
@@ -516,7 +515,7 @@
realMain()
defer func() {
- err := log.CleanUp()
+ err = log.CleanUp()
if err != nil {
logger.Errorw(context.Background(), "unable-to-flush-any-buffered-log-entries", log.Fields{"error": err})
}
diff --git a/cmd/openolt-adapter/main_test.go b/cmd/openolt-adapter/main_test.go
index f96e05a..3f7e52e 100644
--- a/cmd/openolt-adapter/main_test.go
+++ b/cmd/openolt-adapter/main_test.go
@@ -32,6 +32,7 @@
ad := newAdapter(cf)
return ad
}
+
func Test_adapter_setKVClient(t *testing.T) {
adapt := newMockAdapter()
adapt1 := newMockAdapter()
@@ -140,7 +141,6 @@
t.Errorf("newKafkaClient() error = %v, wantErr %v", err, tt.wantErr)
return
}
-
})
}
}
diff --git a/docker/Dockerfile.openolt b/docker/Dockerfile.openolt
index 2ac0f0a..8b80103 100644
--- a/docker/Dockerfile.openolt
+++ b/docker/Dockerfile.openolt
@@ -15,7 +15,7 @@
# -------------
# Build stage
-FROM --platform=linux/amd64 golang:1.16.3-alpine3.13 AS dev
+FROM golang:1.23.1-alpine3.20 AS dev
# Install required packages
RUN apk add --no-cache build-base=0.5-r3
@@ -54,7 +54,7 @@
# -------------
# Image creation stage
-FROM --platform=linux/amd64 gcr.io/distroless/static:nonroot AS prod
+FROM gcr.io/distroless/static:nonroot AS prod
# Set the working directory
WORKDIR /app
diff --git a/go.mod b/go.mod
index 664997a..cefe7e6 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
module github.com/opencord/voltha-openolt-adapter
-go 1.16
+go 1.23
replace (
github.com/coreos/bbolt v1.3.4 => go.etcd.io/bbolt v1.3.4
@@ -19,3 +19,50 @@
go.etcd.io/etcd v3.3.25+incompatible
google.golang.org/grpc v1.44.0
)
+
+require (
+ github.com/Shopify/sarama v1.29.1 // indirect
+ github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d // indirect
+ github.com/bsm/sarama-cluster v2.1.15+incompatible // indirect
+ github.com/cespare/xxhash/v2 v2.1.1 // indirect
+ github.com/cevaris/ordered_map v0.0.0-20190319150403-3adeae072e73 // indirect
+ github.com/coreos/etcd v3.3.25+incompatible // indirect
+ github.com/coreos/go-semver v0.3.0 // indirect
+ github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect
+ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
+ github.com/eapache/go-resiliency v1.2.0 // indirect
+ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
+ github.com/eapache/queue v1.1.0 // indirect
+ github.com/go-redis/redis/v8 v8.3.4 // indirect
+ github.com/golang/snappy v0.0.3 // indirect
+ github.com/google/uuid v1.3.0 // indirect
+ github.com/hashicorp/go-uuid v1.0.2 // indirect
+ github.com/jcmturner/aescts/v2 v2.0.0 // indirect
+ github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect
+ github.com/jcmturner/gofork v1.0.0 // indirect
+ github.com/jcmturner/gokrb5/v8 v8.4.2 // indirect
+ github.com/jcmturner/rpc/v2 v2.0.3 // indirect
+ github.com/jhump/protoreflect v1.10.2 // indirect
+ github.com/klauspost/compress v1.12.2 // indirect
+ github.com/opentracing/opentracing-go v1.2.0 // indirect
+ github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 // indirect
+ github.com/pierrec/lz4 v2.6.0+incompatible // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
+ github.com/uber/jaeger-client-go v2.29.1+incompatible // indirect
+ github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
+ go.opentelemetry.io/otel v0.13.0 // indirect
+ go.uber.org/atomic v1.7.0 // indirect
+ go.uber.org/multierr v1.6.0 // indirect
+ go.uber.org/zap v1.18.1 // indirect
+ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect
+ golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect
+ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 // indirect
+ golang.org/x/text v0.3.6 // indirect
+ google.golang.org/genproto v0.0.0-20220208230804-65c12eb4c068 // indirect
+ google.golang.org/protobuf v1.27.1 // indirect
+ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
+)
diff --git a/internal/pkg/config/config.go b/internal/pkg/config/config.go
index abd3617..0bd4fde 100644
--- a/internal/pkg/config/config.go
+++ b/internal/pkg/config/config.go
@@ -41,13 +41,13 @@
defaultProbeAddress = ":8080"
defaultLiveProbeInterval = 60 * time.Second
defaultNotLiveProbeInterval = 5 * time.Second // Probe more frequently when not alive
- //defaultHeartbeatCheckInterval is the time in seconds the adapter will keep checking the hardware for heartbeat.
+ // defaultHeartbeatCheckInterval is the time in seconds the adapter will keep checking the hardware for heartbeat.
defaultHeartbeatCheckInterval = 15 * time.Second
// defaultHeartbeatFailReportInterval is the time adapter will wait before updating the state to the core.
defaultHeartbeatFailReportInterval = 0 * time.Second
defaultGrpcAddress = ":50060"
defaultCoreEndpoint = ":55555"
- //defaultGrpcTimeoutInterval is the time in seconds a grpc call will wait before returning error.
+ // defaultGrpcTimeoutInterval is the time in seconds a grpc call will wait before returning error.
defaultGrpcTimeoutInterval = 2 * time.Second
defaultCurrentReplica = 1
defaultTotalReplicas = 1
@@ -71,36 +71,36 @@
InstanceID string // NOTE what am I used for? why not cli but only ENV? TODO expose in the chart
KafkaClusterAddress string
KVStoreType string
- KVStoreTimeout time.Duration
KVStoreAddress string
- RPCTimeout time.Duration
- PerRPCRetryTimeout time.Duration
EventTopic string
LogLevel string
- OnuNumber int
- Banner bool
- DisplayVersionOnly bool
ProbeAddress string
+ GrpcAddress string
+ CoreEndpoint string
+ TraceAgentAddress string
+ AdapterEndpoint string
+ KVStoreTimeout time.Duration
+ RPCTimeout time.Duration
+ PerRPCRetryTimeout time.Duration
+ OnuNumber int
LiveProbeInterval time.Duration
NotLiveProbeInterval time.Duration
HeartbeatCheckInterval time.Duration
HeartbeatFailReportInterval time.Duration
GrpcTimeoutInterval time.Duration
- GrpcAddress string
- CoreEndpoint string
CurrentReplica int
TotalReplicas int
+ MinBackoffRetryDelay time.Duration
+ MaxBackoffRetryDelay time.Duration
+ MaxRetries uint
+ Banner bool
+ DisplayVersionOnly bool
TraceEnabled bool
- TraceAgentAddress string
LogCorrelationEnabled bool
OmccEncryption bool
EnableONUStats bool
EnableGEMStats bool
- MinBackoffRetryDelay time.Duration
- MaxBackoffRetryDelay time.Duration
- AdapterEndpoint string
CheckOnuDevExistenceAtOnuDiscovery bool
- MaxRetries uint
}
// NewAdapterFlags returns a new RWCore config
@@ -142,7 +142,6 @@
// ParseCommandArguments parses the arguments when running read-write adaptercore service
func (so *AdapterFlags) ParseCommandArguments() {
-
flag.StringVar(&(so.KafkaClusterAddress),
"kafka_cluster_address",
defaultKafkaclusteraddress,
@@ -308,7 +307,6 @@
if len(containerName) > 0 {
so.InstanceID = containerName
}
-
}
func getContainerInfo() string {
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index f6c3fa5..ca4e481 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -79,47 +79,40 @@
// DeviceHandler will interact with the OLT device.
type DeviceHandler struct {
- cm *config.ConfigManager
- device *voltha.Device
- cfg *conf.AdapterFlags
- coreClient *vgrpc.Client
- childAdapterClients map[string]*vgrpc.Client
- lockChildAdapterClients sync.RWMutex
- EventProxy eventif.EventProxy
- openOLT *OpenOLT
- exitChannel chan struct{}
- lockDevice sync.RWMutex
- Client oop.OpenoltClient
- transitionMap *TransitionMap
- clientCon *grpc.ClientConn
- flowMgr []*OpenOltFlowMgr
- groupMgr *OpenOltGroupMgr
- eventMgr *OpenOltEventMgr
- resourceMgr []*rsrcMgr.OpenOltResourceMgr
- kvStore *db.Backend // backend kv store connection handle
+ EventProxy eventif.EventProxy
+ Client oop.OpenoltClient
+ cm *config.ConfigManager
+ device *voltha.Device
+ cfg *conf.AdapterFlags
+ coreClient *vgrpc.Client
+ childAdapterClients map[string]*vgrpc.Client
+ openOLT *OpenOLT
+ exitChannel chan struct{}
+ transitionMap *TransitionMap
+ clientCon *grpc.ClientConn
+ groupMgr *OpenOltGroupMgr
+ eventMgr *OpenOltEventMgr
+ kvStore *db.Backend // backend kv store connection handle
deviceInfo *oop.DeviceInfo
+ portStats *OpenOltStatisticsMgr
+ metrics *pmmetrics.PmMetrics
+ stopCollector chan bool
+ stopHeartbeatCheck chan bool
+ stopIndications chan bool
+ perPonOnuIndicationChannel map[uint32]onuIndicationChannels
+
// discOnus (map[onuSn]bool) contains a list of ONUs that have been discovered, indexed by ONU SerialNumber.
// if the value is true that means the OnuDiscovery indication
// is currently being processed and thus we can ignore concurrent requests
// if it's false it means the processing has completed and we shouldn't be receiving a new indication
// if we do it means something went wrong and we need to retry
- discOnus sync.Map
- onus sync.Map
- portStats *OpenOltStatisticsMgr
- metrics *pmmetrics.PmMetrics
- stopCollector chan bool
- isCollectorActive bool
- stopHeartbeatCheck chan bool
- isHeartbeatCheckActive bool
- activePorts sync.Map
- stopIndications chan bool
- isReadIndicationRoutineActive bool
-
- totalPonPorts uint32
- perPonOnuIndicationChannel map[uint32]onuIndicationChannels
- perPonOnuIndicationChannelLock sync.Mutex
+ discOnus sync.Map
+ onus sync.Map
+ activePorts sync.Map
+ flowMgr []*OpenOltFlowMgr
+ resourceMgr []*rsrcMgr.OpenOltResourceMgr
// Slice of channels. Each channel in slice, index by (mcast-group-id modulo MaxNumOfGroupHandlerChannels)
// A go routine per index, waits on a unique channel for incoming mcast flow or group (add/modify/remove).
@@ -127,11 +120,20 @@
stopMcastHandlerRoutine []chan bool
mcastHandlerRoutineActive []bool
+ lockChildAdapterClients sync.RWMutex
+ lockDevice sync.RWMutex
+ perPonOnuIndicationChannelLock sync.Mutex
+
+ totalPonPorts uint32
+ heartbeatSignature uint32
+ isCollectorActive bool
+ isHeartbeatCheckActive bool
+ isReadIndicationRoutineActive bool
+
adapterPreviouslyConnected bool
agentPreviouslyConnected bool
isDeviceDeletionInProgress bool
- heartbeatSignature uint32
prevOperStatus common.OperStatus_Types
}
@@ -140,12 +142,12 @@
deviceID string
deviceType string
serialNumber string
+ proxyDeviceID string
+ adapterEndpoint string
onuID uint32
intfID uint32
- proxyDeviceID string
losRaised bool
rdiRaised bool
- adapterEndpoint string
}
type onuIndicationMsg struct {
@@ -164,10 +166,10 @@
// and process them serially. The mcast flow/group are assigned these routines based on formula (group-id modulo MaxNumOfGroupHandlerChannels)
type McastFlowOrGroupControlBlock struct {
ctx context.Context // Flow/group handler context
- flowOrGroupAction string // one of McastFlowOrGroupAdd, McastFlowOrGroupModify or McastFlowOrGroupDelete
flow *of.OfpFlowStats // Flow message (can be nil or valid flow)
group *of.OfpGroupEntry // Group message (can be nil or valid group)
errChan *chan error // channel to report the mcast Flow/group handling error
+ flowOrGroupAction string // one of McastFlowOrGroupAdd, McastFlowOrGroupModify or McastFlowOrGroupDelete
}
var pmNames = []string{
@@ -235,7 +237,7 @@
dh.mcastHandlerRoutineActive[i] = true
go dh.mcastFlowOrGroupChannelHandlerRoutine(i, dh.incomingMcastFlowOrGroup[i], dh.stopMcastHandlerRoutine[i])
}
- //TODO initialize the support classes.
+ // TODO initialize the support classes.
return &dh
}
@@ -378,7 +380,6 @@
// GetportLabel returns the label for the NNI and the PON port based on port number and port type
func GetportLabel(portNum uint32, portType voltha.Port_PortType) (string, error) {
-
switch portType {
case voltha.Port_ETHERNET_NNI:
return fmt.Sprintf("nni-%d", portNum), nil
@@ -391,8 +392,8 @@
func makeOfpPort(macAddress string, speedMbps uint32) *of.OfpPort {
if speedMbps == 0 {
- //In case it was not set in the indication
- //and no other value was provided
+ // In case it was not set in the indication
+ // and no other value was provided
speedMbps = defaultPortSpeedMbps
}
@@ -423,8 +424,8 @@
Curr: capacity,
Advertised: capacity,
Peer: capacity,
- CurrSpeed: speedMbps * 1000, //kbps
- MaxSpeed: speedMbps * 1000, //kbps
+ CurrSpeed: speedMbps * 1000, // kbps
+ MaxSpeed: speedMbps * 1000, // kbps
}
return port
@@ -434,7 +435,7 @@
var operStatus common.OperStatus_Types
if state == "up" {
operStatus = voltha.OperStatus_ACTIVE
- //populating the intfStatus map
+ // populating the intfStatus map
dh.activePorts.Store(intfID, true)
} else {
operStatus = voltha.OperStatus_DISCOVERED
@@ -656,7 +657,7 @@
return nil
}
-// nolint: gocyclo
+// nolint: gocyclo,govet
func (dh *DeviceHandler) handleIndication(ctx context.Context, indication *oop.Indication) {
raisedTs := time.Now().Unix()
switch indication.Data.(type) {
@@ -708,7 +709,7 @@
onuDiscInd := indication.GetOnuDiscInd()
logger.Infow(ctx, "received-onu-discovery-indication", log.Fields{"OnuDiscInd": onuDiscInd, "device-id": dh.device.Id})
- //put message to channel and return immediately
+ // put message to channel and return immediately
dh.putOnuIndicationToChannel(ctx, indication, onuDiscInd.GetIntfId())
case *oop.Indication_OnuInd:
span, ctx := log.CreateChildSpan(ctx, "onu-indication", log.Fields{"device-id": dh.device.Id})
@@ -716,7 +717,7 @@
onuInd := indication.GetOnuInd()
logger.Infow(ctx, "received-onu-indication", log.Fields{"OnuInd": onuInd, "device-id": dh.device.Id})
- //put message to channel and return immediately
+ // put message to channel and return immediately
dh.putOnuIndicationToChannel(ctx, indication, onuInd.GetIntfId())
case *oop.Indication_OmciInd:
span, ctx := log.CreateChildSpan(ctx, "omci-indication", log.Fields{"device-id": dh.device.Id})
@@ -808,8 +809,8 @@
}
return alarmInd
}
-func generatePonLosAlarmIndication(intfID uint32, losStatus string) *oop.AlarmIndication {
+func generatePonLosAlarmIndication(intfID uint32, losStatus string) *oop.AlarmIndication {
ponlosAlarmInd := &oop.LosIndication{
IntfId: intfID,
Status: losStatus,
@@ -821,6 +822,7 @@
}
return alarmInd
}
+
func (dh *DeviceHandler) updateIntfOperStateAndRaiseIndication(ctx context.Context, operState string, intfID uint32) {
go func() {
if err := dh.addPort(ctx, intfID, voltha.Port_PON_OLT, operState, defaultPortSpeedMbps); err != nil {
@@ -833,16 +835,12 @@
}
func (dh *DeviceHandler) reconcileOnus(ctx context.Context) error {
-
onuDevicesFromCore, err := dh.getChildDevicesFromCore(ctx, dh.device.Id)
if err != nil {
-
logger.Error(ctx, "unable to fetch child device", log.Fields{"eeror": err})
-
return err
}
for _, onuDeviceFromCore := range onuDevicesFromCore.Items {
-
onuOperStatusFromCore := onuDeviceFromCore.OperStatus
onuConnectStatusFromCore := onuDeviceFromCore.ConnectStatus
intfID := plt.PortNoToIntfID(onuDeviceFromCore.ParentPortNo, voltha.Port_PON_OLT)
@@ -851,7 +849,6 @@
onuDeviceFromOlt, err := dh.getOnuInfo(ctx, intfID, &onuID)
if err != nil {
logger.Error(ctx, "unable to get onu object from olt agent", log.Fields{"eeror": err})
-
} else {
onuOperStatusFromOlt := onuDeviceFromOlt.GetState()
onuLosFromOlt := onuDeviceFromOlt.GetLosi()
@@ -861,18 +858,15 @@
dh.putOnuIndicationToChannel(ctx, OnuIndication, intfID)
case onuLosFromOlt.String() == "ON" && onuConnectStatusFromCore.String() == "REACHABLE":
- OnuIndication := generateOnuIndication(intfID, onuID, "down", "down") //check bal cli login notepad
+ OnuIndication := generateOnuIndication(intfID, onuID, "down", "down") // check bal cli login notepad
alarmInd := generateOnuAlarmIndication(intfID, onuID, "on")
raisedTs := time.Now().Unix()
go dh.eventMgr.ProcessEvents(ctx, alarmInd, dh.device.Id, raisedTs)
dh.putOnuIndicationToChannel(ctx, OnuIndication, intfID)
}
-
}
-
}
-
return nil
}
@@ -883,9 +877,7 @@
})
if err != nil {
logger.Error(ctx, "unable to fetch ports from core", log.Fields{"eeror": err})
-
return err
-
}
for _, portFromCore := range portsFromCore.Items {
portNum := portFromCore.GetPortNo()
@@ -907,7 +899,6 @@
ponLosindication := generatePonLosAlarmIndication(intfID, "on")
raisedTs := time.Now().Unix()
go dh.eventMgr.ProcessEvents(ctx, ponLosindication, dh.device.Id, raisedTs)
-
}
switch {
case portStateFromOlt.String() == "ACTIVE_WORKING" && portOperStatusFromCore.String() != "ACTIVE":
@@ -934,13 +925,9 @@
"portOperStatusFromCore": portOperStatusFromCore.String(),
"device-id": dh.device.Id,
"port": portNum})
-
}
-
}
-
}
-
return nil
}
@@ -978,17 +965,15 @@
dh.stopIndications <- true
}
dh.lockDevice.RUnlock()
- if err := dh.cleanupDeviceResources(ctx); err != nil {
+ if err = dh.cleanupDeviceResources(ctx); err != nil {
logger.Error(ctx, "unable to clean up device resources", log.Fields{"error": err})
return fmt.Errorf("cleanup device resources failed: %w", err)
}
- if err := dh.initializeDeviceHandlerModules(ctx); err != nil {
+ if err = dh.initializeDeviceHandlerModules(ctx); err != nil {
return olterrors.NewErrAdapter("device-handler-initialization-failed", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
}
go startHeartbeatCheck(ctx, dh)
-
//dh.lockDevice.RUnlock()
-
} else if device.OperStatus == voltha.OperStatus_RECONCILING {
// Log the device's operational status if it's RECONCILING
logger.Info(ctx, "Device is being reconciled", log.Fields{
@@ -1036,7 +1021,7 @@
return olterrors.NewErrAdapter("device-state-update-failed", log.Fields{"device-id": dh.device.Id}, err)
}
- //Clear olt communication failure event
+ // Clear olt communication failure event
dh.device.ConnectStatus = voltha.ConnectStatus_REACHABLE
dh.device.OperStatus = voltha.OperStatus_ACTIVE
raisedTs := time.Now().Unix()
@@ -1057,7 +1042,7 @@
cloned := proto.Clone(device).(*voltha.Device)
- //Update the device oper state and connection status
+ // Update the device oper state and connection status
cloned.OperStatus = voltha.OperStatus_UNKNOWN
dh.lockDevice.Lock()
dh.device = cloned
@@ -1071,7 +1056,7 @@
return olterrors.NewErrAdapter("state-update-failed", log.Fields{"device-id": device.Id}, err)
}
- //get the child device for the parent device
+ // get the child device for the parent device
onuDevices, err := dh.getChildDevicesFromCore(ctx, dh.device.Id)
if err != nil {
return olterrors.NewErrAdapter("child-device-fetch-failed", log.Fields{"device-id": dh.device.Id}, err)
@@ -1097,7 +1082,7 @@
"onu-indicator": onuInd,
"device-type": onuDevice.Type,
"device-id": onuDevice.Id}, err).LogAt(log.ErrorLevel)
- //Do not return here and continue to process other ONUs
+ // Do not return here and continue to process other ONUs
} else {
logger.Debugw(ctx, "sending inter adapter down ind to onu success", log.Fields{"olt-device-id": device.Id, "onu-device-id": onuDevice.Id})
}
@@ -1280,7 +1265,7 @@
for i = 0; i < dh.totalPonPorts+1; i++ {
// Instantiate flow manager
if dh.flowMgr[i] = NewFlowManager(ctx, dh, dh.resourceMgr[i], dh.groupMgr, i); dh.flowMgr[i] == nil {
- //Continue to check the rest of the ports
+ // Continue to check the rest of the ports
logger.Errorw(ctx, "error-initializing-flow-manager-for-intf", log.Fields{"intfID": i, "device-id": dh.device.Id})
} else {
dh.resourceMgr[i].TechprofileRef = dh.flowMgr[i].techprofile
@@ -1294,12 +1279,12 @@
dh.portStats = NewOpenOltStatsMgr(ctx, dh)
return nil
-
}
func (dh *DeviceHandler) populateDeviceInfo(ctx context.Context) (*oop.DeviceInfo, error) {
var err error
var deviceInfo *oop.DeviceInfo
+ var genmac string
deviceInfo, err = dh.Client.GetDeviceInfo(log.WithSpanFromContext(context.Background(), ctx), new(oop.Empty))
@@ -1321,7 +1306,7 @@
if deviceInfo.DeviceId == "" {
logger.Warnw(ctx, "no-device-id-provided-using-host", log.Fields{"hostport": dh.device.GetHostAndPort()})
host := strings.Split(dh.device.GetHostAndPort(), ":")[0]
- genmac, err := generateMacFromHost(ctx, host)
+ genmac, err = generateMacFromHost(ctx, host)
if err != nil {
return nil, olterrors.NewErrAdapter("failed-to-generate-mac-host", log.Fields{"host": host}, err)
}
@@ -1442,7 +1427,6 @@
return nil, olterrors.NewErrNotFound("no-flow-manager-found", log.Fields{"intf-id": ifID, "parent-device-id": request.ParentDeviceId, "child-device-id": request.DeviceId}, nil).Log()
}
return dh.flowMgr[ifID].getTechProfileDownloadMessage(ctx, request.TpInstancePath, request.OnuId, request.DeviceId)
-
}
func (dh *DeviceHandler) omciIndication(ctx context.Context, omciInd *oop.OmciIndication) error {
@@ -1461,7 +1445,6 @@
onuKey := dh.formOnuKey(omciInd.IntfId, omciInd.OnuId)
if onuInCache, ok := dh.onus.Load(onuKey); !ok {
-
logger.Debugw(ctx, "omci-indication-for-a-device-not-in-cache.", log.Fields{"intf-id": omciInd.IntfId, "onu-id": omciInd.OnuId, "device-id": dh.device.Id})
ponPort := plt.IntfIDToPortNo(omciInd.GetIntfId(), voltha.Port_PON_OLT)
@@ -1479,10 +1462,10 @@
deviceID = onuDevice.Id
proxyDeviceID = onuDevice.ProxyAddress.DeviceId
childAdapterEndpoint = onuDevice.AdapterEndpoint
- //if not exist in cache, then add to cache.
+ // if not exist in cache, then add to cache.
dh.onus.Store(onuKey, NewOnuDevice(deviceID, deviceType, onuDevice.SerialNumber, omciInd.OnuId, omciInd.IntfId, proxyDeviceID, false, onuDevice.AdapterEndpoint))
} else {
- //found in cache
+ // found in cache
logger.Debugw(ctx, "omci-indication-for-a-device-in-cache.", log.Fields{"intf-id": omciInd.IntfId, "onu-id": omciInd.OnuId, "device-id": dh.device.Id})
deviceType = onuInCache.(*OnuDevice).deviceType
deviceID = onuInCache.(*OnuDevice).deviceID
@@ -1572,7 +1555,6 @@
onuSecOmciMsgList := omciMsgs.GetMessages()
for _, onuSecOmciMsg := range onuSecOmciMsgList {
-
var omciMessage *oop.OmciMsg
hexPkt := make([]byte, hex.EncodedLen(len(onuSecOmciMsg)))
hex.Encode(hexPkt, onuSecOmciMsg)
@@ -1683,7 +1665,6 @@
st, _ := status.FromError(err)
if st.Code() == codes.AlreadyExists {
logger.Debugw(ctx, "onu-activation-in-progress", log.Fields{"SerialNumber": serialNumber, "onu-id": onuID, "device-id": dh.device.Id})
-
} else {
return olterrors.NewErrAdapter("onu-activate-failed", log.Fields{"onu": Onu, "device-id": dh.device.Id}, err)
}
@@ -1704,7 +1685,7 @@
}
return true
})
- //Got the onu device from cache return
+ // Got the onu device from cache return
if InCacheOnuDev != nil {
logger.Debugw(ctx, "Got child device from cache", log.Fields{"onudev": InCacheOnuDev.serialNumber})
return InCacheOnuDev
@@ -1714,7 +1695,7 @@
SerialNumber: sn,
ParentPortNo: parentPortNo,
})
- //No device found in core return nil
+ // No device found in core return nil
if onuDevice == nil {
return nil
}
@@ -1733,7 +1714,7 @@
parentPortNo := plt.IntfIDToPortNo(onuDiscInd.GetIntfId(), voltha.Port_PON_OLT)
tpInstExists := false
- //CheckOnuDevExistenceAtOnuDiscovery if true , a check will be made for the existence of the onu device. If the onu device
+ // CheckOnuDevExistenceAtOnuDiscovery if true , a check will be made for the existence of the onu device. If the onu device
// still exists , the onu discovery will be ignored, else a check for active techprofiles for ONU is checked.
if !dh.openOLT.CheckOnuDevExistenceAtOnuDiscovery {
onuDev := dh.getChildDevice(ctx, sn, parentPortNo)
@@ -1771,7 +1752,6 @@
logger.Infow(ctx, "No device present in core , continuing with discovery", log.Fields{"sn": sn})
return false, nil
-
}
// processDiscONULOSClear clears the LOS Alarm if it's needed
@@ -1834,7 +1814,7 @@
return error
}
if tpInstExists {
- //ignore the discovery if tpinstance is present.
+ // ignore the discovery if tpinstance is present.
logger.Debugw(ctx, "ignoring-onu-indication-as-tp-already-exists", log.Fields{"sn": sn})
return nil
}
@@ -1842,7 +1822,6 @@
// if the ONU existed, handle the LOS Alarm
if existing {
-
if inProcess.(bool) {
// if we're currently processing the ONU on a different thread, do nothing
logger.Warnw(ctx, "onu-sn-is-being-processed", log.Fields{"sn": sn})
@@ -1887,7 +1866,6 @@
// we need to create a new ChildDevice
ponintfid := onuDiscInd.GetIntfId()
onuID, error = dh.resourceMgr[ponintfid].GetONUID(ctx)
-
logger.Infow(ctx, "creating-new-onu-got-onu-id", log.Fields{"sn": sn, "onuId": onuID})
if error != nil {
@@ -1917,7 +1895,7 @@
"serial-number": sn}, error)
return error
}
- if error := dh.eventMgr.OnuDiscoveryIndication(ctx, onuDiscInd, dh.device.Id, onuDevice.Id, onuID, sn, time.Now().Unix()); error != nil {
+ if error = dh.eventMgr.OnuDiscoveryIndication(ctx, onuDiscInd, dh.device.Id, onuDevice.Id, onuID, sn, time.Now().Unix()); error != nil {
logger.Error(ctx, "discovery-indication-failed", log.Fields{"err": error})
error = olterrors.NewErrAdapter("discovery-indication-failed", log.Fields{
"onu-id": onuID,
@@ -1937,14 +1915,13 @@
error = dh.setupChildInterAdapterClient(subCtx, onuDevice.AdapterEndpoint)
cancel()
if error != nil {
-
error = olterrors.NewErrCommunication("no-connection-to-child-adapter", log.Fields{"device-id": onuDevice.Id}, error)
return error
}
// we can now use the existing ONU Id
onuID = onuDevice.ProxyAddress.OnuId
- //Insert the ONU into cache to use in OnuIndication.
+ // Insert the ONU into cache to use in OnuIndication.
//TODO: Do we need to remove this from the cache on ONU change, or wait for overwritten on next discovery.
logger.Debugw(ctx, "onu-discovery-indication-key-create",
log.Fields{"onu-id": onuID,
@@ -1964,7 +1941,6 @@
OperStatus: common.OperStatus_DISCOVERED,
ConnStatus: common.ConnectStatus_REACHABLE,
}); error != nil {
-
error = olterrors.NewErrAdapter("failed-to-update-device-state", log.Fields{
"device-id": onuDevice.Id,
"serial-number": sn}, error)
@@ -1973,7 +1949,6 @@
logger.Infow(ctx, "onu-discovered-reachable", log.Fields{"device-id": onuDevice.Id, "sn": sn})
if error = dh.activateONU(ctx, onuDiscInd.IntfId, int64(onuID), onuDiscInd.SerialNumber, sn); error != nil {
-
error = olterrors.NewErrAdapter("onu-activation-failed", log.Fields{
"device-id": onuDevice.Id,
"serial-number": sn}, error)
@@ -1983,7 +1958,6 @@
}
func (dh *DeviceHandler) onuIndication(ctx context.Context, onuInd *oop.OnuIndication) error {
-
ponPort := plt.IntfIDToPortNo(onuInd.GetIntfId(), voltha.Port_PON_OLT)
var onuDevice *voltha.Device
var err error
@@ -1994,17 +1968,15 @@
"device-id": dh.device.Id})
onuKey := dh.formOnuKey(onuInd.GetIntfId(), onuInd.OnuId)
serialNumber := dh.stringifySerialNumber(onuInd.SerialNumber)
-
errFields := log.Fields{"device-id": dh.device.Id}
if onuInCache, ok := dh.onus.Load(onuKey); ok {
-
- //If ONU id is discovered before then use GetDevice to get onuDevice because it is cheaper.
+ // If ONU id is discovered before then use GetDevice to get onuDevice because it is cheaper.
foundInCache = true
errFields["onu-id"] = onuInCache.(*OnuDevice).deviceID
onuDevice, err = dh.getDeviceFromCore(ctx, onuInCache.(*OnuDevice).deviceID)
} else {
- //If ONU not found in adapter cache then we have to use GetChildDevice to get onuDevice
+ // If ONU not found in adapter cache then we have to use GetChildDevice to get onuDevice
if serialNumber != "" {
errFields["serial-number"] = serialNumber
} else {
@@ -2037,9 +2009,7 @@
}
if !foundInCache {
onuKey := dh.formOnuKey(onuInd.GetIntfId(), onuInd.GetOnuId())
-
dh.onus.Store(onuKey, NewOnuDevice(onuDevice.Id, onuDevice.Type, onuDevice.SerialNumber, onuInd.GetOnuId(), onuInd.GetIntfId(), onuDevice.ProxyAddress.DeviceId, false, onuDevice.AdapterEndpoint))
-
}
if onuInd.OperState == "down" && onuInd.FailReason != oop.OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE {
if err := dh.eventMgr.onuActivationIndication(ctx, onuActivationFailEvent, onuInd, dh.device.Id, time.Now().Unix()); err != nil {
@@ -2192,7 +2162,6 @@
metrics := dh.metrics.GetSubscriberMetrics()
for _, m := range pmConfigs.Metrics {
metrics[m.Name].Enabled = m.Enabled
-
}
}
}
@@ -2209,7 +2178,7 @@
if flows != nil {
for _, flow := range flows.ToRemove.Items {
- intfID := dh.getIntfIDFromFlow(ctx, flow)
+ intfID := dh.getIntfIDFromFlow(flow)
logger.Debugw(ctx, "removing-flow",
log.Fields{"device-id": device.Id,
@@ -2226,7 +2195,7 @@
}
if err != nil {
if werr, ok := err.(olterrors.WrappedError); ok && status.Code(werr.Unwrap()) == codes.NotFound {
- //The flow we want to remove is not there, there is no need to throw an error
+ // The flow we want to remove is not there, there is no need to throw an error
logger.Warnw(ctx, "flow-to-remove-not-found",
log.Fields{
"ponIf": intfID,
@@ -2240,7 +2209,7 @@
}
for _, flow := range flows.ToAdd.Items {
- intfID := dh.getIntfIDFromFlow(ctx, flow)
+ intfID := dh.getIntfIDFromFlow(flow)
logger.Debugw(ctx, "adding-flow",
log.Fields{"device-id": device.Id,
"ponIf": intfID,
@@ -2305,7 +2274,6 @@
// UpdateFlowsIncrementally updates the device flow
func (dh *DeviceHandler) UpdateFlowsIncrementally(ctx context.Context, device *voltha.Device, flows *of.FlowChanges, groups *of.FlowGroupChanges, flowMetadata *of.FlowMetadata) error {
-
var errorsList []error
if dh.getDeviceDeletionInProgressFlag() {
@@ -2350,7 +2318,7 @@
dh.onus = sync.Map{}
dh.lockDevice.RLock()
- //stopping the stats collector
+ // stopping the stats collector
if dh.isCollectorActive {
dh.stopCollector <- true
}
@@ -2358,7 +2326,7 @@
go dh.notifyChildDevices(ctx, "unreachable")
cloned := proto.Clone(device).(*voltha.Device)
- //Update device Admin state
+ // Update device Admin state
dh.device = cloned
// Update the all pon ports state on that device to disable and NNI remains active as NNI remains active in openolt agent.
@@ -2378,7 +2346,7 @@
onuInd := oop.OnuIndication{}
onuInd.OperState = state
- //get the child device for the parent device
+ // get the child device for the parent device
onuDevices, err := dh.getChildDevicesFromCore(ctx, dh.device.Id)
if err != nil {
logger.Errorw(ctx, "failed-to-get-child-devices-information", log.Fields{"device-id": dh.device.Id, "err": err})
@@ -2393,10 +2361,8 @@
logger.Errorw(ctx, "failed-to-send-inter-adapter-message", log.Fields{"OnuInd": onuInd,
"From Adapter": dh.openOLT.config.AdapterEndpoint, "DeviceType": onuDevice.Type, "device-id": onuDevice.Id})
}
-
}
}
-
}
// ReenableDevice re-enables the olt device after disable
@@ -2413,9 +2379,7 @@
}
} else {
return olterrors.NewErrAdapter("olt-reenable-failed", log.Fields{"device-id": dh.device.Id}, errors.New("nil device client"))
-
}
-
logger.Debug(ctx, "olt-reenabled")
// Update the all ports state on that device to enable
@@ -2429,10 +2393,10 @@
}
}
if retError == nil {
- //Update the device oper status as ACTIVE
+ // Update the device oper status as ACTIVE
device.OperStatus = voltha.OperStatus_ACTIVE
} else {
- //Update the device oper status as FAILED
+ // Update the device oper status as FAILED
device.OperStatus = voltha.OperStatus_FAILED
}
dh.device = device
@@ -2510,7 +2474,6 @@
*/
dh.setDeviceDeletionInProgressFlag(true)
-
dh.StopAllFlowRoutines(ctx)
dh.lockDevice.RLock()
@@ -2536,13 +2499,13 @@
}
dh.removeOnuIndicationChannels(ctx)
- //Reset the state
+ // Reset the state
if dh.Client != nil {
- if _, err := dh.Client.Reboot(ctx, new(oop.Empty)); err != nil {
+ if _, err = dh.Client.Reboot(ctx, new(oop.Empty)); err != nil {
go func() {
failureReason := fmt.Sprintf("Failed to reboot during device delete request with error: %s", err.Error())
- if err = dh.eventMgr.oltRebootFailedEvent(ctx, dh.device.Id, failureReason, time.Now().Unix()); err != nil {
- logger.Errorw(ctx, "on-olt-reboot-failed", log.Fields{"device-id": dh.device.Id, "err": err})
+ if err1 := dh.eventMgr.oltRebootFailedEvent(ctx, dh.device.Id, failureReason, time.Now().Unix()); err1 != nil {
+ logger.Errorw(ctx, "on-olt-reboot-failed", log.Fields{"device-id": dh.device.Id, "err": err1})
}
}()
logger.Errorw(ctx, "olt-reboot-failed", log.Fields{"device-id": dh.device.Id, "err": err})
@@ -2641,7 +2604,6 @@
}
} else {
return olterrors.NewErrAdapter("olt-reboot-failed", log.Fields{"device-id": dh.device.Id}, errors.New("nil device client"))
-
}
logger.Debugw(ctx, "rebooted-device-successfully", log.Fields{"device-id": device.Id})
@@ -2832,7 +2794,6 @@
}
func startHeartbeatCheck(ctx context.Context, dh *DeviceHandler) {
-
defer func() {
dh.lockDevice.Lock()
dh.isHeartbeatCheckActive = false
@@ -2887,14 +2848,12 @@
}()
}
dh.lockDevice.RUnlock()
-
} else {
logger.Warn(ctx, "Heartbeat signature changed, OLT is rebooted. Cleaningup resources.")
dh.updateHeartbeatSignature(ctx, heartBeat.HeartbeatSignature)
dh.heartbeatSignature = heartBeat.HeartbeatSignature
go dh.updateStateRebooted(ctx)
}
-
}
cancel()
case <-dh.stopHeartbeatCheck:
@@ -2937,7 +2896,7 @@
}
*/
- //raise olt communication failure event
+ // raise olt communication failure event
raisedTs := time.Now().Unix()
cloned := proto.Clone(device).(*voltha.Device)
cloned.ConnectStatus = voltha.ConnectStatus_UNREACHABLE
@@ -2963,7 +2922,6 @@
}
dh.lockDevice.RUnlock()
dh.transitionMap.Handle(ctx, DeviceInit)
-
}
}
@@ -2979,7 +2937,7 @@
// Immediately return, otherwise accessing a null 'device' struct would cause panic
return
}
- //Starting the cleanup process
+ // Starting the cleanup process
dh.setDeviceDeletionInProgressFlag(true)
logger.Warnw(ctx, "update-state-rebooted", log.Fields{"device-id": dh.device.Id, "connect-status": device.ConnectStatus,
@@ -3031,10 +2989,9 @@
dh.StopAllFlowRoutines(ctx)
- //reset adapter reconcile flag
+ // reset adapter reconcile flag
dh.adapterPreviouslyConnected = false
for {
-
childDevices, err := dh.getChildDevicesFromCore(ctx, dh.device.Id)
if err != nil || childDevices == nil {
logger.Errorw(ctx, "Failed to get child devices from core", log.Fields{"deviceID": dh.device.Id})
@@ -3047,13 +3004,11 @@
logger.Warn(ctx, "Not all child devices are cleared, continuing to wait")
time.Sleep(5 * time.Second)
}
-
}
- //Cleanup completed , reset the flag
+ // Cleanup completed , reset the flag
dh.setDeviceDeletionInProgressFlag(false)
logger.Infow(ctx, "cleanup complete after reboot , moving to init", log.Fields{"deviceID": device.Id})
dh.transitionMap.Handle(ctx, DeviceInit)
-
}
// EnablePort to enable Pon interface
@@ -3186,7 +3141,7 @@
}
onu := &oop.Onu{IntfId: intfID, OnuId: onuID, SerialNumber: sn}
- //clear PON resources associated with ONU
+ // clear PON resources associated with ONU
onuGem, err := dh.resourceMgr[intfID].GetOnuGemInfo(ctx, onuID)
if err != nil || onuGem == nil || onuGem.OnuID != onuID {
logger.Warnw(ctx, "failed-to-get-onu-info-for-pon-port", log.Fields{
@@ -3202,8 +3157,8 @@
for _, gem := range onuGem.GemPorts {
if flowIDs, err := dh.resourceMgr[intfID].GetFlowIDsForGem(ctx, gem); err == nil {
for _, flowID := range flowIDs {
- //multiple gem port can have the same flow id
- //it is better to send only one flowRemove request to the agent
+ // multiple gem port can have the same flow id
+ // it is better to send only one flowRemove request to the agent
var alreadyRemoved bool
for _, removedFlowID := range removedFlows {
if removedFlowID == flowID {
@@ -3232,10 +3187,9 @@
"onu-device": onu,
"onu-gem": onuGem,
"err": err})
- //Not returning error on cleanup.
+ // Not returning error on cleanup.
}
logger.Debugw(ctx, "removed-onu-gem-info", log.Fields{"intf": intfID, "onu-device": onu, "onugem": onuGem})
-
}
dh.resourceMgr[intfID].FreeonuID(ctx, []uint32{onuID})
dh.onus.Delete(onuKey)
@@ -3364,7 +3318,7 @@
return resp, nil
}
-func (dh *DeviceHandler) getIntfIDFromFlow(ctx context.Context, flow *of.OfpFlowStats) uint32 {
+func (dh *DeviceHandler) getIntfIDFromFlow(flow *of.OfpFlowStats) uint32 {
// Default to NNI
var intfID = dh.totalPonPorts
inPort, outPort := getPorts(flow)
@@ -3374,15 +3328,15 @@
return intfID
}
-func (dh *DeviceHandler) getOnuIndicationChannel(ctx context.Context, intfID uint32) chan onuIndicationMsg {
+func (dh *DeviceHandler) getOnuIndicationChannel(intfID uint32) chan onuIndicationMsg {
dh.perPonOnuIndicationChannelLock.Lock()
if ch, ok := dh.perPonOnuIndicationChannel[intfID]; ok {
dh.perPonOnuIndicationChannelLock.Unlock()
return ch.indicationChannel
}
channels := onuIndicationChannels{
- //We create a buffered channel here to avoid calling function to be blocked
- //in case of multiple indications from the ONUs,
+ // We create a buffered channel here to avoid calling function to be blocked
+ // in case of multiple indications from the ONUs,
//especially in the case where indications are buffered in OLT.
indicationChannel: make(chan onuIndicationMsg, 500),
stopChannel: make(chan struct{}),
@@ -3391,7 +3345,6 @@
dh.perPonOnuIndicationChannelLock.Unlock()
go dh.onuIndicationsRoutine(&channels)
return channels.indicationChannel
-
}
func (dh *DeviceHandler) removeOnuIndicationChannels(ctx context.Context) {
@@ -3411,7 +3364,7 @@
}
logger.Debugw(ctx, "put-onu-indication-to-channel", log.Fields{"indication": indication, "intfID": intfID})
// Send the onuIndication on the ONU channel
- dh.getOnuIndicationChannel(ctx, intfID) <- ind
+ dh.getOnuIndicationChannel(intfID) <- ind
}
func (dh *DeviceHandler) onuIndicationsRoutine(onuChannels *onuIndicationChannels) {
@@ -3582,8 +3535,8 @@
logger.Debug(ctx, "stopped all mcast handler routines")
}
+// nolint: unparam
func (dh *DeviceHandler) getOltPortCounters(ctx context.Context, oltPortInfo *extension.GetOltPortCounters) *extension.SingleGetValueResponse {
-
singleValResp := extension.SingleGetValueResponse{
Response: &extension.GetValueResponse{
Response: &extension.GetValueResponse_PortCoutners{
@@ -3592,8 +3545,7 @@
},
}
- errResp := func(status extension.GetValueResponse_Status,
- reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
+ errResp := func(status extension.GetValueResponse_Status, reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
return &extension.SingleGetValueResponse{
Response: &extension.GetValueResponse{
Status: status,
@@ -3604,14 +3556,14 @@
if oltPortInfo.PortType != extension.GetOltPortCounters_Port_ETHERNET_NNI &&
oltPortInfo.PortType != extension.GetOltPortCounters_Port_PON_OLT {
- //send error response
+ // send error response
logger.Debugw(ctx, "getOltPortCounters invalid portType", log.Fields{"oltPortInfo": oltPortInfo.PortType})
return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INVALID_PORT_TYPE)
}
statIndChn := make(chan bool, 1)
dh.portStats.RegisterForStatIndication(ctx, portStatsType, statIndChn, oltPortInfo.PortNo, oltPortInfo.PortType)
defer dh.portStats.DeRegisterFromStatIndication(ctx, portStatsType, statIndChn)
- //request openOlt agent to send the the port statistics indication
+ // request openOlt agent to send the the port statistics indication
go func() {
_, err := dh.Client.CollectStatistics(ctx, new(oop.Empty))
@@ -3621,7 +3573,7 @@
}()
select {
case <-statIndChn:
- //indication received for ports stats
+ // indication received for ports stats
logger.Debugw(ctx, "getOltPortCounters recvd statIndChn", log.Fields{"oltPortInfo": oltPortInfo})
case <-time.After(oltPortInfoTimeout * time.Second):
logger.Debugw(ctx, "getOltPortCounters timeout happened", log.Fields{"oltPortInfo": oltPortInfo})
@@ -3631,24 +3583,23 @@
return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_TIMEOUT)
}
if oltPortInfo.PortType == extension.GetOltPortCounters_Port_ETHERNET_NNI {
- //get nni stats
+ // get nni stats
intfID := plt.PortNoToIntfID(oltPortInfo.PortNo, voltha.Port_ETHERNET_NNI)
logger.Debugw(ctx, "getOltPortCounters intfID ", log.Fields{"intfID": intfID})
cmnni := dh.portStats.collectNNIMetrics(intfID)
if cmnni == nil {
- //TODO define the error reason
+ // TODO define the error reason
return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INTERNAL_ERROR)
}
dh.portStats.updateGetOltPortCountersResponse(ctx, &singleValResp, cmnni)
return &singleValResp
-
} else if oltPortInfo.PortType == extension.GetOltPortCounters_Port_PON_OLT {
// get pon stats
intfID := plt.PortNoToIntfID(oltPortInfo.PortNo, voltha.Port_PON_OLT)
if val, ok := dh.activePorts.Load(intfID); ok && val == true {
cmpon := dh.portStats.collectPONMetrics(intfID)
if cmpon == nil {
- //TODO define the error reason
+ // TODO define the error reason
return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INTERNAL_ERROR)
}
dh.portStats.updateGetOltPortCountersResponse(ctx, &singleValResp, cmpon)
@@ -3658,8 +3609,8 @@
return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INTERNAL_ERROR)
}
+//nolint:unparam
func (dh *DeviceHandler) getOltOffloadStats(ctx context.Context, oltPortInfo *extension.GetOffloadedAppsStatisticsRequest) *extension.SingleGetValueResponse {
-
singleValResp := extension.SingleGetValueResponse{
Response: &extension.GetValueResponse{
Status: extension.GetValueResponse_OK,
@@ -3672,8 +3623,8 @@
return &singleValResp
}
+//nolint:unparam
func (dh *DeviceHandler) setOltOffload(ctx context.Context, congig *extension.AppOffloadConfig) *extension.SingleSetValueResponse {
-
singleValResp := extension.SingleSetValueResponse{
Response: &extension.SetValueResponse{
Status: extension.SetValueResponse_OK,
@@ -3683,8 +3634,8 @@
return &singleValResp
}
+//nolint:unparam
func (dh *DeviceHandler) setOnuOffload(ctx context.Context, config *extension.AppOffloadOnuConfig) *extension.SingleSetValueResponse {
-
singleValResp := extension.SingleSetValueResponse{
Response: &extension.SetValueResponse{
Status: extension.SetValueResponse_OK,
@@ -3695,7 +3646,6 @@
}
func (dh *DeviceHandler) getOnuPonCounters(ctx context.Context, onuPonInfo *extension.GetOnuCountersRequest) *extension.SingleGetValueResponse {
-
singleValResp := extension.SingleGetValueResponse{
Response: &extension.GetValueResponse{
Response: &extension.GetValueResponse_OnuPonCounters{
@@ -3704,8 +3654,7 @@
},
}
- errResp := func(status extension.GetValueResponse_Status,
- reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
+ errResp := func(status extension.GetValueResponse_Status, reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
return &extension.SingleGetValueResponse{
Response: &extension.GetValueResponse{
Status: status,
@@ -3728,33 +3677,27 @@
}
dh.portStats.updateGetOnuPonCountersResponse(ctx, &singleValResp, cmnni)
return &singleValResp
-
}
func (dh *DeviceHandler) getOnuInfo(ctx context.Context, intfID uint32, onuID *uint32) (*oop.OnuInfo, error) {
-
Onu := oop.Onu{IntfId: intfID, OnuId: *onuID}
OnuInfo, err := dh.Client.GetOnuInfo(ctx, &Onu)
if err != nil {
return nil, err
}
return OnuInfo, nil
-
}
func (dh *DeviceHandler) getIntfInfo(ctx context.Context, intfID uint32) (*oop.PonIntfInfo, error) {
-
Intf := oop.Interface{IntfId: intfID}
IntfInfo, err := dh.Client.GetPonInterfaceInfo(ctx, &Intf)
if err != nil {
return nil, err
}
return IntfInfo, nil
-
}
func (dh *DeviceHandler) getRxPower(ctx context.Context, rxPowerRequest *extension.GetRxPowerRequest) *extension.SingleGetValueResponse {
-
Onu := oop.Onu{IntfId: rxPowerRequest.IntfId, OnuId: rxPowerRequest.OnuId}
rxPower, err := dh.Client.GetPonRxPower(ctx, &Onu)
if err != nil {
@@ -3778,9 +3721,7 @@
}
func (dh *DeviceHandler) getPONRxPower(ctx context.Context, OltRxPowerRequest *extension.GetOltRxPowerRequest) *extension.SingleGetValueResponse {
-
- errResp := func(status extension.GetValueResponse_Status,
- reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
+ errResp := func(status extension.GetValueResponse_Status, reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
return &extension.SingleGetValueResponse{
Response: &extension.GetValueResponse{
Status: status,
@@ -3816,17 +3757,13 @@
}
if serialNumber != "" {
-
onuDev := dh.getChildDevice(ctx, serialNumber, (uint32)(portNumber))
if onuDev != nil {
-
Onu := oop.Onu{IntfId: uint32(portNumber), OnuId: onuDev.onuID}
rxPower, err := dh.Client.GetPonRxPower(ctx, &Onu)
if err != nil {
-
logger.Errorw(ctx, "error-while-getting-rx-power", log.Fields{"Onu": Onu, "err": err})
return generateSingleGetValueErrorResponse(err)
-
}
rxPowerValue := extension.RxPower{}
@@ -3836,24 +3773,18 @@
rxPowerValue.FailReason = rxPower.GetFailReason().String()
resp.Response.GetOltRxPower().RxPower = append(resp.Response.GetOltRxPower().RxPower, &rxPowerValue)
-
} else {
-
logger.Errorw(ctx, "getPONRxPower invalid Device", log.Fields{"portLabel": portLabel, "serialNumber": serialNumber})
return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INVALID_DEVICE)
}
-
} else {
-
dh.onus.Range(func(Onukey interface{}, onuInCache interface{}) bool {
if onuInCache.(*OnuDevice).intfID == (uint32)(portNumber) {
-
Onu := oop.Onu{IntfId: (uint32)(portNumber), OnuId: onuInCache.(*OnuDevice).onuID}
rxPower, err := dh.Client.GetPonRxPower(ctx, &Onu)
if err != nil {
logger.Errorw(ctx, "error-while-getting-rx-power, however considering to proceed further with other ONUs on PON", log.Fields{"Onu": Onu, "err": err})
} else {
-
rxPowerValue := extension.RxPower{}
rxPowerValue.OnuSn = onuInCache.(*OnuDevice).serialNumber
rxPowerValue.Status = rxPower.GetStatus()
@@ -3862,7 +3793,6 @@
resp.Response.GetOltRxPower().RxPower = append(resp.Response.GetOltRxPower().RxPower, &rxPowerValue)
}
-
}
logger.Infow(ctx, "getPONRxPower response ", log.Fields{"Response": resp})
return true
@@ -3872,9 +3802,9 @@
return &resp
}
+// nolint: unparam
func generateSingleGetValueErrorResponse(err error) *extension.SingleGetValueResponse {
- errResp := func(status extension.GetValueResponse_Status,
- reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
+ errResp := func(status extension.GetValueResponse_Status, reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
return &extension.SingleGetValueResponse{
Response: &extension.GetValueResponse{
Status: status,
@@ -4161,7 +4091,6 @@
}
func (dh *DeviceHandler) getChildAdapterServiceClient(endpoint string) (onu_inter_adapter_service.OnuInterAdapterServiceClient, error) {
-
// First check from cache
dh.lockChildAdapterClients.RLock()
if cgClient, ok := dh.childAdapterClients[endpoint]; ok {
diff --git a/internal/pkg/core/device_handler_test.go b/internal/pkg/core/device_handler_test.go
index 2616e4f..834c560 100644
--- a/internal/pkg/core/device_handler_test.go
+++ b/internal/pkg/core/device_handler_test.go
@@ -304,7 +304,7 @@
}{
{"generateMacFromHost-1", args{host: "localhost"}, "00:00:7f:00:00:01", false},
{"generateMacFromHost-2", args{host: "10.10.10.10"}, "00:00:0a:0a:0a:0a", false},
- //{"generateMacFromHost-3", args{host: "google.com"}, "00:00:d8:3a:c8:8e", false},
+ // {"generateMacFromHost-3", args{host: "google.com"}, "00:00:d8:3a:c8:8e", false},
{"generateMacFromHost-4", args{host: "testing3"}, "", true},
}
for _, tt := range tests {
@@ -461,7 +461,6 @@
t.Errorf("GetportLabel() => want=(%v, %v) got=(%v, %v)",
tt.want, tt.errType, got, reflect.TypeOf(err))
}
-
})
}
}
@@ -721,9 +720,7 @@
case "sendProxiedMessage-6":
err := tt.devicehandler.ProxyOmciRequests(ctx, tt.args.omciMsg)
assert.Contains(t, err.Error(), "no deviceID")
-
}
-
})
}
}
@@ -822,7 +819,6 @@
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
-
if err := tt.devicehandler.RebootDevice(context.Background(), tt.args.device); (err != nil) != tt.wantErr {
t.Errorf("DeviceHandler.RebootDevice() error = %v, wantErr %v", err, tt.wantErr)
}
@@ -958,7 +954,7 @@
t.Run(tt.name, func(t *testing.T) {
_ = tt.devicehandler.addPort(context.Background(), tt.args.intfID, tt.args.portType, tt.args.state, tt.args.speedMbps)
- //Check if the correct state is stored
+ // Check if the correct state is stored
storedState, ok := tt.devicehandler.activePorts.Load(tt.args.intfID)
expectedState := tt.args.state == "up"
@@ -968,7 +964,7 @@
t.Errorf("Expected stored port state: %v, found: %v in test %v", expectedState, storedState, tt.name)
}
- //Check if the reported speed values are correct
+ // Check if the reported speed values are correct
ofpPort := makeOfpPort(tt.devicehandler.device.MacAddress, tt.args.speedMbps)
if ofpPort.Curr != tt.expectedCapacity ||
@@ -1016,7 +1012,6 @@
}
func TestDeviceHandler_handleOltIndication(t *testing.T) {
-
type args struct {
oltIndication *oop.OltIndication
}
@@ -1056,9 +1051,9 @@
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- //dh.doStateInit()
+ // dh.doStateInit()
// context.
- //dh.AdoptDevice(tt.args.device)
+ // dh.AdoptDevice(tt.args.device)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := tt.devicehandler.postInit(ctx); err != nil {
@@ -1105,7 +1100,6 @@
dh1.start(context.Background())
dh1.Stop(context.Background())
-
}
func TestDeviceHandler_PacketOut(t *testing.T) {
@@ -1128,7 +1122,7 @@
wantErr bool
}{
// TODO: Add test cases.
- //{"test1", args{egressPortNo: 0, packet: &ofp.OfpPacketOut{}}, true},
+ // {"test1", args{egressPortNo: 0, packet: &ofp.OfpPacketOut{}}, true},
{"PacketOut-1", dh1, args{egressPortNo: 0, packet: pktout}, false},
{"PacketOut-2", dh2, args{egressPortNo: 1, packet: pktout}, false},
{"PacketOut-3", dh2, args{egressPortNo: 4112, packet: pktout}, false},
@@ -1170,7 +1164,7 @@
if err := tt.devicehandler.doStateUp(ctx); (err != nil) != tt.wantErr {
t.Logf("DeviceHandler.doStateUp() error = %v, wantErr %v", err, tt.wantErr)
}
- tt.devicehandler.stopCollector <- true //stop the stat collector invoked from doStateUp
+ tt.devicehandler.stopCollector <- true // stop the stat collector invoked from doStateUp
})
}
}
@@ -1230,7 +1224,6 @@
}
func TestDeviceHandler_onuDiscIndication(t *testing.T) {
-
dh1 := newMockDeviceHandler()
dh1.discOnus = sync.Map{}
dh1.discOnus.Store("onu1", true)
@@ -1289,13 +1282,11 @@
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
-
_, err := tt.devicehandler.populateDeviceInfo(context.Background())
if (err != nil) != tt.wantErr {
t.Errorf("DeviceHandler.populateDeviceInfo() error = %v, wantErr %v", err, tt.wantErr)
return
}
-
})
}
}
@@ -1486,7 +1477,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(2147483645),
fu.PushVlan(0x8100),
diff --git a/internal/pkg/core/olt_state_transitions.go b/internal/pkg/core/olt_state_transitions.go
index 613e4e4..b012a64 100644
--- a/internal/pkg/core/olt_state_transitions.go
+++ b/internal/pkg/core/olt_state_transitions.go
@@ -63,9 +63,9 @@
// Transition to store state machine
type Transition struct {
previousState []DeviceState
- currentState DeviceState
before []TransitionHandler
after []TransitionHandler
+ currentState DeviceState
}
// TransitionMap to store all the states and current device state
@@ -146,7 +146,6 @@
// Handle moves the state machine to next state based on the trigger and invokes the before and
// after handlers if the transition is a valid transition
func (tMap *TransitionMap) Handle(ctx context.Context, trigger Trigger) {
-
// Check whether the transtion is valid from current state
if !tMap.isValidTransition(trigger) {
logger.Errorw(ctx, "invalid-transition-triggered",
diff --git a/internal/pkg/core/olt_state_transitions_test.go b/internal/pkg/core/olt_state_transitions_test.go
index df4e8c6..4cb4218 100644
--- a/internal/pkg/core/olt_state_transitions_test.go
+++ b/internal/pkg/core/olt_state_transitions_test.go
@@ -18,10 +18,11 @@
import (
"context"
- "github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
"reflect"
"testing"
"time"
+
+ "github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
)
/*
diff --git a/internal/pkg/core/openolt.go b/internal/pkg/core/openolt.go
index 88e3efe..44ac313 100644
--- a/internal/pkg/core/openolt.go
+++ b/internal/pkg/core/openolt.go
@@ -44,22 +44,22 @@
// OpenOLT structure holds the OLT information
type OpenOLT struct {
+ eventProxy eventif.EventProxy
configManager *conf.ConfigManager
deviceHandlers map[string]*DeviceHandler
coreClient *vgrpc.Client
- eventProxy eventif.EventProxy
config *config.AdapterFlags
- numOnus int
+ exitChannel chan struct{}
KVStoreAddress string
KVStoreType string
- exitChannel chan struct{}
+ numOnus int
HeartbeatCheckInterval time.Duration
HeartbeatFailReportInterval time.Duration
GrpcTimeoutInterval time.Duration
+ rpcTimeout time.Duration
lockDeviceHandlersMap sync.RWMutex
enableONUStats bool
enableGemStats bool
- rpcTimeout time.Duration
CheckOnuDevExistenceAtOnuDiscovery bool
}
@@ -264,7 +264,6 @@
return &empty.Empty{}, nil
}
return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil)
-
}
// DeleteDevice deletes a device
@@ -333,7 +332,6 @@
return &empty.Empty{}, nil
}
return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": packet.DeviceId}, nil)
-
}
// EnablePort to Enable PON/NNI interface
@@ -507,7 +505,6 @@
return handler.GetTechProfileDownloadMessage(ctx, request)
}
return nil, olterrors.NewErrNotFound("no-device-handler", log.Fields{"parent-device-id": request.ParentDeviceId, "child-device-id": request.DeviceId}, nil).Log()
-
}
// GetHealthStatus is used by a OltAdapterService client to detect a connection
diff --git a/internal/pkg/core/openolt_eventmgr.go b/internal/pkg/core/openolt_eventmgr.go
index f17814e..a8bc359 100644
--- a/internal/pkg/core/openolt_eventmgr.go
+++ b/internal/pkg/core/openolt_eventmgr.go
@@ -342,6 +342,7 @@
logger.Debugw(ctx, "olt-los-event-sent-to-kafka", log.Fields{"intf-id": ponIntdID})
return nil
}
+
func (em *OpenOltEventMgr) oltRebootFailedEvent(ctx context.Context, deviceID string, reason string, raisedTs int64) error {
de := voltha.DeviceEvent{
Context: map[string]string{ContextOltFailureReason: "olt-reboot-failed"},
@@ -350,10 +351,10 @@
if err := em.eventProxy.SendDeviceEvent(ctx, &de, voltha.EventCategory_COMMUNICATION, voltha.EventSubCategory_OLT,
raisedTs); err != nil {
return olterrors.NewErrCommunication("send-olt-reboot-failed-event", log.Fields{
- "device-id": deviceID, "raised-ts": raisedTs}, err)
+ "device-id": deviceID, "raised-ts": raisedTs, "reason": reason}, err)
}
logger.Debugw(ctx, "olt-reboot-failed-event-sent-to-kafka", log.Fields{
- "device-id": deviceID, "raised-ts": raisedTs})
+ "device-id": deviceID, "raised-ts": raisedTs, "reason": reason})
return nil
}
diff --git a/internal/pkg/core/openolt_flowmgr.go b/internal/pkg/core/openolt_flowmgr.go
index 6ad68ea..7389cb7 100644
--- a/internal/pkg/core/openolt_flowmgr.go
+++ b/internal/pkg/core/openolt_flowmgr.go
@@ -47,109 +47,109 @@
)
const (
- //IPProtoDhcp flow category
+ // IPProtoDhcp flow category
IPProtoDhcp = 17
- //IgmpProto proto value
+ // IgmpProto proto value
IgmpProto = 2
- //EapEthType eapethtype value
+ // EapEthType eapethtype value
EapEthType = 0x888e
- //LldpEthType lldp ethtype value
+ // LldpEthType lldp ethtype value
LldpEthType = 0x88cc
- //IPv4EthType IPv4 ethernet type value
+ // IPv4EthType IPv4 ethernet type value
IPv4EthType = 0x800
- //PPPoEDEthType PPPoE discovery ethernet type value
+ // PPPoEDEthType PPPoE discovery ethernet type value
PPPoEDEthType = 0x8863
- //ReservedVlan Transparent Vlan (Masked Vlan, VLAN_ANY in ONOS Flows)
+ // ReservedVlan Transparent Vlan (Masked Vlan, VLAN_ANY in ONOS Flows)
ReservedVlan = 4096
- //DefaultMgmtVlan default vlan value
+ // DefaultMgmtVlan default vlan value
DefaultMgmtVlan = 4091
// Openolt Flow
- //Upstream constant
+ // Upstream constant
Upstream = "upstream"
- //Downstream constant
+ // Downstream constant
Downstream = "downstream"
- //Multicast constant
+ // Multicast constant
Multicast = "multicast"
- //PacketTagType constant
+ // PacketTagType constant
PacketTagType = "pkt_tag_type"
- //Untagged constant
+ // Untagged constant
Untagged = "untagged"
- //SingleTag constant
+ // SingleTag constant
SingleTag = "single_tag"
- //DoubleTag constant
+ // DoubleTag constant
DoubleTag = "double_tag"
// classifierInfo
- //EthType constant
+ // EthType constant
EthType = "eth_type"
- //EthDst constant
+ // EthDst constant
EthDst = "eth_dst"
- //EthSrc constant
+ // EthSrc constant
EthSrc = "eth_src"
- //TPID constant
+ // TPID constant
TPID = "tpid"
- //IPProto constant
+ // IPProto constant
IPProto = "ip_proto"
- //InPort constant
+ // InPort constant
InPort = "in_port"
- //VlanVid constant
+ // VlanVid constant
VlanVid = "vlan_vid"
- //VlanPcp constant
+ // VlanPcp constant
VlanPcp = "vlan_pcp"
- //UDPDst constant
+ // UDPDst constant
UDPDst = "udp_dst"
- //UDPSrc constant
+ // UDPSrc constant
UDPSrc = "udp_src"
- //Ipv4Dst constant
+ // Ipv4Dst constant
Ipv4Dst = "ipv4_dst"
- //Ipv4Src constant
+ // Ipv4Src constant
Ipv4Src = "ipv4_src"
- //Metadata constant
+ // Metadata constant
Metadata = "metadata"
- //TunnelID constant
+ // TunnelID constant
TunnelID = "tunnel_id"
- //Output constant
+ // Output constant
Output = "output"
- //GroupID constant
+ // GroupID constant
GroupID = "group_id"
// Actions
- //PopVlan constant
+ // PopVlan constant
PopVlan = "pop_vlan"
- //PushVlan constant
+ // PushVlan constant
PushVlan = "push_vlan"
- //TrapToHost constant
+ // TrapToHost constant
TrapToHost = "trap_to_host"
- //MaxMeterBand constant
+ // MaxMeterBand constant
MaxMeterBand = 2
- //VlanPCPMask contant
+ // VlanPCPMask contant
VlanPCPMask = 0xFF
- //VlanvIDMask constant
+ // VlanvIDMask constant
VlanvIDMask = 0xFFF
- //IntfID constant
+ // IntfID constant
IntfID = "intfId"
- //OnuID constant
+ // OnuID constant
OnuID = "onuId"
- //UniID constant
+ // UniID constant
UniID = "uniId"
- //PortNo constant
+ // PortNo constant
PortNo = "portNo"
- //AllocID constant
+ // AllocID constant
AllocID = "allocId"
- //GemID constant
+ // GemID constant
GemID = "gemId"
- //NoneOnuID constant
+ // NoneOnuID constant
NoneOnuID = -1
- //NoneUniID constant
+ // NoneUniID constant
NoneUniID = -1
// Max number of flows that can be queued per ONU
@@ -160,30 +160,30 @@
)
type schedQueue struct {
+ tpInst interface{}
+ flowMetadata *ofp.FlowMetadata
direction tp_pb.Direction
intfID uint32
onuID uint32
uniID uint32
tpID uint32
uniPort uint32
- tpInst interface{}
meterID uint32
- flowMetadata *ofp.FlowMetadata
}
type flowContext struct {
+ classifier map[string]interface{}
+ action map[string]interface{}
+ logicalFlow *ofp.OfpFlowStats
+ pbitToGem map[uint32]uint32
+ gemToAes map[uint32]bool
intfID uint32
onuID uint32
uniID uint32
portNo uint32
- classifier map[string]interface{}
- action map[string]interface{}
- logicalFlow *ofp.OfpFlowStats
allocID uint32
gemPortID uint32
tpID uint32
- pbitToGem map[uint32]uint32
- gemToAes map[uint32]bool
}
// This control block is created per flow add/remove and pushed on the incomingFlows channel slice
@@ -192,28 +192,29 @@
// flow and processes it serially
type flowControlBlock struct {
ctx context.Context // Flow handler context
- addFlow bool // if true flow to be added, else removed
flow *ofp.OfpFlowStats // Flow message
flowMetadata *ofp.FlowMetadata // FlowMetadata that contains flow meter information. This can be nil for Flow remove
errChan *chan error // channel to report the Flow handling error
+ addFlow bool // if true flow to be added, else removed
}
// OpenOltFlowMgr creates the Structure of OpenOltFlowMgr obj
type OpenOltFlowMgr struct {
- ponPortIdx uint32 // Pon Port this FlowManager is responsible for
techprofile tp.TechProfileIf
deviceHandler *DeviceHandler
grpMgr *OpenOltGroupMgr
resourceMgr *rsrcMgr.OpenOltResourceMgr
- packetInGemPort map[rsrcMgr.PacketInInfoKey]uint32 //packet in gem port local cache
- packetInGemPortLock sync.RWMutex
+ packetInGemPort map[rsrcMgr.PacketInInfoKey]uint32 // packet in gem port local cache
// Slice of channels. Each channel in slice, index by ONU ID, queues flows per ONU.
// A go routine per ONU, waits on the unique channel (indexed by ONU ID) for incoming flows (add/remove)
incomingFlows []chan flowControlBlock
stopFlowHandlerRoutine []chan bool
flowHandlerRoutineActive []bool
+ packetInGemPortLock sync.RWMutex
+
+ ponPortIdx uint32 // Pon Port this FlowManager is responsible for
}
// CloseKVClient closes open KV clients
@@ -257,7 +258,7 @@
go flowMgr.perOnuFlowHandlerRoutine(i, flowMgr.incomingFlows[i], flowMgr.stopFlowHandlerRoutine[i])
}
- //load interface to multicast queue map from kv store
+ // load interface to multicast queue map from kv store
flowMgr.grpMgr.LoadInterfaceToMulticastQueueMap(ctx)
logger.Info(ctx, "initialization-of-flow-manager-success")
return &flowMgr
@@ -354,7 +355,6 @@
// CreateSchedulerQueues creates traffic schedulers on the device with the given scheduler configuration and traffic shaping info
// nolint: gocyclo
func (f *OpenOltFlowMgr) CreateSchedulerQueues(ctx context.Context, sq schedQueue) error {
-
logger.Debugw(ctx, "CreateSchedulerQueues",
log.Fields{"dir": sq.direction,
"intf-id": sq.intfID,
@@ -516,7 +516,7 @@
UniId: sq.uniID, PortNo: sq.uniPort,
TrafficQueues: trafficQueues,
TechProfileId: TrafficSched[0].TechProfileId}
- if _, err := f.deviceHandler.Client.CreateTrafficQueues(ctx, queues); err != nil {
+ if _, err = f.deviceHandler.Client.CreateTrafficQueues(ctx, queues); err != nil {
if len(queues.TrafficQueues) > 1 {
logger.Debug(ctx, "removing-queues-for-1tcont-multi-gem", log.Fields{"intfID": sq.intfID, "onuID": sq.onuID, "dir": sq.direction})
_, _ = f.deviceHandler.Client.RemoveTrafficQueues(ctx, queues)
@@ -583,9 +583,9 @@
if sq.direction == tp_pb.Direction_DOWNSTREAM {
multicastTrafficQueues := f.techprofile.GetMulticastTrafficQueues(ctx, sq.tpInst.(*tp_pb.TechProfileInstance))
if len(multicastTrafficQueues) > 0 {
- if _, present := f.grpMgr.GetInterfaceToMcastQueueMap(sq.intfID); !present { //assumed that there is only one queue per PON for the multicast service
- //the default queue with multicastQueuePerPonPort.Priority per a pon interface is used for multicast service
- //just put it in interfaceToMcastQueueMap to use for building group members
+ if _, present := f.grpMgr.GetInterfaceToMcastQueueMap(sq.intfID); !present { // assumed that there is only one queue per PON for the multicast service
+ // the default queue with multicastQueuePerPonPort.Priority per a pon interface is used for multicast service
+ // just put it in interfaceToMcastQueueMap to use for building group members
logger.Debugw(ctx, "multicast-traffic-queues", log.Fields{"device-id": f.deviceHandler.device.Id})
multicastQueuePerPonPort := multicastTrafficQueues[0]
val := &QueueInfoBrief{
@@ -593,7 +593,7 @@
servicePriority: multicastQueuePerPonPort.Priority,
}
f.grpMgr.UpdateInterfaceToMcastQueueMap(sq.intfID, val)
- //also store the queue info in kv store
+ // also store the queue info in kv store
if err := f.resourceMgr.AddMcastQueueForIntf(ctx, multicastQueuePerPonPort.GemportId, multicastQueuePerPonPort.Priority); err != nil {
logger.Errorw(ctx, "failed-to-add-mcast-queue", log.Fields{"err": err})
return err
@@ -694,7 +694,7 @@
// Delete the TCONT on the ONU.
uni := getUniPortPath(f.deviceHandler.device.Id, sq.intfID, int32(sq.onuID), int32(sq.uniID))
tpPath := f.getTPpath(ctx, uni, sq.tpID)
- if err := f.sendDeleteTcontToChild(ctx, sq.intfID, sq.onuID, sq.uniID, allocID, tpPath); err != nil {
+ if err = f.sendDeleteTcontToChild(ctx, sq.intfID, sq.onuID, sq.uniID, allocID, tpPath); err != nil {
logger.Errorw(ctx, "error-processing-delete-tcont-towards-onu",
log.Fields{
"intf": sq.intfID,
@@ -716,9 +716,7 @@
// We ignore any errors encountered in the process. The errors most likely are encountered when
// the schedulers and queues are already cleared for the given key.
func (f *OpenOltFlowMgr) forceRemoveSchedulerQueues(ctx context.Context, sq schedQueue) {
-
var schedCfg *tp_pb.SchedulerConfig
- var err error
logger.Infow(ctx, "removing-schedulers-and-queues-in-olt",
log.Fields{
"direction": sq.direction,
@@ -764,7 +762,6 @@
"tp-id": sq.tpID,
"device-id": f.deviceHandler.device.Id,
"err": err})
-
} else {
logger.Infow(ctx, "removed-traffic-queues-successfully", log.Fields{"device-id": f.deviceHandler.device.Id,
"direction": sq.direction,
@@ -777,7 +774,7 @@
}
// Remove traffic schedulers. Ignore any errors, just log them.
- if _, err = f.deviceHandler.Client.RemoveTrafficSchedulers(ctx, &tp_pb.TrafficSchedulers{
+ if _, err := f.deviceHandler.Client.RemoveTrafficSchedulers(ctx, &tp_pb.TrafficSchedulers{
IntfId: sq.intfID, OnuId: sq.onuID,
UniId: sq.uniID, PortNo: sq.uniPort,
TrafficScheds: TrafficSched}); err != nil {
@@ -938,7 +935,6 @@
}
func (f *OpenOltFlowMgr) storeTcontsGEMPortsIntoKVStore(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, allocID []uint32, gemPortIDs []uint32) {
-
logger.Debugw(ctx, "storing-allocated-tconts-and-gem-ports-into-KV-store",
log.Fields{
"intf-id": intfID,
@@ -1039,7 +1035,6 @@
}
func (f *OpenOltFlowMgr) addSymmetricDataPathFlow(ctx context.Context, flowContext *flowContext, direction string) error {
-
intfID := flowContext.intfID
onuID := flowContext.onuID
uniID := flowContext.uniID
@@ -1134,7 +1129,6 @@
}
func (f *OpenOltFlowMgr) addDHCPTrapFlow(ctx context.Context, flowContext *flowContext) error {
-
intfID := flowContext.intfID
onuID := flowContext.onuID
uniID := flowContext.uniID
@@ -1233,7 +1227,6 @@
// addUpstreamTrapFlow creates a trap-to-host flow
func (f *OpenOltFlowMgr) addUpstreamTrapFlow(ctx context.Context, flowContext *flowContext) error {
-
intfID := flowContext.intfID
onuID := flowContext.onuID
uniID := flowContext.uniID
@@ -1363,7 +1356,7 @@
log.Fields{"intf-id": intfID, "onu-id": onuID, "flow-id": logicalFlow.Id})
return err
}
- //Add Uplink EthType Flow
+ // Add Uplink EthType Flow
logger.Debugw(ctx, "creating-ul-ethType-flow",
log.Fields{
"ul_classifier": uplinkClassifier,
@@ -1454,7 +1447,7 @@
vid := uint32(metadata)
// Set the OVid or IVid classifier based on the whether OLT is using a transparent tag or not
// If OLT is using transparent tag mechanism, then it classifies whatever tag it sees to/from ONU which
- //is OVid from the perspective of the OLT. When OLT also places or pops the outer tag, then classifierInfo[Metadata]
+ // is OVid from the perspective of the OLT. When OLT also places or pops the outer tag, then classifierInfo[Metadata]
// becomes the IVid.
if classifier.OVid != 0 && classifier.OVid != ReservedVlan { // This is case when classifier.OVid is not set
if vid != ReservedVlan {
@@ -1492,6 +1485,8 @@
return &classifier, nil
}
+// nolint: unparam
+// TODO: Improvise the function & remove the unparam lint, currently it is always returning 'nil' as error.
func makeOpenOltActionField(actionInfo map[string]interface{}, classifierInfo map[string]interface{}) (*openoltpb2.Action, error) {
var actionCmd openoltpb2.ActionCmd
var action openoltpb2.Action
@@ -1559,7 +1554,6 @@
uniPortName := getUniPortPath(f.deviceHandler.device.Id, intfID, int32(onuID), int32(uniID))
for _, tpID := range tpIDList {
-
// Force cleanup scheduler/queues -- start
uniPortNum := plt.MkUniPortNum(ctx, intfID, onuID, uniID)
uni := getUniPortPath(f.deviceHandler.device.Id, intfID, int32(onuID), int32(uniID))
@@ -1605,7 +1599,6 @@
}
func (f *OpenOltFlowMgr) addFlowToDevice(ctx context.Context, logicalFlow *ofp.OfpFlowStats, deviceFlow *openoltpb2.Flow) error {
-
var intfID uint32
/* For flows which trap out of the NNI, the AccessIntfId is invalid
(set to -1). In such cases, we need to refer to the NetworkIntfId .
@@ -1668,11 +1661,10 @@
"err": err,
"deviceFlow": deviceFlow,
"device-id": f.deviceHandler.device.Id})
- //Assume the flow is removed
+ // Assume the flow is removed
return nil
}
return olterrors.NewErrFlowOp("remove", deviceFlow.FlowId, log.Fields{"deviceFlow": deviceFlow}, err)
-
}
logger.Infow(ctx, "flow-removed-from-device-successfully", log.Fields{
"of-flow-id": ofFlowID,
@@ -1683,7 +1675,6 @@
}
func (f *OpenOltFlowMgr) addLLDPFlow(ctx context.Context, flow *ofp.OfpFlowStats, portNo uint32) error {
-
classifierInfo := make(map[string]interface{})
actionInfo := make(map[string]interface{})
@@ -1794,7 +1785,7 @@
"device-id": f.deviceHandler.device.Id}, err)
}
onuDev = NewOnuDevice(onuDevice.Id, onuDevice.Type, onuDevice.SerialNumber, onuDevice.ProxyAddress.OnuId, onuDevice.ProxyAddress.ChannelId, onuDevice.ProxyAddress.DeviceId, false, onuDevice.AdapterEndpoint)
- //better to ad the device to cache here.
+ // better to ad the device to cache here.
f.deviceHandler.StoreOnuDevice(onuDev.(*OnuDevice))
} else {
logger.Debugw(ctx, "found-onu-in-cache",
@@ -1904,7 +1895,6 @@
"onu-id": onuDev.deviceID,
"proxyDeviceID": onuDev.proxyDeviceID,
"device-id": f.deviceHandler.device.Id}, err)
-
}
logger.Infow(ctx, "success-sending-del-tcont-to-onu-adapter",
log.Fields{
@@ -1918,7 +1908,6 @@
// nolint: gocyclo
func (f *OpenOltFlowMgr) clearResources(ctx context.Context, intfID uint32, onuID int32, uniID int32,
flowID uint64, portNum uint32, tpID uint32, sendDeleteGemRequest bool) error {
-
logger.Debugw(ctx, "clearing-resources", log.Fields{"intfID": intfID, "onuID": onuID, "uniID": uniID, "tpID": tpID})
uni := getUniPortPath(f.deviceHandler.device.Id, intfID, onuID, uniID)
@@ -2005,15 +1994,14 @@
"device-id": f.deviceHandler.device.Id,
"gemport-id": gemPortID})
}
-
}
// Remove queues at OLT in upstream and downstream direction
- schedQueue := schedQueue{direction: tp_pb.Direction_UPSTREAM, intfID: intfID, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst}
- if err := f.RemoveQueues(ctx, schedQueue); err != nil {
+ schedQ := schedQueue{tpInst: techprofileInst, direction: tp_pb.Direction_UPSTREAM, intfID: intfID, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum}
+ if err := f.RemoveQueues(ctx, schedQ); err != nil {
logger.Warn(ctx, err)
}
- schedQueue.direction = tp_pb.Direction_DOWNSTREAM
- if err := f.RemoveQueues(ctx, schedQueue); err != nil {
+ schedQ.direction = tp_pb.Direction_DOWNSTREAM
+ if err := f.RemoveQueues(ctx, schedQ); err != nil {
logger.Warn(ctx, err)
}
}
@@ -2021,12 +2009,12 @@
switch techprofileInst := techprofileInst.(type) {
case *tp_pb.TechProfileInstance:
// Proceed to free allocid and cleanup schedulers (US/DS) if no other references are found for this TP across all the UNIs on the ONU
- schedQueue := schedQueue{direction: tp_pb.Direction_UPSTREAM, intfID: intfID, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst}
- allocExists := f.isAllocUsedByAnotherUNI(ctx, schedQueue)
+ schedQ := schedQueue{direction: tp_pb.Direction_UPSTREAM, intfID: intfID, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst}
+ allocExists := f.isAllocUsedByAnotherUNI(ctx, schedQ)
if !allocExists {
// all alloc object references removed, remove upstream scheduler
if KvStoreMeter, _ := f.resourceMgr.GetMeterInfoForOnu(ctx, "upstream", uint32(onuID), uint32(uniID), tpID); KvStoreMeter != nil {
- if err := f.RemoveScheduler(ctx, schedQueue); err != nil {
+ if err := f.RemoveScheduler(ctx, schedQ); err != nil {
logger.Warn(ctx, err)
}
}
@@ -2035,7 +2023,7 @@
} else {
// just remove meter reference for the upstream direction for the current pon/onu/uni
// The upstream scheduler, alloc id and meter-reference for the last remaining pon/onu/uni will be removed when no other alloc references that TP
- if err := f.removeMeterReference(ctx, "upstream", schedQueue); err != nil {
+ if err := f.removeMeterReference(ctx, "upstream", schedQ); err != nil {
return err
}
// setting 'freeFromResourcePool' to false in resourceMgr.FreeAllocID will only remove alloc-id data for the given pon/onu/uni
@@ -2044,9 +2032,9 @@
}
// Downstream scheduler removal is simple, just invoke RemoveScheduler without all the complex handling we do for the alloc object.
- schedQueue.direction = tp_pb.Direction_DOWNSTREAM
+ schedQ.direction = tp_pb.Direction_DOWNSTREAM
if KvStoreMeter, _ := f.resourceMgr.GetMeterInfoForOnu(ctx, "downstream", uint32(onuID), uint32(uniID), tpID); KvStoreMeter != nil {
- if err := f.RemoveScheduler(ctx, schedQueue); err != nil {
+ if err := f.RemoveScheduler(ctx, schedQ); err != nil {
logger.Warn(ctx, err)
}
}
@@ -2094,7 +2082,7 @@
f.resourceMgr.FreeGemPortID(ctx, uint32(onuID), uint32(uniID), gemPort.GemportId)
}
}
- //Delete the tp instance and the techprofileid for onu at the end
+ // Delete the tp instance and the techprofileid for onu at the end
if err := f.DeleteTechProfileInstance(ctx, intfID, uint32(onuID), uint32(uniID), "", tpID); err != nil {
logger.Warn(ctx, err)
}
@@ -2191,7 +2179,6 @@
// RemoveFlow removes the flow from the device
func (f *OpenOltFlowMgr) RemoveFlow(ctx context.Context, flow *ofp.OfpFlowStats) error {
-
logger.Infow(ctx, "removing-flow", log.Fields{"flow": *flow})
var direction string
actionInfo := make(map[string]interface{})
@@ -2482,13 +2469,13 @@
return olterrors.NewErrFlowOp("add", flow.Id, log.Fields{"flow": multicastFlow}, err)
}
logger.Info(ctx, "multicast-flow-added-to-device-successfully")
- //get cached group
+ // get cached group
if group, _, err := f.grpMgr.getFlowGroupFromKVStore(ctx, groupID, true); err == nil {
- //calling groupAdd to set group members after multicast flow creation
+ // calling groupAdd to set group members after multicast flow creation
if err := f.grpMgr.ModifyGroup(ctx, group); err != nil {
return olterrors.NewErrGroupOp("modify", groupID, log.Fields{"group": group}, err)
}
- //cached group can be removed now
+ // cached group can be removed now
if err := f.resourceMgr.RemoveFlowGroupFromKVStore(ctx, groupID, true); err != nil {
logger.Warnw(ctx, "failed-to-remove-flow-group", log.Fields{"group-id": groupID, "err": err})
}
@@ -2513,7 +2500,6 @@
// sendTPDownloadMsgToChild send payload
func (f *OpenOltFlowMgr) sendTPDownloadMsgToChild(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, uni string, TpID uint32, tpInst tp_pb.TechProfileInstance) error {
-
onuDev, err := f.getOnuDevice(ctx, intfID, onuID)
if err != nil {
logger.Errorw(ctx, "couldnt-find-onu-child-device",
@@ -2601,7 +2587,7 @@
return gemPortID, nil
}
- //If gem is not found in cache try to get it from kv store, if found in kv store, update the cache and return.
+ // If gem is not found in cache try to get it from kv store, if found in kv store, update the cache and return.
gemPortID, err = f.resourceMgr.GetGemPortFromOnuPktIn(ctx, pktInkey)
if err == nil {
if gemPortID != 0 {
@@ -2619,7 +2605,6 @@
log.Fields{
"pktinkey": pktInkey,
"gem": gemPortID}, err)
-
}
func (f *OpenOltFlowMgr) addTrapFlowOnNNI(ctx context.Context, logicalFlow *ofp.OfpFlowStats, classifier map[string]interface{}, portNo uint32) error {
@@ -2872,8 +2857,7 @@
}
}
- flowContext := &flowContext{intfID, onuID, uniID, portNo, classifierInfo, actionInfo,
- flow, allocID, gemPortID, tpID, pbitToGem, gemToAes}
+ flowContext := &flowContext{classifierInfo, actionInfo, flow, pbitToGem, gemToAes, intfID, onuID, uniID, portNo, allocID, gemPortID, tpID}
if ipProto, ok := classifierInfo[IPProto]; ok {
if ipProto.(uint32) == IPProtoDhcp {
@@ -2884,14 +2868,13 @@
"onu-id": onuID,
"uni-id": uniID,
})
- //Adding DHCP upstream flow
+ // Adding DHCP upstream flow
if err := f.addDHCPTrapFlow(ctx, flowContext); err != nil {
logger.Warn(ctx, err)
logger.Errorw(ctx, "reverting-scheduler-and-queue-for-onu", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID, "flow-id": flow.Id, "tp-id": tpID})
_ = f.clearResources(ctx, intfID, int32(onuID), int32(uniID), flow.Id, portNo, tpID, false)
return err
}
-
} else if ipProto.(uint32) == IgmpProto {
logger.Infow(ctx, "adding-us-igmp-flow",
log.Fields{
@@ -2937,7 +2920,7 @@
"onu-id": onuID,
"uni-id": uniID,
})
- //Adding PPPOED upstream flow
+ // Adding PPPOED upstream flow
if err := f.addUpstreamTrapFlow(ctx, flowContext); err != nil {
logger.Warn(ctx, err)
logger.Errorw(ctx, "reverting-scheduler-and-queue-for-onu", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID, "flow-id": flow.Id, "tp-id": tpID})
@@ -2951,7 +2934,7 @@
"onu-id": onuID,
"uni-id": uniID,
})
- //Adding HSIA upstream flow
+ // Adding HSIA upstream flow
if err := f.addUpstreamDataPathFlow(ctx, flowContext); err != nil {
logger.Warn(ctx, err)
logger.Errorw(ctx, "reverting-scheduler-and-queue-for-onu", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID, "flow-id": flow.Id, "tp-id": tpID})
@@ -2964,7 +2947,7 @@
"onu-id": onuID,
"uni-id": uniID,
})
- //Adding HSIA downstream flow
+ // Adding HSIA downstream flow
if err := f.addDownstreamDataPathFlow(ctx, flowContext); err != nil {
logger.Warn(ctx, err)
logger.Errorw(ctx, "reverting-scheduler-and-queue-for-onu", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID, "flow-id": flow.Id, "tp-id": tpID})
@@ -3228,7 +3211,6 @@
// getNniIntfID gets nni intf id from the flow classifier/action
func getNniIntfID(ctx context.Context, classifier map[string]interface{}, action map[string]interface{}) (uint32, error) {
-
portType := plt.IntfIDToPortTypeName(classifier[InPort].(uint32))
if portType == voltha.Port_PON_OLT {
intfID, err := plt.IntfIDFromNniPortNum(ctx, action[Output].(uint32))
@@ -3309,7 +3291,7 @@
index = 14
}
priority := (packet[index] >> 5) & 0x7
- //13 bits composes vlanId value
+ // 13 bits composes vlanId value
vlan := ((uint16(packet[index]) << 8) & 0x0fff) | uint16(packet[index+1])
return vlan, priority, nil
}
@@ -3375,7 +3357,6 @@
// revertTechProfileInstance is called when CreateScheduler or CreateQueues request fails
func (f *OpenOltFlowMgr) revertTechProfileInstance(ctx context.Context, sq schedQueue) {
-
intfID := sq.intfID
onuID := sq.onuID
uniID := sq.uniID
diff --git a/internal/pkg/core/openolt_flowmgr_test.go b/internal/pkg/core/openolt_flowmgr_test.go
index 7e27afb..ca64bdd 100644
--- a/internal/pkg/core/openolt_flowmgr_test.go
+++ b/internal/pkg/core/openolt_flowmgr_test.go
@@ -85,30 +85,30 @@
wantErr bool
}{
// TODO: Add test cases.
- {"CreateSchedulerQueues-1", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 1, createFlowMetadata(tprofile, 1, Upstream)}, false},
- {"CreateSchedulerQueues-2", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 1, createFlowMetadata(tprofile2, 1, Downstream)}, false},
- {"CreateSchedulerQueues-13", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 1, createFlowMetadata(tprofile, 2, Upstream)}, false},
- {"CreateSchedulerQueues-14", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 1, createFlowMetadata(tprofile2, 2, Downstream)}, false},
- {"CreateSchedulerQueues-15", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 1, createFlowMetadata(tprofile, 3, Upstream)}, false},
- {"CreateSchedulerQueues-16", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 1, createFlowMetadata(tprofile2, 3, Downstream)}, false},
- {"CreateSchedulerQueues-17", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 1, createFlowMetadata(tprofile, 4, Upstream)}, false},
- {"CreateSchedulerQueues-18", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 1, createFlowMetadata(tprofile2, 4, Downstream)}, false},
- {"CreateSchedulerQueues-19", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 1, createFlowMetadata(tprofile, 5, Upstream)}, false},
- {"CreateSchedulerQueues-20", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 1, createFlowMetadata(tprofile2, 5, Downstream)}, false},
+ {"CreateSchedulerQueues-1", schedQueue{tprofile, createFlowMetadata(tprofile, 1, Upstream), tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 1}, false},
+ {"CreateSchedulerQueues-2", schedQueue{tprofile2, createFlowMetadata(tprofile2, 1, Downstream), tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 1}, false},
+ {"CreateSchedulerQueues-13", schedQueue{tprofile, createFlowMetadata(tprofile, 2, Upstream), tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 1}, false},
+ {"CreateSchedulerQueues-14", schedQueue{tprofile2, createFlowMetadata(tprofile2, 2, Downstream), tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 1}, false},
+ {"CreateSchedulerQueues-15", schedQueue{tprofile, createFlowMetadata(tprofile, 3, Upstream), tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 1}, false},
+ {"CreateSchedulerQueues-16", schedQueue{tprofile2, createFlowMetadata(tprofile2, 3, Downstream), tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 1}, false},
+ {"CreateSchedulerQueues-17", schedQueue{tprofile, createFlowMetadata(tprofile, 4, Upstream), tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 1}, false},
+ {"CreateSchedulerQueues-18", schedQueue{tprofile2, createFlowMetadata(tprofile2, 4, Downstream), tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 1}, false},
+ {"CreateSchedulerQueues-19", schedQueue{tprofile, createFlowMetadata(tprofile, 5, Upstream), tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 1}, false},
+ {"CreateSchedulerQueues-20", schedQueue{tprofile2, createFlowMetadata(tprofile2, 5, Downstream), tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 1}, false},
- //Negative testcases
- {"CreateSchedulerQueues-1", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 1, createFlowMetadata(tprofile, 0, Upstream)}, true},
- {"CreateSchedulerQueues-2", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 1, createFlowMetadata(tprofile2, 0, Downstream)}, true},
- {"CreateSchedulerQueues-3", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 2, createFlowMetadata(tprofile, 2, Upstream)}, true},
- {"CreateSchedulerQueues-4", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 2, createFlowMetadata(tprofile2, 2, Downstream)}, true},
- {"CreateSchedulerQueues-5", schedQueue{tp_pb.Direction_UPSTREAM, 1, 2, 2, 64, 2, tprofile, 2, createFlowMetadata(tprofile, 3, Upstream)}, true},
- {"CreateSchedulerQueues-6", schedQueue{tp_pb.Direction_DOWNSTREAM, 1, 2, 2, 65, 2, tprofile2, 2, createFlowMetadata(tprofile2, 3, Downstream)}, true},
- {"CreateSchedulerQueues-7", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 1, &ofp.FlowMetadata{}}, true},
- {"CreateSchedulerQueues-8", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 0, &ofp.FlowMetadata{}}, true},
- {"CreateSchedulerQueues-9", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 1, &ofp.FlowMetadata{}}, true},
- {"CreateSchedulerQueues-10", schedQueue{tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, tprofile, 2, &ofp.FlowMetadata{}}, true},
- {"CreateSchedulerQueues-11", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 2, &ofp.FlowMetadata{}}, true},
- {"CreateSchedulerQueues-12", schedQueue{tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, tprofile2, 2, nil}, true},
+ // Negative testcases
+ {"CreateSchedulerQueues-1", schedQueue{tprofile, createFlowMetadata(tprofile, 0, Upstream), tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 1}, true},
+ {"CreateSchedulerQueues-2", schedQueue{tprofile2, createFlowMetadata(tprofile2, 0, Downstream), tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 1}, true},
+ {"CreateSchedulerQueues-3", schedQueue{tprofile, createFlowMetadata(tprofile, 2, Upstream), tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 2}, true},
+ {"CreateSchedulerQueues-4", schedQueue{tprofile2, createFlowMetadata(tprofile2, 2, Downstream), tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 2}, true},
+ {"CreateSchedulerQueues-5", schedQueue{tprofile, createFlowMetadata(tprofile, 3, Upstream), tp_pb.Direction_UPSTREAM, 1, 2, 2, 64, 2, 2}, true},
+ {"CreateSchedulerQueues-6", schedQueue{tprofile2, createFlowMetadata(tprofile2, 3, Downstream), tp_pb.Direction_DOWNSTREAM, 1, 2, 2, 65, 2, 2}, true},
+ {"CreateSchedulerQueues-7", schedQueue{tprofile, &ofp.FlowMetadata{}, tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 1}, true},
+ {"CreateSchedulerQueues-8", schedQueue{tprofile, &ofp.FlowMetadata{}, tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 0}, true},
+ {"CreateSchedulerQueues-9", schedQueue{tprofile2, &ofp.FlowMetadata{}, tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 1}, true},
+ {"CreateSchedulerQueues-10", schedQueue{tprofile, &ofp.FlowMetadata{}, tp_pb.Direction_UPSTREAM, 0, 1, 1, 64, 1, 2}, true},
+ {"CreateSchedulerQueues-11", schedQueue{tprofile2, &ofp.FlowMetadata{}, tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 2}, true},
+ {"CreateSchedulerQueues-12", schedQueue{tprofile2, nil, tp_pb.Direction_DOWNSTREAM, 0, 1, 1, 65, 1, 2}, true},
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@@ -126,26 +126,26 @@
bands := make([]*ofp.OfpMeterBandHeader, 0)
switch tcontType {
case 1:
- //tcont-type-1
+ // tcont-type-1
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 10000, BurstSize: 0, Data: &ofp.OfpMeterBandHeader_Drop{}})
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 10000, BurstSize: 0, Data: &ofp.OfpMeterBandHeader_Drop{}})
additionalBw = tp_pb.AdditionalBW_AdditionalBW_None
case 2:
- //tcont-type-2
+ // tcont-type-2
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 60000, BurstSize: 10000, Data: &ofp.OfpMeterBandHeader_Drop{}})
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 50000, BurstSize: 10000, Data: &ofp.OfpMeterBandHeader_Drop{}})
additionalBw = tp_pb.AdditionalBW_AdditionalBW_None
case 3:
- //tcont-type-3
+ // tcont-type-3
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 100000, BurstSize: 10000, Data: &ofp.OfpMeterBandHeader_Drop{}})
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 50000, BurstSize: 20000, Data: &ofp.OfpMeterBandHeader_Drop{}})
additionalBw = tp_pb.AdditionalBW_AdditionalBW_NA
case 4:
- //tcont-type-4
+ // tcont-type-4
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 200000, BurstSize: 10000, Data: &ofp.OfpMeterBandHeader_Drop{}})
additionalBw = tp_pb.AdditionalBW_AdditionalBW_BestEffort
case 5:
- //tcont-type-5
+ // tcont-type-5
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 50000, BurstSize: 10000, Data: &ofp.OfpMeterBandHeader_Drop{}})
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 100000, BurstSize: 10000, Data: &ofp.OfpMeterBandHeader_Drop{}})
bands = append(bands, &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 10000, BurstSize: 0, Data: &ofp.OfpMeterBandHeader_Drop{}})
@@ -180,16 +180,16 @@
tprofile2.DsScheduler.Direction = tp_pb.Direction_DOWNSTREAM
tprofile2.DsScheduler.AdditionalBw = tp_pb.AdditionalBW_AdditionalBW_None
tprofile2.DsScheduler.QSchedPolicy = tp_pb.SchedulingPolicy_WRR
- //defTprofile := &tp.DefaultTechProfile{}
+ // defTprofile := &tp.DefaultTechProfile{}
tests := []struct {
name string
schedQueue schedQueue
wantErr bool
}{
- {"RemoveScheduler-1", schedQueue{tp_pb.Direction_UPSTREAM, 1, 1, 1, 64, 1, tprofile, 0, nil}, false},
- {"RemoveScheduler-2", schedQueue{tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, tprofile2, 0, nil}, false},
- {"RemoveScheduler-3", schedQueue{tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, tprofile2, 0, nil}, false},
- {"RemoveScheduler-4", schedQueue{tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, tprofile2, 0, nil}, false},
+ {"RemoveScheduler-1", schedQueue{tprofile, nil, tp_pb.Direction_UPSTREAM, 1, 1, 1, 64, 1, 0}, false},
+ {"RemoveScheduler-2", schedQueue{tprofile2, nil, tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, 0}, false},
+ {"RemoveScheduler-3", schedQueue{tprofile2, nil, tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, 0}, false},
+ {"RemoveScheduler-4", schedQueue{tprofile2, nil, tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, 0}, false},
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@@ -200,7 +200,6 @@
}
})
}
-
}
func TestOpenOltFlowMgr_RemoveQueues(t *testing.T) {
@@ -245,16 +244,16 @@
tprofile2.DownstreamGemPortAttributeList = make([]*tp_pb.GemPortAttributes, 0)
tprofile2.DownstreamGemPortAttributeList = append(tprofile.DownstreamGemPortAttributeList, &tp_pb.GemPortAttributes{GemportId: 1, PbitMap: "0b11111111"})
- //defTprofile := &tp.DefaultTechProfile{}
+ // defTprofile := &tp.DefaultTechProfile{}
tests := []struct {
name string
schedQueue schedQueue
wantErr bool
}{
- {"RemoveQueues-1", schedQueue{tp_pb.Direction_UPSTREAM, 1, 1, 1, 64, 1, tprofile, 0, nil}, false},
- {"RemoveQueues-2", schedQueue{tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, tprofile2, 0, nil}, false},
- {"RemoveQueues-3", schedQueue{tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, tprofile2, 0, nil}, false},
- {"RemoveQueues-4", schedQueue{tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, tprofile2, 0, nil}, false},
+ {"RemoveQueues-1", schedQueue{tprofile, nil, tp_pb.Direction_UPSTREAM, 1, 1, 1, 64, 1, 0}, false},
+ {"RemoveQueues-2", schedQueue{tprofile2, nil, tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, 0}, false},
+ {"RemoveQueues-3", schedQueue{tprofile2, nil, tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, 0}, false},
+ {"RemoveQueues-4", schedQueue{tprofile2, nil, tp_pb.Direction_DOWNSTREAM, 1, 1, 1, 65, 1, 0}, false},
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@@ -265,7 +264,6 @@
}
})
}
-
}
func TestOpenOltFlowMgr_createTcontGemports(t *testing.T) {
@@ -343,14 +341,14 @@
},
}
lldpofpstats, _ := fu.MkFlowStat(lldpFa)
- //lldpofpstats.Cookie = lldpofpstats.Id
+ // lldpofpstats.Cookie = lldpofpstats.Id
dhcpFa := &fu.FlowArgs{
KV: fu.OfpFlowModArgs{"priority": 1000, "cookie": 48132224281636694},
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(1),
fu.UdpSrc(67),
- //fu.TunnelId(536870912),
+ // fu.TunnelId(536870912),
fu.IpProto(17),
},
Actions: []*ofp.OfpAction{
@@ -358,16 +356,16 @@
},
}
dhcpofpstats, _ := fu.MkFlowStat(dhcpFa)
- //dhcpofpstats.Cookie = dhcpofpstats.Id
+ // dhcpofpstats.Cookie = dhcpofpstats.Id
- //multicast flow
+ // multicast flow
multicastFa := &fu.FlowArgs{
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(16777216),
- fu.VlanVid(660), //vlan
- fu.Metadata_ofp(uint64(66)), //inner vlan
- fu.EthType(0x800), //ipv4
- fu.Ipv4Dst(3809869825), //227.22.0.1
+ fu.VlanVid(660), // vlan
+ fu.Metadata_ofp(uint64(66)), // inner vlan
+ fu.EthType(0x800), // ipv4
+ fu.Ipv4Dst(3809869825), // 227.22.0.1
},
Actions: []*ofp.OfpAction{
fu.Group(1),
@@ -429,7 +427,7 @@
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT)),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(16777216),
fu.PushVlan(0x8100),
@@ -445,8 +443,8 @@
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
- //fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 101)),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 101)),
fu.PopVlan(),
fu.Output(536870912),
},
@@ -460,7 +458,7 @@
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT)),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 101)),
fu.Output(65533),
},
@@ -510,7 +508,7 @@
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT)),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(65535),
},
@@ -534,7 +532,7 @@
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(1),
fu.UdpSrc(67),
- //fu.TunnelId(536870912),
+ // fu.TunnelId(536870912),
fu.IpProto(17),
},
Actions: []*ofp.OfpAction{
@@ -546,7 +544,7 @@
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(1),
fu.UdpSrc(67),
- //fu.TunnelId(536870912),
+ // fu.TunnelId(536870912),
fu.IpProto(2),
},
Actions: []*ofp.OfpAction{
@@ -580,7 +578,7 @@
fu.Ipv4Src(536870912),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(65535),
},
@@ -600,20 +598,20 @@
fu.Ipv4Src(536870912),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(65535),
},
KV: kw6,
}
- //multicast flow
+ // multicast flow
fa11 := &fu.FlowArgs{
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(16777216),
- fu.VlanVid(660), //vlan
- fu.Metadata_ofp(uint64(66)), //inner vlan
- fu.EthType(0x800), //ipv4
- fu.Ipv4Dst(3809869825), //227.22.0.1
+ fu.VlanVid(660), // vlan
+ fu.Metadata_ofp(uint64(66)), // inner vlan
+ fu.EthType(0x800), // ipv4
+ fu.Ipv4Dst(3809869825), // 227.22.0.1
},
Actions: []*ofp.OfpAction{
fu.Group(1),
@@ -654,13 +652,13 @@
{"AddFlow", args{flow: ofpstats3, flowMetadata: flowMetadata}},
{"AddFlow", args{flow: ofpstats4, flowMetadata: flowMetadata}},
{"AddFlow", args{flow: ofpstats5, flowMetadata: flowMetadata}},
- //{"AddFlow", args{flow: ofpstats6, flowMetadata: flowMetadata}},
+ // {"AddFlow", args{flow: ofpstats6, flowMetadata: flowMetadata}},
{"AddFlow", args{flow: ofpstats7, flowMetadata: flowMetadata}},
{"AddFlow", args{flow: ofpstats8, flowMetadata: flowMetadata}},
- //{"AddFlow", args{flow: ofpstats9, flowMetadata: flowMetadata}},
+ // {"AddFlow", args{flow: ofpstats9, flowMetadata: flowMetadata}},
{"AddFlow", args{flow: igmpstats, flowMetadata: flowMetadata}},
- //{"AddFlow", args{flow: ofpstats10, flowMetadata: flowMetadata}},
- //ofpstats10
+ // {"AddFlow", args{flow: ofpstats10, flowMetadata: flowMetadata}},
+ // ofpstats10
{"AddFlow", args{flow: ofpstats11, flowMetadata: flowMetadata}},
{"AddFlow", args{flow: pppoedstats, flowMetadata: flowMetadata}},
}
@@ -695,7 +693,6 @@
defer cancel()
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
-
got, err := flowMgr[tt.args.packetIn.IntfId].GetLogicalPortFromPacketIn(ctx, tt.args.packetIn)
if (err != nil) != tt.wantErr {
t.Errorf("OpenOltFlowMgr.GetLogicalPortFromPacketIn() error = %v, wantErr %v", err, tt.wantErr)
@@ -712,21 +709,21 @@
// Create fresh flowMgr instance
flowMgr = newMockFlowmgr()
- //untagged packet in hex string
+ // untagged packet in hex string
untaggedStr := "01005e000002000000000001080046c00020000040000102fa140a000001e00000029404000017000705e10000fa"
untagged, err := hex.DecodeString(untaggedStr)
if err != nil {
t.Error("Unable to parse hex string", err)
panic(err)
}
- //single-tagged packet in hex string. vlanID.pbit: 1.1
+ // single-tagged packet in hex string. vlanID.pbit: 1.1
singleTaggedStr := "01005e0000010025ba48172481002001080046c0002000004000010257deab140023e0000001940400001164ee9b0000000000000000000000000000"
singleTagged, err := hex.DecodeString(singleTaggedStr)
if err != nil {
t.Error("Unable to parse hex string", err)
panic(err)
}
- //double-tagged packet in hex string. vlanID.pbit: 210.0-0.0
+ // double-tagged packet in hex string. vlanID.pbit: 210.0-0.0
doubleTaggedStr := "01005e000016deadbeefba118100021081000000080046000028000000000102c5b87f000001e0000016940400002200f8030000000104000000e10000fa"
doubleTagged, err := hex.DecodeString(doubleTaggedStr)
if err != nil {
@@ -758,16 +755,15 @@
defer cancel()
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
-
got, err := flowMgr[tt.args.intfID].GetPacketOutGemPortID(ctx, tt.args.intfID, tt.args.onuID, tt.args.portNum, tt.args.packet)
if tt.wantErr {
if err == nil {
- //error expected but got value
+ // error expected but got value
t.Errorf("OpenOltFlowMgr.GetPacketOutGemPortID() = %v, wantErr %v", got, tt.wantErr)
}
} else {
if err != nil {
- //error is not expected but got error
+ // error is not expected but got error
t.Errorf("OpenOltFlowMgr.GetPacketOutGemPortID() error = %v, wantErr %v", err, tt.wantErr)
return
}
@@ -823,7 +819,7 @@
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT)),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(16777216),
fu.PushVlan(0x8100),
@@ -841,7 +837,7 @@
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(16777216),
fu.PushVlan(0x8100),
@@ -854,11 +850,11 @@
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(536870912),
fu.Metadata_ofp(1),
- //fu.EthType(0x8100),
+ // fu.EthType(0x8100),
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT)),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT))),
fu.Output(16777216),
fu.PushVlan(0x8100),
@@ -874,7 +870,7 @@
fu.VlanPcp(1),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT))),
fu.Output(536870912),
fu.PopVlan(),
@@ -1137,21 +1133,21 @@
func TestOpenOltFlowMgr_TestMulticastFlowAndGroup(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
- //create group
+ // create group
group := newGroup(2, []uint32{1})
err := flowMgr[0].grpMgr.AddGroup(ctx, group)
if err != nil {
t.Error("group-add failed", err)
return
}
- //create multicast flow
+ // create multicast flow
multicastFlowArgs := &fu.FlowArgs{
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(16777216),
- fu.VlanVid(660), //vlan
- fu.Metadata_ofp(uint64(66)), //inner vlan
- fu.EthType(0x800), //ipv4
- fu.Ipv4Dst(3809869825), //227.22.0.1
+ fu.VlanVid(660), // vlan
+ fu.Metadata_ofp(uint64(66)), // inner vlan
+ fu.EthType(0x800), // ipv4
+ fu.Ipv4Dst(3809869825), // 227.22.0.1
},
Actions: []*ofp.OfpAction{
fu.Group(1),
@@ -1165,21 +1161,21 @@
return
}
- //add bucket to the group
+ // add bucket to the group
group = newGroup(2, []uint32{1, 2})
err = flowMgr[0].grpMgr.ModifyGroup(ctx, group)
if err != nil {
t.Error("modify-group failed", err)
return
}
- //remove the multicast flow
+ // remove the multicast flow
err = flowMgr[0].RemoveFlow(ctx, ofpStats)
if err != nil {
t.Error("Multicast flow-remove failed", err)
return
}
- //remove the group
+ // remove the group
err = flowMgr[0].grpMgr.DeleteGroup(ctx, group)
if err != nil {
t.Error("delete-group failed", err)
@@ -1260,7 +1256,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(2147483645),
fu.PushVlan(0x8100),
@@ -1279,7 +1275,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(2147483645),
fu.PushVlan(0x8100),
@@ -1292,12 +1288,12 @@
MatchFields: []*ofp.OfpOxmOfbField{
fu.InPort(536870912),
fu.Metadata_ofp(1),
- //fu.EthType(0x8100),
+ // fu.EthType(0x8100),
fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT)),
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT))),
fu.Output(16777216),
fu.PushVlan(0x8100),
@@ -1315,7 +1311,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT))),
fu.Output(536870912),
fu.PopVlan(),
@@ -1334,7 +1330,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 259)),
fu.Output(2147483645),
fu.PushVlan(0x8100),
@@ -1353,7 +1349,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(2147483645),
fu.PushVlan(0x8100),
@@ -1372,7 +1368,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(2147483645),
fu.PushVlan(0x8100),
@@ -1391,7 +1387,7 @@
fu.TunnelId(256),
},
Actions: []*ofp.OfpAction{
- //fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
+ // fu.SetField(fu.Metadata_ofp(uint64(ofp.OfpInstructionType_OFPIT_WRITE_METADATA | 2))),
fu.SetField(fu.VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 257)),
fu.Output(2147483645),
fu.PushVlan(0x8100),
diff --git a/internal/pkg/core/openolt_groupmgr.go b/internal/pkg/core/openolt_groupmgr.go
index 670eeaf..6da8475 100644
--- a/internal/pkg/core/openolt_groupmgr.go
+++ b/internal/pkg/core/openolt_groupmgr.go
@@ -99,7 +99,7 @@
logger.Errorw(ctx, "delete-group-failed-on-dev", log.Fields{"groupToOlt": groupToOlt, "err": err})
return olterrors.NewErrAdapter("delete-group-operation-failed", log.Fields{"groupToOlt": groupToOlt}, err)
}
- //remove group from the store
+ // remove group from the store
if err := g.resourceMgr.RemoveFlowGroupFromKVStore(ctx, group.Desc.GroupId, false); err != nil {
return olterrors.NewErrPersistence("delete", "flow-group", uint64(group.Desc.GroupId), log.Fields{"group": group}, err)
}
@@ -114,7 +114,7 @@
return olterrors.NewErrInvalidValue(log.Fields{"group": group}, nil)
}
newGroup := g.buildGroup(ctx, group.Desc.GroupId, group.Desc.Buckets)
- //get existing members of the group
+ // get existing members of the group
val, groupExists, err := g.getFlowGroupFromKVStore(ctx, group.Desc.GroupId, false)
if err != nil {
return olterrors.NewErrNotFound("flow-group-in-kv-store", log.Fields{"groupId": group.Desc.GroupId}, err)
@@ -149,16 +149,16 @@
if len(membersToBeAdded) > 0 {
groupToOlt.Command = openoltpb2.Group_ADD_MEMBERS
groupToOlt.Members = membersToBeAdded
- //execute addMembers
+ // execute addMembers
errAdd = g.callGroupAddRemove(ctx, &groupToOlt)
}
if len(membersToBeRemoved) > 0 {
groupToOlt.Command = openoltpb2.Group_REMOVE_MEMBERS
groupToOlt.Members = membersToBeRemoved
- //execute removeMembers
+ // execute removeMembers
errRemoved = g.callGroupAddRemove(ctx, &groupToOlt)
}
- //save the modified group
+ // save the modified group
if errAdd == nil && errRemoved == nil {
if err := g.resourceMgr.AddFlowGroupToKVStore(ctx, group, false); err != nil {
return olterrors.NewErrPersistence("add", "flow-group", uint64(group.Desc.GroupId), log.Fields{"group": group}, err)
@@ -252,7 +252,7 @@
var actionCmd openoltpb2.ActionCmd
var action openoltpb2.Action
action.Cmd = &actionCmd
- //pop outer vlan
+ // pop outer vlan
action.Cmd.RemoveOuterTag = true
return &action
}
@@ -261,7 +261,7 @@
func (g *OpenOltGroupMgr) callGroupAddRemove(ctx context.Context, group *openoltpb2.Group) error {
if err := g.performGroupOperation(ctx, group); err != nil {
st, _ := status.FromError(err)
- //ignore already exists error code
+ // ignore already exists error code
if st.Code() != codes.AlreadyExists {
return olterrors.NewErrGroupOp("groupAddRemove", group.GroupId, log.Fields{"status": st}, err)
}
@@ -346,7 +346,7 @@
GemPortId: groupInfo.gemPortID,
Priority: groupInfo.servicePriority,
}
- //add member to the group
+ // add member to the group
return &member
}
logger.Warnf(ctx, "bucket-skipped-since-interface-2-gem-mapping-cannot-be-found", log.Fields{"ofBucket": ofBucket})
diff --git a/internal/pkg/core/openolt_test.go b/internal/pkg/core/openolt_test.go
index 4b592ec..b2bcfb4 100644
--- a/internal/pkg/core/openolt_test.go
+++ b/internal/pkg/core/openolt_test.go
@@ -230,7 +230,7 @@
{"delete_device-1", &fields{}, args{oo1, mockDevice()},
olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": "olt"}, nil)},
{"delete_device-2", &fields{}, args{oo2, mockDevice()}, nil},
- {"delete_device-3", &fields{}, args{oo3, mockDevice()}, nil},
+ {"delete_device-3", &fields{}, args{oo3, mockDevice()}, errors.New("reboot failed")},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@@ -704,7 +704,6 @@
if _, err := oo.UpdatePmConfig(context.Background(), &ca.PmConfigsInfo{DeviceId: tt.args.device.Id, PmConfigs: tt.args.pmConfigs}); !reflect.DeepEqual(err, tt.wantErr) {
t.Errorf("Update_pm_config() error = %v, wantErr %v", err, tt.wantErr)
}
-
})
}
}
diff --git a/internal/pkg/core/statsmanager.go b/internal/pkg/core/statsmanager.go
old mode 100755
new mode 100644
index c9e15eb..1f9d7f9
--- a/internal/pkg/core/statsmanager.go
+++ b/internal/pkg/core/statsmanager.go
@@ -35,62 +35,62 @@
)
const (
- //NNIStats statType constant
+ // NNIStats statType constant
NNIStats = "NNIStats"
- //PONStats statType constant
+ // PONStats statType constant
PONStats = "PONStats"
- //ONUStats statType constant
+ // ONUStats statType constant
ONUStats = "ONUStats"
- //GEMStats statType constant
+ // GEMStats statType constant
GEMStats = "GEMStats"
- //RxBytes constant
+ // RxBytes constant
RxBytes = "RxBytes"
- //RxPackets constant
+ // RxPackets constant
RxPackets = "RxPackets"
- //TxBytes constant
+ // TxBytes constant
TxBytes = "TxBytes"
- //TxPackets constant
+ // TxPackets constant
TxPackets = "TxPackets"
- //FecCodewords constant
+ // FecCodewords constant
FecCodewords = "FecCodewords"
- //BipUnits constant
+ // BipUnits constant
BipUnits = "BipUnits"
- //BipErrors constant
+ // BipErrors constant
BipErrors = "BipErrors"
- //RxPloamsNonIdle constant
+ // RxPloamsNonIdle constant
RxPloamsNonIdle = "RxPloamsNonIdle"
- //RxPloamsError constant
+ // RxPloamsError constant
RxPloamsError = "RxPloamsError"
- //RxOmci constant
+ // RxOmci constant
RxOmci = "RxOmci"
- //RxOmciPacketsCrcError constant
+ // RxOmciPacketsCrcError constant
RxOmciPacketsCrcError = "RxOmciPacketsCrcError"
- //PositiveDrift constant
+ // PositiveDrift constant
PositiveDrift = "PositiveDrift"
- //NegativeDrift constant
+ // NegativeDrift constant
NegativeDrift = "NegativeDrift"
- //DelimiterMissDetection constant
+ // DelimiterMissDetection constant
DelimiterMissDetection = "DelimiterMissDetection"
- //FecCorrectedSymbols constant
+ // FecCorrectedSymbols constant
FecCorrectedSymbols = "FecCorrectedSymbols"
- //FecCodewordsCorrected constant
+ // FecCodewordsCorrected constant
FecCodewordsCorrected = "FecCodewordsCorrected"
- //fecCodewordsUncorrectable constant
+ // fecCodewordsUncorrectable constant
fecCodewordsUncorrectable = "fec_codewords_uncorrectable"
- //FecCorrectedUnits constant
+ // FecCorrectedUnits constant
FecCorrectedUnits = "FecCorrectedUnits"
- //XGEMKeyErrors constant
+ // XGEMKeyErrors constant
XGEMKeyErrors = "XGEMKeyErrors"
- //XGEMLoss constant
+ // XGEMLoss constant
XGEMLoss = "XGEMLOSS"
- //BerReported constant
+ // BerReported constant
BerReported = "BerReported"
- //LcdgErrors constant
+ // LcdgErrors constant
LcdgErrors = "LcdgErrors"
- //RdiErrors constant
+ // RdiErrors constant
RdiErrors = "RdiErrors"
- //Timestamp constant
+ // Timestamp constant
Timestamp = "Timestamp"
)
@@ -109,29 +109,12 @@
// PonPort representation
type PonPort struct {
- /*
- This is a highly reduced version taken from the adtran pon_port.
- TODO: Extend for use in the openolt adapter set.
- */
- /* MAX_ONUS_SUPPORTED = 256
- DEFAULT_ENABLED = False
- MAX_DEPLOYMENT_RANGE = 25000 # Meters (OLT-PB maximum)
-
- _MCAST_ONU_ID = 253
- _MCAST_ALLOC_BASE = 0x500
-
- _SUPPORTED_ACTIVATION_METHODS = ['autodiscovery'] # , 'autoactivate']
- _SUPPORTED_AUTHENTICATION_METHODS = ['serial-number']
- */
- PONID uint32
- DeviceID string
- IntfID uint32
- PortNum uint32
- PortID uint32
- Label string
ONUs map[uint32]interface{}
ONUsByID map[uint32]interface{}
+ DeviceID string
+ Label string
+
RxBytes uint64
RxPackets uint64
RxUcastPackets uint64
@@ -146,11 +129,28 @@
TxErrorPackets uint64
RxCrcErrors uint64
BipErrors uint64
+ /*
+ This is a highly reduced version taken from the adtran pon_port.
+ TODO: Extend for use in the openolt adapter set.
+ */
+ /* MAX_ONUS_SUPPORTED = 256
+ DEFAULT_ENABLED = False
+ MAX_DEPLOYMENT_RANGE = 25000 # Meters (OLT-PB maximum)
+
+ _MCAST_ONU_ID = 253
+ _MCAST_ALLOC_BASE = 0x500
+
+ _SUPPORTED_ACTIVATION_METHODS = ['autodiscovery'] # , 'autoactivate']
+ _SUPPORTED_AUTHENTICATION_METHODS = ['serial-number']
+ */
+ PONID uint32
+ IntfID uint32
+ PortNum uint32
+ PortID uint32
}
// NewPONPort returns a new instance of PonPort initialized with given PONID, DeviceID, IntfID and PortNum
func NewPONPort(PONID uint32, DeviceID string, IntfID uint32, PortNum uint32) *PonPort {
-
var PON PonPort
PON.PONID = PONID
@@ -202,16 +202,7 @@
// NniPort representation
type NniPort struct {
- /*
- Northbound network port, often Ethernet-based
-
- This is a highly reduced version taken from the adtran nni_port code set
- TODO: add functions to allow for port specific values and operations
- */
- PortNum uint32
- Name string
- LogicalPort uint32
- IntfID uint32
+ Name string
RxBytes uint64
RxPackets uint64
@@ -227,11 +218,19 @@
TxErrorPackets uint64
RxCrcErrors uint64
BipErrors uint64
+ /*
+ Northbound network port, often Ethernet-based
+
+ This is a highly reduced version taken from the adtran nni_port code set
+ TODO: add functions to allow for port specific values and operations
+ */
+ PortNum uint32
+ LogicalPort uint32
+ IntfID uint32
}
// NewNniPort returns a new instance of NniPort initialized with the given PortNum and IntfID
func NewNniPort(PortNum uint32, IntfID uint32) *NniPort {
-
var NNI NniPort
NNI.PortNum = PortNum
@@ -266,18 +265,17 @@
// OpenOltStatisticsMgr structure
type OpenOltStatisticsMgr struct {
- Device *DeviceHandler
- NorthBoundPort map[uint32]*NniPort
- SouthBoundPort map[uint32]*PonPort
+ Device *DeviceHandler
+ NorthBoundPort map[uint32]*NniPort
+ SouthBoundPort map[uint32]*PonPort
+ statIndListners map[StatType]*list.List
// TODO PMMetrics Metrics
- //statIndListners is the list of requests to be notified when port and flow stats indication is received
+ // statIndListners is the list of requests to be notified when port and flow stats indication is received
statIndListnerMu sync.Mutex
- statIndListners map[StatType]*list.List
}
// NewOpenOltStatsMgr returns a new instance of the OpenOltStatisticsMgr
func NewOpenOltStatsMgr(ctx context.Context, Dev *DeviceHandler) *OpenOltStatisticsMgr {
-
var StatMgr OpenOltStatisticsMgr
StatMgr.Device = Dev
@@ -347,8 +345,8 @@
:return:
*/
- //This builds a port object which is added to the
- //appropriate northbound or southbound values
+ // This builds a port object which is added to the
+ // appropriate northbound or southbound values
if IntfType == "nni" {
IntfID := plt.IntfIDToPortNo(PortNum, voltha.Port_ETHERNET_NNI)
nniID := plt.PortNoToIntfID(IntfID, voltha.Port_ETHERNET_NNI)
@@ -375,7 +373,6 @@
// collectNNIMetrics will collect the nni port metrics
func (StatMgr *OpenOltStatisticsMgr) collectNNIMetrics(nniID uint32) map[string]float32 {
-
nnival := make(map[string]float32)
mutex.Lock()
cm := StatMgr.Device.portStats.NorthBoundPort[nniID]
@@ -416,7 +413,6 @@
// collectPONMetrics will collect the pon port metrics
func (StatMgr *OpenOltStatisticsMgr) collectPONMetrics(pID uint32) map[string]float32 {
-
ponval := make(map[string]float32)
mutex.Lock()
cm := StatMgr.Device.portStats.SouthBoundPort[pID]
@@ -520,7 +516,6 @@
if stats, err = StatMgr.Device.Client.GetOnuStatistics(context.Background(), onu); err == nil {
statValue := StatMgr.convertONUStats(stats)
return statValue
-
}
logger.Errorw(ctx, "error-while-getting-onu-stats-for-onu", log.Fields{"IntfID": intfID, "OnuID": onuID, "err": err})
return nil
@@ -620,8 +615,8 @@
func (StatMgr *OpenOltStatisticsMgr) PortStatisticsIndication(ctx context.Context, PortStats *openolt.PortStatistics, NumPonPorts uint32) {
StatMgr.PortsStatisticsKpis(ctx, PortStats, NumPonPorts)
logger.Debugw(ctx, "received-port-stats-indication", log.Fields{"port-stats": PortStats})
- //Indicate that PortStatisticsIndication is handled
- //PortStats.IntfId is actually the port number
+ // Indicate that PortStatisticsIndication is handled
+ // PortStats.IntfId is actually the port number
StatMgr.processStatIndication(ctx, portStatsType, PortStats.IntfId)
// TODO send stats to core topic to the voltha kafka or a different kafka ?
}
@@ -629,19 +624,18 @@
// FlowStatisticsIndication to be implemented
func FlowStatisticsIndication(ctx context.Context, self, FlowStats *openolt.FlowStatistics) {
logger.Debugw(ctx, "flow-stats-collected", log.Fields{"flow-stats": FlowStats})
- //TODO send to kafka ?
+ // TODO send to kafka ?
}
// PortsStatisticsKpis map the port stats values into a dictionary, creates the kpiEvent and then publish to Kafka
func (StatMgr *OpenOltStatisticsMgr) PortsStatisticsKpis(ctx context.Context, PortStats *openolt.PortStatistics, NumPonPorts uint32) {
-
/*map the port stats values into a dictionary
Create a kpoEvent and publish to Kafka
:param port_stats:
:return:
*/
- //var err error
+ // var err error
IntfID := PortStats.IntfId
if (plt.IntfIDToPortNo(1, voltha.Port_ETHERNET_NNI) < IntfID) &&
@@ -653,7 +647,6 @@
*/
return
} else if plt.IntfIDToPortNo(0, voltha.Port_ETHERNET_NNI) == IntfID {
-
var portNNIStat NniPort
portNNIStat.IntfID = IntfID
portNNIStat.PortNum = uint32(0)
@@ -673,7 +666,6 @@
logger.Debugw(ctx, "received-nni-stats", log.Fields{"nni-stats": StatMgr.NorthBoundPort})
}
for i := uint32(0); i < NumPonPorts; i++ {
-
if plt.IntfIDToPortNo(i, voltha.Port_PON_OLT) == IntfID {
var portPonStat PonPort
portPonStat.IntfID = IntfID
@@ -695,7 +687,6 @@
logger.Debugw(ctx, "received-pon-stats-for-port", log.Fields{"port-pon-stats": portPonStat})
}
}
-
/*
Based upon the intf_id map to an nni port or a pon port
the intf_id is the key to the north or south bound collections
@@ -705,7 +696,7 @@
For prefixing the rule is currently to use the port number and not the intf_id
*/
- //FIXME : Just use first NNI for now
+ // FIXME : Just use first NNI for now
/* TODO should the data be marshaled before sending it ?
if IntfID == IntfIdToPortNo(0, voltha.Port_ETHERNET_NNI) {
//NNI port (just the first one)
@@ -718,11 +709,9 @@
logger.Error(ctx, "Error publishing statistics data")
}
*/
-
}
func (StatMgr *OpenOltStatisticsMgr) updateGetOltPortCountersResponse(ctx context.Context, singleValResp *extension.SingleGetValueResponse, stats map[string]float32) {
-
metrics := singleValResp.GetResponse().GetPortCoutners()
metrics.TxBytes = uint64(stats["TxBytes"])
metrics.RxBytes = uint64(stats["RxBytes"])
@@ -753,7 +742,6 @@
StatMgr.statIndListnerMu.Lock()
StatMgr.statIndListners[t].PushBack(statInd)
StatMgr.statIndListnerMu.Unlock()
-
}
// DeRegisterFromStatIndication removes the previously registered channel ch for type t of statistics
@@ -791,16 +779,13 @@
// message sent
statInd.chn <- true
deRegList = append(deRegList, e)
-
}
for _, e := range deRegList {
StatMgr.statIndListners[t].Remove(e)
}
-
}
func (StatMgr *OpenOltStatisticsMgr) updateGetOnuPonCountersResponse(ctx context.Context, singleValResp *extension.SingleGetValueResponse, stats map[string]float32) {
-
metrics := singleValResp.GetResponse().GetOnuPonCounters()
metrics.IsIntfId = &extension.GetOnuCountersResponse_IntfId{
IntfId: uint32(stats[IntfID]),
diff --git a/internal/pkg/core/statsmanager_test.go b/internal/pkg/core/statsmanager_test.go
index 5e60af9..1cec548 100644
--- a/internal/pkg/core/statsmanager_test.go
+++ b/internal/pkg/core/statsmanager_test.go
@@ -56,7 +56,6 @@
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
-
StatMgr.PortStatisticsIndication(context.Background(), tt.args.PortStats, 16)
})
}
diff --git a/internal/pkg/olterrors/olterrors.go b/internal/pkg/olterrors/olterrors.go
index 9490427..869f006 100644
--- a/internal/pkg/olterrors/olterrors.go
+++ b/internal/pkg/olterrors/olterrors.go
@@ -64,9 +64,9 @@
// ErrAdapter represents a basic adapter error that combines an name, field set
// and wrapped error
type ErrAdapter struct {
- name string
- fields log.Fields
wrapped error
+ fields log.Fields
+ name string
}
// NewErrAdapter constructs a new error with the given values
diff --git a/internal/pkg/resourcemanager/resourcemanager.go b/internal/pkg/resourcemanager/resourcemanager.go
old mode 100755
new mode 100644
index b8053f4..bc0524d
--- a/internal/pkg/resourcemanager/resourcemanager.go
+++ b/internal/pkg/resourcemanager/resourcemanager.go
@@ -43,7 +43,7 @@
BasePathKvStore = "%s/openolt/{%s}"
// tpIDPathSuffix - <(pon_id, onu_id, uni_id)>/tp_id
tpIDPathSuffix = "{%d,%d,%d}/tp_id"
- //MeterIDPathSuffix - <(pon_id, onu_id, uni_id)>/<tp_id>/meter_id/<direction>
+ // MeterIDPathSuffix - <(pon_id, onu_id, uni_id)>/<tp_id>/meter_id/<direction>
MeterIDPathSuffix = "{%d,%d,%d}/{%d}/meter_id/{%s}"
// OnuPacketInPathPrefix - path prefix where ONU packet-in vlanID/PCP is stored
@@ -53,18 +53,18 @@
//format: onu_packetin/{<intfid>,<onuid>,<logicalport>}/{<vlanId>,<priority>}
OnuPacketInPath = OnuPacketInPathPrefix + "/{%d,%d}"
- //FlowIDsForGemPathPrefix format: flowids_for_gem/<intfid>
+ // FlowIDsForGemPathPrefix format: flowids_for_gem/<intfid>
FlowIDsForGemPathPrefix = "flowids_per_gem/{%d}"
- //FlowIDsForGem flowids_for_gem/<intfid>/<gemport-id>
+ // FlowIDsForGem flowids_for_gem/<intfid>/<gemport-id>
FlowIDsForGem = FlowIDsForGemPathPrefix + "/{%d}"
- //McastQueuesForIntf multicast queues for pon interfaces
+ // McastQueuesForIntf multicast queues for pon interfaces
McastQueuesForIntf = "mcast_qs_for_int"
- //FlowGroup flow_groups/<flow_group_id>
+ // FlowGroup flow_groups/<flow_group_id>
// A group is stored under this path on the KV store after it has been installed to the device.
// It should also be deleted after it has been removed from the device accordingly.
FlowGroup = "flow_groups/{%d}"
- //FlowGroupCached flow_groups_cached/<flow_group_id>
+ // FlowGroupCached flow_groups_cached/<flow_group_id>
// When a group add request received, we create the group without setting any members to it since we cannot
// set any members to a group until it is associated with a multicast flow. It is a BAL limitation.
// When the related multicast flow has been created we perform set members operation for the group.
@@ -73,13 +73,13 @@
// we remove the group from the cached group store.
FlowGroupCached = "flow_groups_cached/{%d}"
- //FlowIDPath - Path on the KV store for storing list of Flow IDs for a given subscriber
+ // FlowIDPath - Path on the KV store for storing list of Flow IDs for a given subscriber
//Format: BasePathKvStore/<(pon_intf_id, onu_id, uni_id)>/flow_ids
FlowIDPath = "{%s}/flow_ids"
- //OnuGemInfoPathPathPrefix format: onu_gem_info/<intfid>
+ // OnuGemInfoPathPathPrefix format: onu_gem_info/<intfid>
OnuGemInfoPathPathPrefix = "onu_gem_info/{%d}"
- //OnuGemInfoPath is path on the kvstore to store onugem info map
+ // OnuGemInfoPath is path on the kvstore to store onugem info map
//format: onu_gem_info/<intfid>/<onu_id>
OnuGemInfoPath = OnuGemInfoPathPathPrefix + "/{%d}"
@@ -95,11 +95,11 @@
// OnuGemInfo holds onu information along with gem port list and uni port list
type OnuGemInfo struct {
- OnuID uint32
SerialNumber string
- IntfID uint32
GemPorts []uint32
UniPorts []uint32
+ OnuID uint32
+ IntfID uint32
}
// PacketInInfoKey is the key for packet in gemport
@@ -113,8 +113,8 @@
// GroupInfo holds group information
type GroupInfo struct {
- GroupID uint32
OutPorts []uint32
+ GroupID uint32
}
// MeterInfo store meter information at path <(pon_id, onu_id, uni_id)>/<tp_id>/meter_id/<direction>
@@ -125,47 +125,54 @@
// OpenOltResourceMgr holds resource related information as provided below for each field
type OpenOltResourceMgr struct {
- PonIntfID uint32
- DeviceID string // OLT device id
- Address string // Host and port of the kv store to connect to
- Args string // args
- KVStore *db.Backend // backend kv store connection handle
- DeviceType string
- DevInfo *openolt.DeviceInfo // device information
+ TechprofileRef tp.TechProfileIf
+ KVStore *db.Backend // backend kv store connection handle
+ DevInfo *openolt.DeviceInfo // device information
// array of pon resource managers per interface technology
PonRsrMgr *ponrmgr.PONResourceManager
// Local maps used for write-through-cache - start
- allocIDsForOnu map[string][]uint32
+ allocIDsForOnu map[string][]uint32
+
+ gemPortIDsForOnu map[string][]uint32
+
+ techProfileIDsForOnu map[string][]uint32
+
+ meterInfoForOnu map[string]*MeterInfo
+
+ onuGemInfo map[string]*OnuGemInfo
+
+ gemPortForPacketInInfo map[string]uint32
+
+ flowIDsForGem map[uint32][]uint64
+
+ mcastQueueForIntf map[uint32][]uint32
+
+ groupInfo map[string]*GroupInfo
+ DeviceID string // OLT device id
+ Address string // Host and port of the kv store to connect to
+ Args string // args
+ DeviceType string
allocIDsForOnuLock sync.RWMutex
- gemPortIDsForOnu map[string][]uint32
gemPortIDsForOnuLock sync.RWMutex
- techProfileIDsForOnu map[string][]uint32
techProfileIDsForOnuLock sync.RWMutex
- meterInfoForOnu map[string]*MeterInfo
meterInfoForOnuLock sync.RWMutex
- onuGemInfo map[string]*OnuGemInfo
onuGemInfoLock sync.RWMutex
- gemPortForPacketInInfo map[string]uint32
gemPortForPacketInInfoLock sync.RWMutex
- flowIDsForGem map[uint32][]uint64
flowIDsForGemLock sync.RWMutex
- mcastQueueForIntf map[uint32][]uint32
- mcastQueueForIntfLock sync.RWMutex
- mcastQueueForIntfLoadedFromKvStore bool
-
- groupInfo map[string]*GroupInfo
- groupInfoLock sync.RWMutex
+ mcastQueueForIntfLock sync.RWMutex
+ groupInfoLock sync.RWMutex
// Local maps used for write-through-cache - end
- TechprofileRef tp.TechProfileIf
+ PonIntfID uint32
+ mcastQueueForIntfLoadedFromKvStore bool
}
func newKVClient(ctx context.Context, storeType string, address string, timeout time.Duration) (kvstore.Client, error) {
@@ -281,8 +288,7 @@
// LoadLocalCacheFromKVStore loads local maps
func (rsrcMgr *OpenOltResourceMgr) LoadLocalCacheFromKVStore(ctx context.Context) error {
-
- //List all the keys for OnuGemInfo
+ // List all the keys for OnuGemInfo
prefixPath := fmt.Sprintf(OnuGemInfoPathPathPrefix, rsrcMgr.PonIntfID)
keys, err := rsrcMgr.KVStore.List(ctx, prefixPath)
logger.Debug(ctx, "load-local-cache-from-KV-store-started")
@@ -319,7 +325,6 @@
rsrcMgr.onuGemInfoLock.Lock()
rsrcMgr.onuGemInfo[path] = &onugem
rsrcMgr.onuGemInfoLock.Unlock()
-
}
logger.Debug(ctx, "load-local-cache-from-KV-store-finished")
return nil
@@ -370,7 +375,6 @@
GEMPortIDStart, GEMPortIDEnd, GEMPortIDShared,
flowIDDummyStart, flowIDDummyEnd, FlowIDShared, uniIDDummyStart, uniIDDummyEnd,
devInfo.PonPorts, techRange.IntfIds)
-
}
// Delete clears used resources for the particular olt device being deleted
@@ -402,7 +406,6 @@
// UpdateAllocIdsForOnu updates alloc ids in kv store for a given pon interface id, onu id and uni id
func (rsrcMgr *OpenOltResourceMgr) UpdateAllocIdsForOnu(ctx context.Context, onuID uint32, uniID uint32, allocIDs []uint32) error {
-
intfOnuIDuniID := fmt.Sprintf("%d,%d,%d", rsrcMgr.PonIntfID, onuID, uniID)
// Note: in case the write to DB fails there could be inconsistent data between cache and db.
@@ -420,9 +423,7 @@
}
// GetCurrentGEMPortIDsForOnu returns gem ports for given pon interface , onu id and uni id
-func (rsrcMgr *OpenOltResourceMgr) GetCurrentGEMPortIDsForOnu(ctx context.Context, onuID uint32,
- uniID uint32) []uint32 {
-
+func (rsrcMgr *OpenOltResourceMgr) GetCurrentGEMPortIDsForOnu(ctx context.Context, onuID uint32, uniID uint32) []uint32 {
intfOnuIDuniID := fmt.Sprintf("%d,%d,%d", rsrcMgr.PonIntfID, onuID, uniID)
// fetch from cache
@@ -445,7 +446,6 @@
// GetCurrentAllocIDsForOnu returns alloc ids for given pon interface and onu id
func (rsrcMgr *OpenOltResourceMgr) GetCurrentAllocIDsForOnu(ctx context.Context, onuID uint32, uniID uint32) []uint32 {
-
intfOnuIDuniID := fmt.Sprintf("%d,%d,%d", rsrcMgr.PonIntfID, onuID, uniID)
// fetch from cache
rsrcMgr.allocIDsForOnuLock.RLock()
@@ -497,8 +497,7 @@
}
// UpdateGEMPortIDsForOnu updates gemport ids on to the kv store for a given pon port, onu id and uni id
-func (rsrcMgr *OpenOltResourceMgr) UpdateGEMPortIDsForOnu(ctx context.Context, onuID uint32,
- uniID uint32, gemIDs []uint32) error {
+func (rsrcMgr *OpenOltResourceMgr) UpdateGEMPortIDsForOnu(ctx context.Context, onuID uint32, uniID uint32, gemIDs []uint32) error {
intfOnuIDuniID := fmt.Sprintf("%d,%d,%d", rsrcMgr.PonIntfID, onuID, uniID)
if err := rsrcMgr.PonRsrMgr.UpdateGEMPortIDsForOnu(ctx, intfOnuIDuniID, gemIDs); err != nil {
@@ -536,9 +535,7 @@
// the ONU so as not cause resource corruption since there are no mutexes used here.
// Setting freeFromResourcePool to false will not clear it from the resource pool but only
// clear it for the given pon/onu/uni
-func (rsrcMgr *OpenOltResourceMgr) FreeAllocID(ctx context.Context, onuID uint32,
- uniID uint32, allocID uint32, freeFromResourcePool bool) {
-
+func (rsrcMgr *OpenOltResourceMgr) FreeAllocID(ctx context.Context, onuID uint32, uniID uint32, allocID uint32, freeFromResourcePool bool) {
rsrcMgr.RemoveAllocIDForOnu(ctx, onuID, uniID, allocID)
if freeFromResourcePool {
allocIDs := make([]uint32, 0)
@@ -574,7 +571,6 @@
// FreePONResourcesForONU make the pon resources free for a given pon interface and onu id
func (rsrcMgr *OpenOltResourceMgr) FreePONResourcesForONU(ctx context.Context, onuID uint32, uniID uint32) {
-
intfOnuIDuniID := fmt.Sprintf("%d,%d,%d", rsrcMgr.PonIntfID, onuID, uniID)
if rsrcMgr.PonRsrMgr == nil || rsrcMgr.TechprofileRef == nil {
@@ -594,7 +590,7 @@
})
}
- //update cache
+ // update cache
rsrcMgr.allocIDsForOnuLock.Lock()
delete(rsrcMgr.allocIDsForOnu, intfOnuIDuniID)
rsrcMgr.allocIDsForOnuLock.Unlock()
@@ -697,7 +693,6 @@
rsrcMgr.techProfileIDsForOnuLock.Unlock()
return tpIDs
-
}
// RemoveTechProfileIDsForOnu deletes all tech profile ids from the KV-Store for the given onu based on the path
@@ -841,7 +836,6 @@
}
} else {
logger.Errorf(ctx, "Failed to get Meter config from kvstore for path %s", Path)
-
}
// update cache
rsrcMgr.meterInfoForOnuLock.Lock()
@@ -1002,7 +996,6 @@
// AddNewOnuGemInfoToCacheAndKvStore function adds a new onu gem info to cache and kvstore
func (rsrcMgr *OpenOltResourceMgr) AddNewOnuGemInfoToCacheAndKvStore(ctx context.Context, onuID uint32, serialNum string) error {
-
Path := fmt.Sprintf(OnuGemInfoPath, rsrcMgr.PonIntfID, onuID)
rsrcMgr.onuGemInfoLock.Lock()
@@ -1032,7 +1025,6 @@
// AddOnuGemInfo adds onu info on to the kvstore per interface
func (rsrcMgr *OpenOltResourceMgr) AddOnuGemInfo(ctx context.Context, onuID uint32, onuGem OnuGemInfo) error {
-
var Value []byte
var err error
Path := fmt.Sprintf(OnuGemInfoPath, rsrcMgr.PonIntfID, onuID)
@@ -1049,7 +1041,7 @@
}
logger.Debugw(ctx, "added onu gem info to store", log.Fields{"onuGemInfo": onuGem, "Path": Path})
- //update cache
+ // update cache
rsrcMgr.onuGemInfoLock.Lock()
rsrcMgr.onuGemInfo[Path] = &onuGem
rsrcMgr.onuGemInfoLock.Unlock()
@@ -1065,7 +1057,7 @@
return err
}
- //update cache
+ // update cache
rsrcMgr.onuGemInfoLock.Lock()
logger.Debugw(ctx, "removing onu gem info", log.Fields{"onuGemInfo": rsrcMgr.onuGemInfo[path]})
delete(rsrcMgr.onuGemInfo, path)
@@ -1075,7 +1067,6 @@
// DeleteAllOnuGemInfoForIntf deletes all the all onu gem info on the given pon interface
func (rsrcMgr *OpenOltResourceMgr) DeleteAllOnuGemInfoForIntf(ctx context.Context) error {
-
path := fmt.Sprintf(OnuGemInfoPathPathPrefix, rsrcMgr.PonIntfID)
logger.Debugw(ctx, "delete-all-onu-gem-info-for-pon-intf", log.Fields{"intfID": rsrcMgr.PonIntfID})
@@ -1093,7 +1084,6 @@
// AddUniPortToOnuInfo adds uni port to the onuinfo kvstore. check if the uni is already present if not update the kv store.
func (rsrcMgr *OpenOltResourceMgr) AddUniPortToOnuInfo(ctx context.Context, onuID uint32, portNo uint32) {
-
onugem, err := rsrcMgr.GetOnuGemInfo(ctx, onuID)
if err != nil || onugem == nil || onugem.SerialNumber == "" {
logger.Warnf(ctx, "failed to get onuifo for intfid %d", rsrcMgr.PonIntfID)
@@ -1121,7 +1111,6 @@
// UpdateGemPortForPktIn updates gemport for pkt in path to kvstore, path being intfid, onuid, portno, vlan id, priority bit
func (rsrcMgr *OpenOltResourceMgr) UpdateGemPortForPktIn(ctx context.Context, pktIn PacketInInfoKey, gemPort uint32) {
-
path := fmt.Sprintf(OnuPacketInPath, pktIn.IntfID, pktIn.OnuID, pktIn.LogicalPort, pktIn.VlanID, pktIn.Priority)
Value, err := json.Marshal(gemPort)
@@ -1143,7 +1132,6 @@
// GetGemPortFromOnuPktIn gets the gem port from onu pkt in path, path being intfid, onuid, portno, vlan id, priority bit
func (rsrcMgr *OpenOltResourceMgr) GetGemPortFromOnuPktIn(ctx context.Context, packetInInfoKey PacketInInfoKey) (uint32, error) {
-
var Val []byte
path := fmt.Sprintf(OnuPacketInPath, packetInInfoKey.IntfID, packetInInfoKey.OnuID, packetInInfoKey.LogicalPort,
@@ -1198,7 +1186,7 @@
return err
}
- //remove them one by one
+ // remove them one by one
for key := range value {
// Remove the PathPrefix from the path on KV key.
// gemPortForPacketInInfo cache uses OnuPacketInPath as the key
@@ -1434,7 +1422,7 @@
} else {
path = fmt.Sprintf(FlowGroup, groupEntry.Desc.GroupId)
}
- //build group info object
+ // build group info object
var outPorts []uint32
for _, ofBucket := range groupEntry.Desc.Buckets {
for _, ofAction := range ofBucket.Actions {
diff --git a/internal/pkg/resourcemanager/resourcemanager_test.go b/internal/pkg/resourcemanager/resourcemanager_test.go
index 9018d4d..c11d2f9 100644
--- a/internal/pkg/resourcemanager/resourcemanager_test.go
+++ b/internal/pkg/resourcemanager/resourcemanager_test.go
@@ -438,7 +438,6 @@
}
func TestOpenOltResourceMgr_DeleteAllFlowIDsForGemForIntf(t *testing.T) {
-
type args struct {
PONIntfID uint32
}
@@ -464,7 +463,6 @@
}
func TestOpenOltResourceMgr_DeleteAllOnuGemInfoForIntf(t *testing.T) {
-
type args struct {
PONIntfID uint32
}
@@ -490,7 +488,6 @@
}
func TestOpenOltResourceMgr_deleteGemPort(t *testing.T) {
-
type args struct {
intfID uint32
onuID uint32
@@ -559,7 +556,6 @@
}
func TestOpenOltResourceMgr_AddNewOnuGemInfo(t *testing.T) {
-
type args struct {
PONIntfID uint32
OnuCount uint32
@@ -578,17 +574,16 @@
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
for j := 1; j <= int(tt.args.OnuCount); j++ {
- go func(i uint32, j uint32) {
+ go func(i uint32) {
// TODO: actually verify success
_ = RsrcMgr.AddNewOnuGemInfoToCacheAndKvStore(ctx, i, fmt.Sprintf("onu-%d", i))
- }(tt.args.PONIntfID, uint32(j))
+ }(tt.args.PONIntfID)
}
})
}
}
func TestOpenOltFlowMgr_addGemPortToOnuInfoMap(t *testing.T) {
-
type args struct {
intfID uint32
onuID uint32
@@ -731,7 +726,6 @@
}
func TestOpenOltResourceMgr_GetTechProfileIDForOnu(t *testing.T) {
-
type args struct {
IntfID uint32
OnuID uint32
@@ -759,7 +753,6 @@
}
func TestOpenOltResourceMgr_RemoveMeterIDForOnu(t *testing.T) {
-
type args struct {
Direction string
IntfID uint32
@@ -847,7 +840,6 @@
}
func TestOpenOltResourceMgr_UpdateGEMPortIDsForOnu(t *testing.T) {
-
type args struct {
ponPort uint32
onuID uint32
@@ -982,7 +974,6 @@
t.Errorf("newKVClient() error = %v, wantErr %v", err, tt.wantErr)
return
}
-
})
}
}
@@ -1057,11 +1048,11 @@
group *ofp.OfpGroupEntry
cached bool
}
- //create group 1
+ // create group 1
group1 := newGroup(1, []uint32{1})
- //create group 2
+ // create group 2
group2 := newGroup(2, []uint32{2})
- //define test set
+ // define test set
tests := []struct {
name string
args args
@@ -1070,7 +1061,7 @@
{"AddFlowGroupToKVStore-1", args{group1, true}, getResMgr()},
{"AddFlowGroupToKVStore-2", args{group2, false}, getResMgr()},
}
- //execute tests
+ // execute tests
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
RsrcMgr := testResMgrObject(tt.fields)
@@ -1090,7 +1081,7 @@
groupID uint32
cached bool
}
- //define test set
+ // define test set
tests := []struct {
name string
args args
@@ -1099,7 +1090,7 @@
{"RemoveFlowGroupFromKVStore-1", args{1, true}, getResMgr()},
{"RemoveFlowGroupFromKVStore-2", args{2, false}, getResMgr()},
}
- //execute tests
+ // execute tests
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
RsrcMgr := testResMgrObject(tt.fields)
@@ -1119,7 +1110,7 @@
groupID uint32
cached bool
}
- //define test set
+ // define test set
tests := []struct {
name string
args args
@@ -1129,7 +1120,7 @@
{"GetFlowGroupFromKVStore-2", args{2, false}, getResMgr()},
{"GetFlowGroupFromKVStore-3", args{1000, false}, getResMgr()},
}
- //execute tests
+ // execute tests
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
RsrcMgr := testResMgrObject(tt.fields)
diff --git a/makefiles/docker/include.mk b/makefiles/docker/include.mk
index ad629c5..7d12d9f 100644
--- a/makefiles/docker/include.mk
+++ b/makefiles/docker/include.mk
@@ -17,7 +17,7 @@
$(if $(DEBUG),$(warning ENTER))
-VOLTHA_TOOLS_VERSION ?= 2.4.0
+VOLTHA_TOOLS_VERSION ?= 3.1.1
# ---------------------------
# Macros: command refactoring
diff --git a/pkg/mocks/mockCoreClient.go b/pkg/mocks/mockCoreClient.go
index bbed76b..dca0e3b 100644
--- a/pkg/mocks/mockCoreClient.go
+++ b/pkg/mocks/mockCoreClient.go
@@ -179,7 +179,7 @@
if onuDevice != nil {
return onuDevice, nil
}
- //return &voltha.Device{}, nil
+ // return &voltha.Device{}, nil
return nil, errors.New("device detection failed")
}
diff --git a/pkg/mocks/mockKVClient.go b/pkg/mocks/mockKVClient.go
index b77498c..39aa35d 100644
--- a/pkg/mocks/mockKVClient.go
+++ b/pkg/mocks/mockKVClient.go
@@ -45,11 +45,11 @@
GemportIDs = "gemport_ids"
// AllocIDs to extract alloc_ids
AllocIDs = "alloc_ids"
- //FlowGroup flow_groups/<flow_group_id>
+ // FlowGroup flow_groups/<flow_group_id>
FlowGroup = "flow_groups"
- //FlowGroupCached flow_groups_cached/<flow_group_id>
+ // FlowGroupCached flow_groups_cached/<flow_group_id>
FlowGroupCached = "flow_groups_cached"
- //OnuPacketIn to extract gem port from packet-in
+ // OnuPacketIn to extract gem port from packet-in
OnuPacketIn = "onu_packetin"
// OnuGemInfoPath has path on the kvstore to store OnuGemInfo info per PON interface
OnuGemInfoPath = "onu_gem_info"
@@ -61,17 +61,17 @@
// OnuGemInfo holds onu information along with gem port list and uni port list
type OnuGemInfo struct {
- OnuID uint32
SerialNumber string
- IntfID uint32
GemPorts []uint32
UniPorts []uint32
+ OnuID uint32
+ IntfID uint32
}
// GroupInfo holds group information
type GroupInfo struct {
- GroupID uint32
OutPorts []uint32
+ GroupID uint32
}
// List mock function implementation for KVClient
@@ -115,7 +115,6 @@
}
if strings.Contains(key, "meter_id/{1,1,1}/{downstream}") {
-
band1 := &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 1000, BurstSize: 5000}
band2 := &ofp.OfpMeterBandHeader{Type: ofp.OfpMeterBandType_OFPMBT_DROP, Rate: 2000, BurstSize: 5000}
bands := []*ofp.OfpMeterBandHeader{band1, band2}
@@ -180,16 +179,16 @@
return kvstore.NewKVPair(key, str, "mock", 3000, 1), nil
}
- //Interface, GEM port path
+ // Interface, GEM port path
if strings.Contains(key, "0,255") {
- //return onuID, uniID associated with the given interface and GEM port
+ // return onuID, uniID associated with the given interface and GEM port
data := []uint32{1, 0}
str, _ := json.Marshal(data)
return kvstore.NewKVPair(key, str, "mock", 3000, 1), nil
}
- //Interface, GEM port path
+ // Interface, GEM port path
if strings.Contains(key, "0,257") {
- //return onuID, uniID associated with the given interface and GEM port
+ // return onuID, uniID associated with the given interface and GEM port
data := []uint32{1, 0}
str, _ := json.Marshal(data)
return kvstore.NewKVPair(key, str, "mock", 3000, 1), nil
@@ -248,7 +247,7 @@
// getPacketInGemPort returns the GEM port associated with the given key
func getPacketInGemPort(key string) (*kvstore.KVPair, error) {
- //parse interface, onu, uni, vlan, priority values
+ // parse interface, onu, uni, vlan, priority values
arr := getParamsFromPacketInKey(key)
if len(arr) < 5 {
@@ -271,7 +270,7 @@
// getParamsFromPacketInKey parse packetIn key that is in the format of "onu_packetin/{1,1,1,1,2}"
func getParamsFromPacketInKey(key string) []string {
- //return intfID, onuID, uniID, vlanID, priority
+ // return intfID, onuID, uniID, vlanID, priority
firstIndex := strings.Index(key, "{")
lastIndex := strings.Index(key, "}")
if firstIndex == -1 && lastIndex == -1 {
diff --git a/pkg/mocks/mockOpenOltClient.go b/pkg/mocks/mockOpenOltClient.go
old mode 100755
new mode 100644
index eeae6c3..5c6ed55
--- a/pkg/mocks/mockOpenOltClient.go
+++ b/pkg/mocks/mockOpenOltClient.go
@@ -38,7 +38,7 @@
// DisableOlt mocks the DisableOlt function of Openoltclient.
func (ooc *MockOpenoltClient) DisableOlt(ctx context.Context, in *openolt.Empty, opts ...grpc.CallOption) (*openolt.Empty, error) {
- //return &openolt.Empty{}, nil
+ // return &openolt.Empty{}, nil
if ooc.counter == 0 {
ooc.counter++
return &openolt.Empty{}, nil
@@ -206,12 +206,12 @@
func (mock *mockOpenoltEnableIndicationClient) Recv() (*openolt.Indication, error) {
if mock.count == 0 {
- mock.count = mock.count + 1
+ mock.count++
indi := &openolt.Indication{Data: &openolt.Indication_OltInd{OltInd: &openolt.OltIndication{OperState: "Down"}}}
return indi, nil
}
if mock.count == 1 {
- mock.count = mock.count + 1
+ mock.count++
return nil, errors.New("error, while processing indication")
}
diff --git a/pkg/mocks/mockTechprofile.go b/pkg/mocks/mockTechprofile.go
index d0b9708..3972145 100644
--- a/pkg/mocks/mockTechprofile.go
+++ b/pkg/mocks/mockTechprofile.go
@@ -81,12 +81,10 @@
UpstreamGemPortAttributeList: usGemPortAttributeList,
DownstreamGemPortAttributeList: dsGemPortAttributeList,
}, nil
-
}
// CreateTechProfileInstance to mock techprofile CreateTechProfileInstance method
func (m MockTechProfile) CreateTechProfileInstance(ctx context.Context, techProfiletblID uint32, uniPortName string, intfID uint32) (interface{}, error) {
-
var usGemPortAttributeList []*tp_pb.GemPortAttributes
var dsGemPortAttributeList []*tp_pb.GemPortAttributes
if techProfiletblID == 64 {
@@ -151,13 +149,11 @@
// GetprotoBufParamValue to mock techprofile GetprotoBufParamValue method
func (m MockTechProfile) GetprotoBufParamValue(ctx context.Context, paramType string, paramKey string) int32 {
return 0
-
}
// GetUsScheduler to mock techprofile GetUsScheduler method
func (m MockTechProfile) GetUsScheduler(tpInstance *tp_pb.TechProfileInstance) *tp_pb.SchedulerConfig {
return &tp_pb.SchedulerConfig{}
-
}
// GetDsScheduler to mock techprofile GetDsScheduler method
@@ -169,7 +165,6 @@
func (m MockTechProfile) GetTrafficScheduler(tpInstance *tp_pb.TechProfileInstance, SchedCfg *tp_pb.SchedulerConfig,
ShapingCfg *tp_pb.TrafficShapingInfo) *tp_pb.TrafficScheduler {
return &tp_pb.TrafficScheduler{}
-
}
// GetTrafficQueues to mock techprofile GetTrafficQueues method
diff --git a/vendor/github.com/Shopify/sarama/go.mod b/vendor/github.com/Shopify/sarama/go.mod
deleted file mode 100644
index ccbd8e2..0000000
--- a/vendor/github.com/Shopify/sarama/go.mod
+++ /dev/null
@@ -1,28 +0,0 @@
-module github.com/Shopify/sarama
-
-go 1.13
-
-require (
- github.com/Shopify/toxiproxy v2.1.4+incompatible
- github.com/davecgh/go-spew v1.1.1
- github.com/eapache/go-resiliency v1.2.0
- github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21
- github.com/eapache/queue v1.1.0
- github.com/fortytw2/leaktest v1.3.0
- github.com/frankban/quicktest v1.11.3 // indirect
- github.com/jcmturner/gofork v1.0.0
- github.com/jcmturner/gokrb5/v8 v8.4.2
- github.com/klauspost/compress v1.12.2
- github.com/kr/text v0.2.0 // indirect
- github.com/pierrec/lz4 v2.6.0+incompatible
- github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475
- github.com/stretchr/testify v1.7.0
- github.com/xdg/scram v1.0.3
- github.com/xdg/stringprep v1.0.3 // indirect
- golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect
- golang.org/x/net v0.0.0-20210614182718-04defd469f4e
- golang.org/x/text v0.3.6 // indirect
- golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
- gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
- gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
-)
diff --git a/vendor/github.com/Shopify/sarama/go.sum b/vendor/github.com/Shopify/sarama/go.sum
deleted file mode 100644
index a497760..0000000
--- a/vendor/github.com/Shopify/sarama/go.sum
+++ /dev/null
@@ -1,93 +0,0 @@
-github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q=
-github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
-github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
-github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY=
-github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
-github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA=
-github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
-github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
-github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
-github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=
-github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
-github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
-github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
-github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=
-github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=
-github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8=
-github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
-github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=
-github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=
-github.com/jcmturner/gokrb5/v8 v8.4.2 h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA=
-github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc=
-github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=
-github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
-github.com/klauspost/compress v1.12.2 h1:2KCfW3I9M7nSc5wOqXAlW2v2U6v+w6cbjvbfp+OykW8=
-github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
-github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A=
-github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
-github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/xdg/scram v1.0.3 h1:nTadYh2Fs4BK2xdldEa2g5bbaZp0/+1nJMMPtPxS/to=
-github.com/xdg/scram v1.0.3/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
-github.com/xdg/stringprep v1.0.3 h1:cmL5Enob4W83ti/ZHuZLuKD/xqJfus4fVPwE+/BDm+4=
-github.com/xdg/stringprep v1.0.3/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI=
-golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210427231257-85d9c07bbe3a h1:njMmldwFTyDLqonHMagNXKBWptTBeDZOdblgaDsNEGQ=
-golang.org/x/net v0.0.0-20210427231257-85d9c07bbe3a/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
-golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q=
-golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/vendor/github.com/cenkalti/backoff/v3/go.mod b/vendor/github.com/cenkalti/backoff/v3/go.mod
deleted file mode 100644
index 479e62a..0000000
--- a/vendor/github.com/cenkalti/backoff/v3/go.mod
+++ /dev/null
@@ -1,3 +0,0 @@
-module github.com/cenkalti/backoff/v3
-
-go 1.12
diff --git a/vendor/github.com/cespare/xxhash/v2/go.mod b/vendor/github.com/cespare/xxhash/v2/go.mod
deleted file mode 100644
index 49f6760..0000000
--- a/vendor/github.com/cespare/xxhash/v2/go.mod
+++ /dev/null
@@ -1,3 +0,0 @@
-module github.com/cespare/xxhash/v2
-
-go 1.11
diff --git a/vendor/github.com/cespare/xxhash/v2/go.sum b/vendor/github.com/cespare/xxhash/v2/go.sum
deleted file mode 100644
index e69de29..0000000
--- a/vendor/github.com/cespare/xxhash/v2/go.sum
+++ /dev/null
diff --git a/vendor/github.com/go-redis/redis/v8/go.mod b/vendor/github.com/go-redis/redis/v8/go.mod
deleted file mode 100644
index 7be1b7f..0000000
--- a/vendor/github.com/go-redis/redis/v8/go.mod
+++ /dev/null
@@ -1,11 +0,0 @@
-module github.com/go-redis/redis/v8
-
-go 1.11
-
-require (
- github.com/cespare/xxhash/v2 v2.1.1
- github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
- github.com/onsi/ginkgo v1.14.2
- github.com/onsi/gomega v1.10.3
- go.opentelemetry.io/otel v0.13.0
-)
diff --git a/vendor/github.com/go-redis/redis/v8/go.sum b/vendor/github.com/go-redis/redis/v8/go.sum
deleted file mode 100644
index e1e8ab1..0000000
--- a/vendor/github.com/go-redis/redis/v8/go.sum
+++ /dev/null
@@ -1,82 +0,0 @@
-github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
-github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
-github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=
-github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA=
-github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-go.opentelemetry.io/otel v0.13.0 h1:2isEnyzjjJZq6r2EKMsFj4TxiQiexsM04AVhwbR/oBA=
-go.opentelemetry.io/otel v0.13.0/go.mod h1:dlSNewoRYikTkotEnxdmuBHgzT+k/idJSfDv/FxEnOY=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M=
-golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/vendor/github.com/golang/snappy/go.mod b/vendor/github.com/golang/snappy/go.mod
deleted file mode 100644
index f6406bb..0000000
--- a/vendor/github.com/golang/snappy/go.mod
+++ /dev/null
@@ -1 +0,0 @@
-module github.com/golang/snappy
diff --git a/vendor/github.com/google/uuid/go.mod b/vendor/github.com/google/uuid/go.mod
deleted file mode 100644
index fc84cd7..0000000
--- a/vendor/github.com/google/uuid/go.mod
+++ /dev/null
@@ -1 +0,0 @@
-module github.com/google/uuid
diff --git a/vendor/github.com/grpc-ecosystem/go-grpc-middleware/go.mod b/vendor/github.com/grpc-ecosystem/go-grpc-middleware/go.mod
deleted file mode 100644
index 7dc62e5..0000000
--- a/vendor/github.com/grpc-ecosystem/go-grpc-middleware/go.mod
+++ /dev/null
@@ -1,22 +0,0 @@
-module github.com/grpc-ecosystem/go-grpc-middleware
-
-require (
- github.com/go-kit/kit v0.9.0
- github.com/go-logfmt/logfmt v0.4.0 // indirect
- github.com/go-stack/stack v1.8.0 // indirect
- github.com/gogo/protobuf v1.3.2
- github.com/golang/protobuf v1.3.3
- github.com/opentracing/opentracing-go v1.1.0
- github.com/pkg/errors v0.8.1 // indirect
- github.com/sirupsen/logrus v1.4.2
- github.com/stretchr/testify v1.4.0
- go.uber.org/atomic v1.4.0 // indirect
- go.uber.org/multierr v1.1.0 // indirect
- go.uber.org/zap v1.10.0
- golang.org/x/net v0.0.0-20201021035429-f5854403a974
- golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be
- google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215 // indirect
- google.golang.org/grpc v1.29.1
-)
-
-go 1.14
diff --git a/vendor/github.com/grpc-ecosystem/go-grpc-middleware/go.sum b/vendor/github.com/grpc-ecosystem/go-grpc-middleware/go.sum
deleted file mode 100644
index ee522cd..0000000
--- a/vendor/github.com/grpc-ecosystem/go-grpc-middleware/go.sum
+++ /dev/null
@@ -1,122 +0,0 @@
-cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ=
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk=
-github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA=
-github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
-github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
-github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
-github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
-github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
-github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=
-github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
-github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
-google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215 h1:0Uz5jLJQioKgVozXa1gzGbzYxbb/rhQEVvSWxzw5oUs=
-google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/vendor/github.com/hashicorp/go-uuid/go.mod b/vendor/github.com/hashicorp/go-uuid/go.mod
deleted file mode 100644
index dd57f9d..0000000
--- a/vendor/github.com/hashicorp/go-uuid/go.mod
+++ /dev/null
@@ -1 +0,0 @@
-module github.com/hashicorp/go-uuid
diff --git a/vendor/github.com/jcmturner/aescts/v2/go.mod b/vendor/github.com/jcmturner/aescts/v2/go.mod
deleted file mode 100644
index 034c3ce..0000000
--- a/vendor/github.com/jcmturner/aescts/v2/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module github.com/jcmturner/aescts/v2
-
-go 1.13
-
-require github.com/stretchr/testify v1.4.0
diff --git a/vendor/github.com/jcmturner/aescts/v2/go.sum b/vendor/github.com/jcmturner/aescts/v2/go.sum
deleted file mode 100644
index e863f51..0000000
--- a/vendor/github.com/jcmturner/aescts/v2/go.sum
+++ /dev/null
@@ -1,10 +0,0 @@
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/vendor/github.com/jcmturner/dnsutils/v2/go.mod b/vendor/github.com/jcmturner/dnsutils/v2/go.mod
deleted file mode 100644
index f75ac6d..0000000
--- a/vendor/github.com/jcmturner/dnsutils/v2/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module github.com/jcmturner/dnsutils/v2
-
-go 1.13
-
-require github.com/stretchr/testify v1.4.0
diff --git a/vendor/github.com/jcmturner/dnsutils/v2/go.sum b/vendor/github.com/jcmturner/dnsutils/v2/go.sum
deleted file mode 100644
index e863f51..0000000
--- a/vendor/github.com/jcmturner/dnsutils/v2/go.sum
+++ /dev/null
@@ -1,10 +0,0 @@
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/vendor/github.com/opentracing/opentracing-go/go.mod b/vendor/github.com/opentracing/opentracing-go/go.mod
deleted file mode 100644
index bf48bb5..0000000
--- a/vendor/github.com/opentracing/opentracing-go/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module github.com/opentracing/opentracing-go
-
-go 1.14
-
-require github.com/stretchr/testify v1.3.0
diff --git a/vendor/github.com/opentracing/opentracing-go/go.sum b/vendor/github.com/opentracing/opentracing-go/go.sum
deleted file mode 100644
index 4347755..0000000
--- a/vendor/github.com/opentracing/opentracing-go/go.sum
+++ /dev/null
@@ -1,7 +0,0 @@
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
diff --git a/vendor/go.opentelemetry.io/otel/go.mod b/vendor/go.opentelemetry.io/otel/go.mod
deleted file mode 100644
index 95f9aa4..0000000
--- a/vendor/go.opentelemetry.io/otel/go.mod
+++ /dev/null
@@ -1,8 +0,0 @@
-module go.opentelemetry.io/otel
-
-go 1.14
-
-require (
- github.com/google/go-cmp v0.5.2
- github.com/stretchr/testify v1.6.1
-)
diff --git a/vendor/go.opentelemetry.io/otel/go.sum b/vendor/go.opentelemetry.io/otel/go.sum
deleted file mode 100644
index bf1148d..0000000
--- a/vendor/go.opentelemetry.io/otel/go.sum
+++ /dev/null
@@ -1,15 +0,0 @@
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/vendor/go.uber.org/atomic/go.mod b/vendor/go.uber.org/atomic/go.mod
deleted file mode 100644
index daa7599..0000000
--- a/vendor/go.uber.org/atomic/go.mod
+++ /dev/null
@@ -1,8 +0,0 @@
-module go.uber.org/atomic
-
-require (
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/stretchr/testify v1.3.0
-)
-
-go 1.13
diff --git a/vendor/go.uber.org/atomic/go.sum b/vendor/go.uber.org/atomic/go.sum
deleted file mode 100644
index 4f76e62..0000000
--- a/vendor/go.uber.org/atomic/go.sum
+++ /dev/null
@@ -1,9 +0,0 @@
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
diff --git a/vendor/go.uber.org/multierr/go.mod b/vendor/go.uber.org/multierr/go.mod
deleted file mode 100644
index ff8bdf9..0000000
--- a/vendor/go.uber.org/multierr/go.mod
+++ /dev/null
@@ -1,8 +0,0 @@
-module go.uber.org/multierr
-
-go 1.12
-
-require (
- github.com/stretchr/testify v1.3.0
- go.uber.org/atomic v1.7.0
-)
diff --git a/vendor/go.uber.org/multierr/go.sum b/vendor/go.uber.org/multierr/go.sum
deleted file mode 100644
index ecfc286..0000000
--- a/vendor/go.uber.org/multierr/go.sum
+++ /dev/null
@@ -1,11 +0,0 @@
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
diff --git a/vendor/go.uber.org/zap/go.mod b/vendor/go.uber.org/zap/go.mod
deleted file mode 100644
index 9455c99..0000000
--- a/vendor/go.uber.org/zap/go.mod
+++ /dev/null
@@ -1,14 +0,0 @@
-module go.uber.org/zap
-
-go 1.13
-
-require (
- github.com/benbjohnson/clock v1.1.0
- github.com/pkg/errors v0.8.1
- github.com/stretchr/testify v1.7.0
- go.uber.org/atomic v1.7.0
- go.uber.org/goleak v1.1.10
- go.uber.org/multierr v1.6.0
- gopkg.in/yaml.v2 v2.2.8
- gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
-)
diff --git a/vendor/go.uber.org/zap/go.sum b/vendor/go.uber.org/zap/go.sum
deleted file mode 100644
index b330071..0000000
--- a/vendor/go.uber.org/zap/go.sum
+++ /dev/null
@@ -1,54 +0,0 @@
-github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
-github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0=
-go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
-go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20191108193012-7d206e10da11 h1:Yq9t9jnGoR+dBuitxdo9l6Q7xh/zOyNnYUtDKaQ3x0E=
-golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/vendor/google.golang.org/grpc/go.mod b/vendor/google.golang.org/grpc/go.mod
deleted file mode 100644
index dc56aa7..0000000
--- a/vendor/google.golang.org/grpc/go.mod
+++ /dev/null
@@ -1,16 +0,0 @@
-module google.golang.org/grpc
-
-go 1.11
-
-require (
- github.com/envoyproxy/go-control-plane v0.9.0
- github.com/envoyproxy/protoc-gen-validate v0.1.0
- github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
- github.com/golang/mock v1.1.1
- github.com/golang/protobuf v1.3.2
- github.com/google/go-cmp v0.2.0
- golang.org/x/net v0.0.0-20190311183353-d8887717615a
- golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be
- golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
- google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55
-)
diff --git a/vendor/google.golang.org/grpc/go.sum b/vendor/google.golang.org/grpc/go.sum
deleted file mode 100644
index f6a4784..0000000
--- a/vendor/google.golang.org/grpc/go.sum
+++ /dev/null
@@ -1,53 +0,0 @@
-cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ=
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/envoyproxy/go-control-plane v0.9.0 h1:67WMNTvGrl7V1dWdKCeTwxDr7nio9clKoTlLhwIPnT4=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
-google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/vendor/gopkg.in/yaml.v3/go.mod b/vendor/gopkg.in/yaml.v3/go.mod
deleted file mode 100644
index f407ea3..0000000
--- a/vendor/gopkg.in/yaml.v3/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module "gopkg.in/yaml.v3"
-
-require (
- "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405
-)
diff --git a/vendor/modules.txt b/vendor/modules.txt
index e4a06e9..5a623a5 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1,17 +1,23 @@
# github.com/Shopify/sarama v1.29.1
+## explicit; go 1.13
github.com/Shopify/sarama
# github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d
+## explicit
github.com/boljen/go-bitmap
# github.com/bsm/sarama-cluster v2.1.15+incompatible
+## explicit
github.com/bsm/sarama-cluster
# github.com/cenkalti/backoff/v3 v3.1.1
-## explicit
+## explicit; go 1.12
github.com/cenkalti/backoff/v3
# github.com/cespare/xxhash/v2 v2.1.1
+## explicit; go 1.11
github.com/cespare/xxhash/v2
# github.com/cevaris/ordered_map v0.0.0-20190319150403-3adeae072e73
+## explicit
github.com/cevaris/ordered_map
# github.com/coreos/etcd v3.3.25+incompatible
+## explicit
github.com/coreos/etcd/auth/authpb
github.com/coreos/etcd/clientv3/balancer
github.com/coreos/etcd/clientv3/balancer/connectivity
@@ -28,22 +34,31 @@
github.com/coreos/etcd/raft/raftpb
github.com/coreos/etcd/version
# github.com/coreos/go-semver v0.3.0
+## explicit
github.com/coreos/go-semver/semver
# github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
+## explicit
github.com/coreos/go-systemd/journal
# github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f
+## explicit
github.com/coreos/pkg/capnslog
# github.com/davecgh/go-spew v1.1.1
+## explicit
github.com/davecgh/go-spew/spew
# github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
+## explicit
github.com/dgryski/go-rendezvous
# github.com/eapache/go-resiliency v1.2.0
+## explicit
github.com/eapache/go-resiliency/breaker
# github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21
+## explicit
github.com/eapache/go-xerial-snappy
# github.com/eapache/queue v1.1.0
+## explicit
github.com/eapache/queue
# github.com/go-redis/redis/v8 v8.3.4
+## explicit; go 1.11
github.com/go-redis/redis/v8
github.com/go-redis/redis/v8/internal
github.com/go-redis/redis/v8/internal/hashtag
@@ -52,12 +67,12 @@
github.com/go-redis/redis/v8/internal/rand
github.com/go-redis/redis/v8/internal/util
# github.com/gogo/protobuf v1.3.2
-## explicit
+## explicit; go 1.15
github.com/gogo/protobuf/gogoproto
github.com/gogo/protobuf/proto
github.com/gogo/protobuf/protoc-gen-gogo/descriptor
# github.com/golang/protobuf v1.5.2
-## explicit
+## explicit; go 1.9
github.com/golang/protobuf/jsonpb
github.com/golang/protobuf/proto
github.com/golang/protobuf/protoc-gen-go/descriptor
@@ -69,11 +84,13 @@
github.com/golang/protobuf/ptypes/timestamp
github.com/golang/protobuf/ptypes/wrappers
# github.com/golang/snappy v0.0.3
+## explicit
github.com/golang/snappy
# github.com/google/uuid v1.3.0
+## explicit
github.com/google/uuid
# github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
-## explicit
+## explicit; go 1.14
github.com/grpc-ecosystem/go-grpc-middleware
github.com/grpc-ecosystem/go-grpc-middleware/retry
github.com/grpc-ecosystem/go-grpc-middleware/tags
@@ -81,15 +98,20 @@
github.com/grpc-ecosystem/go-grpc-middleware/util/backoffutils
github.com/grpc-ecosystem/go-grpc-middleware/util/metautils
# github.com/hashicorp/go-uuid v1.0.2
+## explicit
github.com/hashicorp/go-uuid
# github.com/jcmturner/aescts/v2 v2.0.0
+## explicit; go 1.13
github.com/jcmturner/aescts/v2
# github.com/jcmturner/dnsutils/v2 v2.0.0
+## explicit; go 1.13
github.com/jcmturner/dnsutils/v2
# github.com/jcmturner/gofork v1.0.0
+## explicit
github.com/jcmturner/gofork/encoding/asn1
github.com/jcmturner/gofork/x/crypto/pbkdf2
# github.com/jcmturner/gokrb5/v8 v8.4.2
+## explicit; go 1.14
github.com/jcmturner/gokrb5/v8/asn1tools
github.com/jcmturner/gokrb5/v8/client
github.com/jcmturner/gokrb5/v8/config
@@ -121,9 +143,11 @@
github.com/jcmturner/gokrb5/v8/pac
github.com/jcmturner/gokrb5/v8/types
# github.com/jcmturner/rpc/v2 v2.0.3
+## explicit; go 1.13
github.com/jcmturner/rpc/v2/mstypes
github.com/jcmturner/rpc/v2/ndr
# github.com/jhump/protoreflect v1.10.2
+## explicit; go 1.13
github.com/jhump/protoreflect/codec
github.com/jhump/protoreflect/desc
github.com/jhump/protoreflect/desc/internal
@@ -133,12 +157,13 @@
github.com/jhump/protoreflect/internal
github.com/jhump/protoreflect/internal/codec
# github.com/klauspost/compress v1.12.2
+## explicit; go 1.13
github.com/klauspost/compress/fse
github.com/klauspost/compress/huff0
github.com/klauspost/compress/zstd
github.com/klauspost/compress/zstd/internal/xxhash
# github.com/opencord/voltha-lib-go/v7 v7.6.7
-## explicit
+## explicit; go 1.16
github.com/opencord/voltha-lib-go/v7/pkg/config
github.com/opencord/voltha-lib-go/v7/pkg/db
github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore
@@ -157,7 +182,7 @@
github.com/opencord/voltha-lib-go/v7/pkg/techprofile
github.com/opencord/voltha-lib-go/v7/pkg/version
# github.com/opencord/voltha-protos/v5 v5.6.2
-## explicit
+## explicit; go 1.16
github.com/opencord/voltha-protos/v5/go/adapter_service
github.com/opencord/voltha-protos/v5/go/common
github.com/opencord/voltha-protos/v5/go/core_adapter
@@ -176,24 +201,31 @@
github.com/opencord/voltha-protos/v5/go/voip_user_profile
github.com/opencord/voltha-protos/v5/go/voltha
# github.com/opentracing/opentracing-go v1.2.0
+## explicit; go 1.14
github.com/opentracing/opentracing-go
github.com/opentracing/opentracing-go/ext
github.com/opentracing/opentracing-go/log
# github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2
+## explicit
github.com/phayes/freeport
# github.com/pierrec/lz4 v2.6.0+incompatible
+## explicit
github.com/pierrec/lz4
github.com/pierrec/lz4/internal/xxh32
# github.com/pkg/errors v0.9.1
+## explicit
github.com/pkg/errors
# github.com/pmezard/go-difflib v1.0.0
+## explicit
github.com/pmezard/go-difflib/difflib
# github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475
+## explicit
github.com/rcrowley/go-metrics
# github.com/stretchr/testify v1.7.0
-## explicit
+## explicit; go 1.13
github.com/stretchr/testify/assert
# github.com/uber/jaeger-client-go v2.29.1+incompatible
+## explicit
github.com/uber/jaeger-client-go
github.com/uber/jaeger-client-go/config
github.com/uber/jaeger-client-go/internal/baggage
@@ -213,6 +245,7 @@
github.com/uber/jaeger-client-go/transport
github.com/uber/jaeger-client-go/utils
# github.com/uber/jaeger-lib v2.4.1+incompatible
+## explicit
github.com/uber/jaeger-lib/metrics
# go.etcd.io/etcd v3.3.25+incompatible
## explicit
@@ -220,6 +253,7 @@
go.etcd.io/etcd/etcdserver/api/v3rpc/rpctypes
go.etcd.io/etcd/pkg/mock/mockserver
# go.opentelemetry.io/otel v0.13.0
+## explicit; go 1.14
go.opentelemetry.io/otel
go.opentelemetry.io/otel/api/global
go.opentelemetry.io/otel/api/global/internal
@@ -233,10 +267,13 @@
go.opentelemetry.io/otel/label
go.opentelemetry.io/otel/unit
# go.uber.org/atomic v1.7.0
+## explicit; go 1.13
go.uber.org/atomic
# go.uber.org/multierr v1.6.0
+## explicit; go 1.12
go.uber.org/multierr
# go.uber.org/zap v1.18.1
+## explicit; go 1.13
go.uber.org/zap
go.uber.org/zap/buffer
go.uber.org/zap/internal/bufferpool
@@ -244,9 +281,11 @@
go.uber.org/zap/internal/exit
go.uber.org/zap/zapcore
# golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e
+## explicit; go 1.17
golang.org/x/crypto/md4
golang.org/x/crypto/pbkdf2
# golang.org/x/net v0.0.0-20210614182718-04defd469f4e
+## explicit; go 1.17
golang.org/x/net/context
golang.org/x/net/http/httpguts
golang.org/x/net/http2
@@ -257,18 +296,21 @@
golang.org/x/net/proxy
golang.org/x/net/trace
# golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1
+## explicit; go 1.17
golang.org/x/sys/internal/unsafeheader
golang.org/x/sys/unix
# golang.org/x/text v0.3.6
+## explicit; go 1.11
golang.org/x/text/secure/bidirule
golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
# google.golang.org/genproto v0.0.0-20220208230804-65c12eb4c068
+## explicit; go 1.15
google.golang.org/genproto/googleapis/api/annotations
google.golang.org/genproto/googleapis/rpc/status
# google.golang.org/grpc v1.44.0 => google.golang.org/grpc v1.25.1
-## explicit
+## explicit; go 1.11
google.golang.org/grpc
google.golang.org/grpc/backoff
google.golang.org/grpc/balancer
@@ -309,6 +351,7 @@
google.golang.org/grpc/status
google.golang.org/grpc/tap
# google.golang.org/protobuf v1.27.1
+## explicit; go 1.9
google.golang.org/protobuf/encoding/protojson
google.golang.org/protobuf/encoding/prototext
google.golang.org/protobuf/encoding/protowire
@@ -345,6 +388,7 @@
google.golang.org/protobuf/types/known/timestamppb
google.golang.org/protobuf/types/known/wrapperspb
# gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
+## explicit
gopkg.in/yaml.v3
# github.com/coreos/bbolt v1.3.4 => go.etcd.io/bbolt v1.3.4
# go.etcd.io/bbolt v1.3.4 => github.com/coreos/bbolt v1.3.4