###
# ============LICENSE_START=======================================================
# ECOMP MSO
# ================================================================================
# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# 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.
# ============LICENSE_END=========================================================
###

########################################################################
#Resource key=Error Code|Message text|Resolution text |Description text
#######
# {component}-{subcomponent}-{4-digit code}{classification}
#Newlines can be utilized to add some clarity ensuring continuing line
#has atleast one leading space
#ResourceKey=\
#             ERR0000E\
#             Sample error msg txt\
#             Sample resolution msg\
#             Sample description txt
#
#######
#Error code classification category
#1000-1099	Security/Permission Related
#2000-2099	Availability/Timeout Related
#3000-3099	Data Access/Integrity Related
#4000-4099	Schema Interface Type/Validation
#5000-5099	Business/Flow Processing Related
#6000-8099	Reserved \u2013 do not use
#9000-9099	Unknown Errors
#
######
#{classification} description
# I = Information
# W = Warning
# E = Error
# F = Fatal
########################################################################
APIH_QUERY_FOUND=\
				  MSO-APIH-3000I|\
                  Requests found when query DB with parameters {0}={1}|\
                  No resolution needed|\
                  Requests found when API Handler query DB
APIH_QUERY_NOT_FOUND=\
                  MSO-APIH-3001I|\
                  Request not found when query DB with parameters {0}={1}|\
                  No resolution needed|\
                  Request not found when API Handler query DB
APIH_DB_ACCESS_EXC=\
                  MSO-APIH-3003E|\
                  Unable to access DB|\
                  Please check other logs for more detailed info|\
                  Unable to access DB
APIH_DB_ACCESS_EXC_REASON=\
                  MSO-APIH-3005E|\
                  Unable to access DB: {0}|\
                  Please check other logs for more detailed info|\
                  Unable to access DB
APIH_DB_ATTRIBUTE_NOT_FOUND=\
                  MSO-APIH-3006E|\
                  Attribute {0} not found in DB|\
                  Please check other logs for more detailed info|\
                  Attribute not found in DB
APIH_DB_INSERT_EXC=\
                  MSO-APIH-3007E|\
                  Unable to insert record to DB|\
                  Please check other logs for more detailed info|\
                  Unable to insert record to DB
APIH_DB_UPDATE_EXC=\
                  MSO-APIH-3008E|\
                  Unable to update record to DB: {0}|\
                  Please check other logs for more detailed info|\
                  Unable to insert record to DB                                                                              
APIH_VALIDATION_ERROR=\
                  MSO-APIH-4000E|\
                  Validation failed|\
                  Please check other logs for more detailed info|\
                  Validation failed   
APIH_REQUEST_VALIDATION_ERROR=\
                  MSO-APIH-4001E|\
                  Validation of the input request failed, for incoming request:{0}|\
                  Please check other logs for more detailed info|\
                  Validation of the input request failed
APIH_SERVICE_VALIDATION_ERROR=\
                  MSO-APIH-4002E|\
                  Service params failed schema validation|\
                  Please check other logs for more detailed info|\
                  Service params failed schema validation  
APIH_REQUEST_VALIDATION_ERROR_REASON=\
                  MSO-APIH-4003E|\
                  Validation of the input request failed:{0}|\
                  Please verify the input request|\
                  Validation of the input request failed 
APIH_VNFREQUEST_VALIDATION_ERROR=\
                  MSO-APIH-4004E|\
                  Validation of the VNF Request failed|\
                  Please verify the VNF Request|\
                  Validation of the VNF Request failed                                                           
APIH_QUERY_PARAM_WRONG=\
                  MSO-APIH-5003W|\
                  Bad Request: {0}|\
                  Please verify the request|\
                  Bad Request
APIH_GENERAL_WARNING=\
                  MSO-APIH-5004W|\
                  WARNING: {0}|\
                  Please check other logs for more detailed info|\
                  General warning 
APIH_AUDIT_EXEC=\
                  MSO-APIH-5005I|\
                  Executing request: {0}. {1}|\
                  No resolution needed|\
                  Executing method
APIH_GENERAL_METRICS=\
                  MSO-APIH-5008I|\
                  Executed method: {0}. {1}|\
                  No resolution needed|\
                  Generate information for Metric events   
APIH_REQUEST_NULL=\
				          MSO-APIH-5009W|\
                  The request received by MSO is null|\
                  Please check other logs for more detailed info|\
                  The request received by MSO is null  
APIH_DUPLICATE_FOUND=\
				          MSO-APIH-5011W|\
                  Duplicated request found: {0}|\
                  Please check other logs for more detailed info|\
                  Duplicated request found 
APIH_BAD_ORDER=\
				          MSO-APIH-5012W|\
                  Request received with wrong order: {0}|\
                  Please check other logs for more detailed info|\
                  Request received with wrong order                        
APIH_BPEL_RESPONSE_ERROR=\
				          MSO-APIH-5014E|\
                  Abnormal response received from BPEL server: {0}|\
                  Please check other logs for more detailed info|\
                  Abnormal response received from BPEL server  
APIH_WARP_REQUEST=\
				          MSO-APIH-5015E|\
                  Error wrapping request|\
                  Please check other logs for more detailed info|\
                  Error wrapping request to be sent to BPEL server   
APIH_ERROR_FROM_BPEL_SERVER=\
				          MSO-APIH-5016E|\
                  Error from {0} with status:{1} and responseBody:{2}|\
                  Please check other logs for more detailed info|\
                  Error from BPEL Server
APIH_CANNOT_READ_SCHEMA=\
				          MSO-APIH-5017E|\
                  MSO Configuration Error - Unable to read the schema file|\
                  Please check other logs for more detailed info|\
                  MSO Configuration Error - Unable to read the schema file  
APIH_PROPERTY_LOAD_SUC=\
				          MSO-APIH-5018I|\
                  Properties file loaded successfully|\
                  No resolution needed|\
                  Properties file loaded successfully   
APIH_NO_PROPERTIES=\
				          MSO-APIH-5019E|\
                  Missing or invalid properties file: {0}|\
                  Please verify whether properties file exist or redable|\
                  Missing or invalid properties file
APIH_LOAD_PROPERTIES_FAIL=\
				          MSO-APIH-5020E|\
                  Unable to load properties file: {0}|\
                  Please verify whether properties file exist or redable|\
                  Unable to load properties file
APIH_GENERATED_REQUEST_ID=\
				          MSO-APIH-5021I|\
                  Missing requestID. Assigned {0}|\
                  No resolution needed|\
                  Request ID is not available
APIH_REPLACE_REQUEST_ID=\
				          MSO-APIH-5022I|\
                  Replaced invalid requestID of {0}|\
                  No resolution needed|\
                  Request ID received is not compliant with ECOMP Standards
APIH_GENERATED_SERVICE_INSTANCE_ID=\
				          MSO-APIH-5023I|\
                  Missing serviceInstanceID. Assigned {0}|\
                  No resolution needed|\
                  Service Instance ID is not available
APIH_GENERAL_EXCEPTION_ARG=\
                  MSO-APIH-9000E|\
                  Exception: {0}|\
                  Please check other logs for more detailed info|\
                  General exception with reason
APIH_GENERAL_EXCEPTION=\
                  MSO-APIH-9001E|\
                  Exception encountered|\
                  Please check other logs for more detailed info|\
                  Exception encountered   
APIH_HEALTH_CHECK_EXCEPTION=\
                  MSO-APIH-9002E|\
                  Exception during health check|\
                  Please check other logs for more detailed info|\
                  Exception during health check
APIH_READ_VNFOUTPUT_CLOB_EXCEPTION=\
                  MSO-APIH-9003E|\
                  Exception reading vnfOutputs Clob|\
                  Please check other logs for more detailed info|\
                  Exception reading vnfOutputs Clob
APIH_DUPLICATE_CHECK_EXC=\
				          MSO-APIH-9004E|\
                  Exception during the duplication check for post services|\
                  Please check other logs for more detailed info|\
                  Exception during the duplicate check for post services
APIH_BPEL_COMMUNICATE_ERROR=\
				          MSO-APIH-9005E|\
                  Exception during BPEL POST|\
                  Please check other logs for more detailed info|\
                  Exception during BPEL POST 
APIH_SDNC_COMMUNICATE_ERROR=\
				          MSO-APIH-9006E|\
                  Exception when sending HTTP POST request to SDNC Adapter|\
                  Please check other logs for more detailed info|\
                  Exception when sending HTTP POST request to SDNC Adapter 
APIH_SDNC_RESPONSE_ERROR=\
				          MSO-APIH-9007E|\
                  IOException getting SDNC Adapter response body|\
                  Please check other logs for more detailed info|\
                  IOException getting SDNC Adapter response body 
APIH_JAXB_MARSH_ERROR=\
				          MSO-APIH-9008E|\
                  Exception when translating query results into string with Jaxb|\
                  Please check other logs for more detailed info|\
                  Exception when translating query results into string with Jaxb 
APIH_JAXB_UNMARSH_ERROR=\
				          MSO-APIH-9009E|\
                  Exception when formatting for VNF outputs with Jaxb|\
                  Please check other logs for more detailed info|\
                  Exception when formatting for VNF outputs  
APIH_DOM2STR_ERROR=\
				          MSO-APIH-9010E|\
                  Error converting xml Document to String|\
                  Please check other logs for more detailed info|\
                  Error converting xml Document to String
APIH_DUPLICATE_CHECK_EXC_ATT=\
				          MSO-APIH-9011E|\
                  Exception during the duplication check for post services with the same attribute: {0}|\
                  Please check other logs for more detailed info|\
                  Exception during the duplicate check for post services

