First Commit of Voltha-Go-Controller from Radisys
Change-Id: I8e2e908e7ab09a4fe3d86849da18b6d69dcf4ab0
diff --git a/internal/pkg/errorcodes/service/errors.go b/internal/pkg/errorcodes/service/errors.go
new file mode 100644
index 0000000..a25278d
--- /dev/null
+++ b/internal/pkg/errorcodes/service/errors.go
@@ -0,0 +1,122 @@
+/*
+* Copyright 2022-present Open Networking Foundation
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+ */
+
+// Package service provides constants.
+package service
+
+const (
+ errorCodeStartRange = 1000
+)
+
+const (
+ // VolthaErrorMessageFormat represents the format in which the Voltha accepts the errors.
+ VolthaErrorMessageFormat = "code = %d, desc = %s"
+)
+
+// ErrorCode is Enum of error type
+type ErrorCode int
+
+//ErrorAction is Enum for error action
+type ErrorAction int
+
+const (
+ //ErrOk is returned when request is successful
+ ErrOk ErrorCode = 0
+ //ErrInProgress is returned when operation is in progress
+ ErrInProgress ErrorCode = iota + errorCodeStartRange
+ //ErrInvalidParm is returned when parameter is wrong
+ ErrInvalidParm
+ //ErrResourceUnavailable is returned when no free resources are available
+ ErrResourceUnavailable
+ //ErrAlreadyExists is returned when entry already exists
+ ErrAlreadyExists
+ //ErrNotExists is returned when entry does not exists
+ ErrNotExists
+ //ErrInvalidOperation is returned when invalid operation is performed
+ ErrInvalidOperation
+ //ErrDeviceNotConnected is returned when there is no connection with the target system
+ ErrDeviceNotConnected
+ //ErrTimeout is returned when operation times out
+ ErrTimeout
+ //ErrResourceBusy is returned when resource is busy
+ ErrResourceBusy
+ //ErrInternal is returned when Errors happened internally
+ ErrInternal
+ //ErrIo is returned when there is I/O error
+ ErrIo
+ //ErrMandatoryParmIsMissing is returned when mandatory parameter is missing
+ ErrMandatoryParmIsMissing
+ //ErrBadState is returned when object is in bad state
+ ErrBadState
+ //ErrOnuInternal is returned when ONT internal failure occurs
+ ErrOnuInternal
+ //ErrElanNotCreated is returned when ELAN is not created
+ ErrElanNotCreated
+ //ErrOltInternal is returned when OLT internal failure occurs
+ ErrOltInternal
+)
+
+//ErrorCodeMap converts error code to error description string
+var ErrorCodeMap = map[ErrorCode]string{
+ ErrOk: "Success",
+ ErrInProgress: "Operation is in progress",
+ ErrInvalidParm: "Invalid parameter",
+ ErrResourceUnavailable: "No free resource available",
+ ErrAlreadyExists: "Entry already exists",
+ ErrNotExists: "Entry does not exists",
+ ErrInvalidOperation: "Invalid Operation",
+ ErrDeviceNotConnected: "No connection with the target system",
+ ErrTimeout: "Operation timed out",
+ ErrResourceBusy: "Resource Busy",
+ ErrInternal: "Internal Error",
+ ErrIo: "I/O Error",
+ ErrMandatoryParmIsMissing: "Mandatory parameter is missing",
+ ErrBadState: "Object is in bad state",
+ ErrOnuInternal: "ONT internal error",
+ ErrElanNotCreated: "ELAN not created",
+ ErrOltInternal: "OLT internal error",
+}
+
+const (
+ //Retry is returned if subservice reactivation is required
+ Retry ErrorAction = iota
+ //Quiet is returned if no action has to be taken
+ Quiet
+ //Deactivate is returned if subservice has to be deactivated
+ Deactivate
+ //Invalid is returned when invalid error is received from vgc
+ Invalid
+)
+
+//RetryErrorCodeMap consists of errors that requires service activation retry
+var RetryErrorCodeMap = map[ErrorCode]ErrorAction{
+ ErrOk: Quiet,
+ ErrInProgress: Deactivate,
+ ErrInvalidParm: Deactivate,
+ ErrResourceUnavailable: Deactivate,
+ ErrAlreadyExists: Quiet,
+ ErrNotExists: Quiet,
+ ErrInvalidOperation: Deactivate,
+ ErrDeviceNotConnected: Quiet,
+ ErrTimeout: Retry,
+ ErrResourceBusy: Retry,
+ ErrInternal: Deactivate,
+ ErrIo: Retry,
+ ErrMandatoryParmIsMissing: Deactivate,
+ ErrBadState: Deactivate,
+ ErrOnuInternal: Retry,
+ ErrElanNotCreated: Retry,
+ ErrOltInternal: Deactivate,
+}