@@ -18,8 +18,8 @@ import (
1818
1919type errorTypeEnum string
2020
21- var serviceErrorCheck = func (err error ) (failure oci_common.ServiceErrorRichInfo , ok bool ) {
22- return oci_common .IsServiceErrorRichInfo (err )
21+ var serviceErrorCheck = func (err error ) (failure oci_common.ServiceErrorLocalizationMessage , ok bool ) {
22+ return oci_common .IsServiceErrorLocalizationMessage (err )
2323}
2424
2525const (
@@ -30,19 +30,22 @@ const (
3030)
3131
3232type customError struct {
33- TypeOfError errorTypeEnum
34- ErrorCode int
35- ErrorCodeName string
36- Service string
37- Message string
38- OpcRequestID string
39- ResourceOCID string
40- OperationName string
41- RequestTarget string
42- Suggestion string
43- VersionError string
44- ResourceDocs string
45- SdkApiDocs string
33+ TypeOfError errorTypeEnum
34+ ErrorCode int
35+ ErrorCodeName string
36+ Service string
37+ Message string
38+ OriginalMessage string
39+ OriginalMessageTemplate string
40+ MessageArgument map [string ]string
41+ OpcRequestID string
42+ ResourceOCID string
43+ OperationName string
44+ RequestTarget string
45+ Suggestion string
46+ VersionError string
47+ ResourceDocs string
48+ SdkApiDocs string
4649}
4750
4851// Create new error format for Terraform output
@@ -53,16 +56,19 @@ func newCustomError(sync interface{}, err error) error {
5356 // Service error
5457 if failure , isServiceError := serviceErrorCheck (err ); isServiceError {
5558 tfError = customError {
56- TypeOfError : ServiceError ,
57- ErrorCode : failure .GetHTTPStatusCode (),
58- ErrorCodeName : failure .GetCode (),
59- Message : failure .GetMessage (),
60- OpcRequestID : failure .GetOpcRequestID (),
61- OperationName : failure .GetOperationName (),
62- RequestTarget : failure .GetRequestTarget (),
63- Service : getServiceName (sync ),
64- ResourceDocs : getResourceDocsURL (sync ),
65- SdkApiDocs : failure .GetOperationReferenceLink (),
59+ TypeOfError : ServiceError ,
60+ ErrorCode : failure .GetHTTPStatusCode (),
61+ ErrorCodeName : failure .GetCode (),
62+ Message : failure .GetMessage (),
63+ OriginalMessage : failure .GetOriginalMessage (),
64+ OriginalMessageTemplate : failure .GetOriginalMessageTemplate (),
65+ MessageArgument : failure .GetMessageArgument (),
66+ OpcRequestID : failure .GetOpcRequestID (),
67+ OperationName : failure .GetOperationName (),
68+ RequestTarget : failure .GetRequestTarget (),
69+ Service : getServiceName (sync ),
70+ ResourceDocs : getResourceDocsURL (sync ),
71+ SdkApiDocs : failure .GetOperationReferenceLink (),
6672 }
6773 } else if strings .Contains (errorMessage , "timeout while waiting for state" ) {
6874 // Timeout error
@@ -102,17 +108,28 @@ func newCustomError(sync interface{}, err error) error {
102108func (tfE customError ) Error () error {
103109 switch tfE .TypeOfError {
104110 case ServiceError :
105- return fmt .Errorf ("%d-%s, %s \n " +
106- "Suggestion: %s\n " +
111+ var serviceError string
112+
113+ shortErrorDescription := fmt .Sprintf ("%d-%s, %s\n " , tfE .ErrorCode , tfE .ErrorCodeName , tfE .Message )
114+ detailedDescription := fmt .Sprintf ("Suggestion: %s\n " +
107115 "Documentation: %s \n " +
108116 "API Reference: %s \n " +
109117 "Request Target: %s \n " +
110118 "%s \n " +
111119 "Service: %s \n " +
112120 "Operation Name: %s \n " +
113121 "OPC request ID: %s \n " ,
114- tfE .ErrorCode , tfE . ErrorCodeName , tfE . Message , tfE . Suggestion , tfE .ResourceDocs , tfE .SdkApiDocs , tfE .RequestTarget ,
122+ tfE .Suggestion , tfE .ResourceDocs , tfE .SdkApiDocs , tfE .RequestTarget ,
115123 tfE .VersionError , tfE .Service , tfE .OperationName , tfE .OpcRequestID )
124+ furtherInfo := fmt .Sprintf ("Further Information: %s\n " , tfE .OriginalMessage )
125+
126+ if tfE .OriginalMessage == "" {
127+ serviceError = shortErrorDescription + detailedDescription
128+ } else {
129+ // For compute out of host capacity error support
130+ serviceError = shortErrorDescription + furtherInfo + detailedDescription
131+ }
132+ return fmt .Errorf (serviceError )
116133 case TimeoutError :
117134 return fmt .Errorf ("%s \n " +
118135 "%s \n " +
0 commit comments