88 "log"
99 "reflect"
1010 "strings"
11+ "time"
1112
1213 oci_common "github.com/oracle/oci-go-sdk/v36/common"
1314)
@@ -30,6 +31,7 @@ type customError struct {
3031 OpcRequestID string
3132 ResourceOCID string
3233 Suggestion string
34+ VersionError string
3335}
3436
3537// Create new error format for Terraform output
@@ -68,6 +70,7 @@ func newCustomError(sync interface{}, err error) error {
6870 return err
6971 }
7072
73+ tfError .VersionError = getVersionAndDateError ()
7174 tfError .Suggestion = getSuggestionFromError (tfError )
7275 return tfError .Error ()
7376}
@@ -76,24 +79,27 @@ func (tfE customError) Error() error {
7679 switch tfE .TypeOfError {
7780 case ServiceError :
7881 return fmt .Errorf ("%d-%s \n " +
82+ "%s \n " +
7983 "Service: %s \n " +
8084 "Error Message: %s \n " +
8185 "OPC request ID: %s \n " +
8286 "Suggestion: %s\n " ,
83- tfE .ErrorCode , tfE .ErrorCodeName , tfE .Service , tfE .Message , tfE .OpcRequestID , tfE .Suggestion )
87+ tfE .ErrorCode , tfE .ErrorCodeName , tfE .VersionError , tfE . Service , tfE .Message , tfE .OpcRequestID , tfE .Suggestion )
8488 case TimeoutError :
8589 return fmt .Errorf ("%s \n " +
90+ "%s \n " +
8691 "Service: %s \n " +
8792 "Error Message: %s \n " +
8893 "Suggestion: %s\n " ,
89- tfE .ErrorCodeName , tfE .Service , tfE .Message , tfE .Suggestion )
94+ tfE .ErrorCodeName , tfE .VersionError , tfE . Service , tfE .Message , tfE .Suggestion )
9095 case UnexpectedStateError :
9196 return fmt .Errorf ("%s \n " +
97+ "%s \n " +
9298 "Service: %s \n " +
9399 "Error Message: %s \n " +
94100 "Resource OCID: %s \n " +
95101 "Suggestion: %s\n " ,
96- tfE .ErrorCodeName , tfE .Service , tfE .Message , tfE .ResourceOCID , tfE .Suggestion )
102+ tfE .ErrorCodeName , tfE .VersionError , tfE . Service , tfE .Message , tfE .ResourceOCID , tfE .Suggestion )
97103 default :
98104 return fmt .Errorf (tfE .Message )
99105 }
@@ -144,3 +150,16 @@ func getResourceOCID(sync interface{}) string {
144150 }
145151 return ""
146152}
153+
154+ func getVersionAndDateError () string {
155+ result := fmt .Sprintf ("Provider version: %s, released on %s. " , Version , ReleaseDate )
156+ today := time .Now ()
157+ releaseDate , _ := time .Parse ("2006-01-02" , ReleaseDate )
158+ days := today .Sub (releaseDate ).Hours () / 24
159+
160+ if days > 7 {
161+ versionOld := int (days / 7 )
162+ result += fmt .Sprintf ("This provider is %v updates behind to current." , versionOld )
163+ }
164+ return result
165+ }
0 commit comments