###
# ============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 for other components
#1400-1499	Security/Permission Related
#2400-2499	Availability/Timeout Related
#3400-3499	Data Access/Integrity Related
#4400-4499	Schema Interface Type/Validation
#5400-5499	Business/Flow Processing Related
#6400-6499	Reserved \u2013 do not use
#9400-9499	Unknown Errors
#
######
#{classification} description
# I = Information
# W = Warning
# E = Error
# F = Fatal
########################################################################
GENERAL_WARNING=\
                  MSO-GENERAL-5401W|\
                  WARNING: {0}|\
                  Please check other logs for more detailed info|\
                  General warning 
AUDIT_EXEC=\
                  MSO-GENERAL-5402I|\
                  Executing method: {0}. {1}|\
                  No resolution needed|\
                  Executing method 
GENERAL_METRICS=\
                  MSO-GENERAL-5405I|\
                  Executed method: {0}. {1}|\
                  No resolution needed|\
                  Generate information for Metric events       
LOGGER_SETUP=\
                  MSO-GENERAL-5406I|\
                  Request received to update logger level|\
                  No resolution needed|\
                  Request received to update logger level 
LOGGER_NOT_FOUND=\
                  MSO-GENERAL-5407I|\
                  Logger Servlet: Logger not found: : {0}|\
                  No resolution needed|\
                  Logger not found 
LOGGER_UPDATE_SUC=\
                  MSO-GENERAL-5408I|\
                  Successfully update Logger: {0} from level {1} to level {2}|\
                  No resolution needed|\
                  Generate information for Metric events    
LOGGER_UPDATE_DEBUG=\
                  MSO-GENERAL-5409I|\
                  Request received to update debug mode|\
                  No resolution needed|\
                  Request received to update debug mode   
LOGGER_UPDATE_DEBUG_SUC=\
                  MSO-GENERAL-5410I|\
                  Successfully {0} debug mode|\
                  No resolution needed|\
                  Successfully updated debug mode    
LOAD_PROPERTIES_SUC=\
                  MSO-GENERAL-5411I|\
                  Properties file loaded successfully from file {0}|\
                  No resolution needed|\
                  Properties file loaded successfully   
NO_PROPERTIES=\
                  MSO-GENERAL-5412E|\
                  Missing or invalid properties file: {0}|\
                  Please verify whether properties file exist or readable|\
                  Missing or invalid properties file   
LOAD_PROPERTIES_FAIL=\
                  MSO-GENERAL-5413E|\
                  Failed loading properties file: {0}|\
                  Please verify whether properties file exist or readable|\
                  Failed loading properties file
INIT_LOGGER=\
                  MSO-GENERAL-5414I|\
                  Prepare to initialize loggers from {0}|\
                  No resolution needed|\
                  Prepare to initialize loggers    
MADATORY_PARAM_MISSING=\
                  MSO-GENERAL-5415E|\
                  Not able to get mandatory parameter: {0} from file {1}|\
                  No resolution needed|\
                  Mandatory parameter missing                      
IDENTITY_SERVICE_NOT_FOUND=\
                  MSO-GENERAL-5416E|\
                  Identity service not found: region={0} ,cloud={1}|\
                  Please check other logs for more detailed info|\
                  Identity service not found                                                                                                                                                                                                                                                                                                                                     
GENERAL_EXCEPTION_ARG=\
                  MSO-GENERAL-9400E|\
                  Exception: {0}|\
                  Please check other logs for more detailed info|\
                  General exception with reason
GENERAL_EXCEPTION=\
                  MSO-GENERAL-9401E|\
                  Exception encountered|\
                  Please check other logs for more detailed info|\
                  Exception encountered 
INIT_LOGGER_FAIL=\
                  MSO-GENERAL-9402E|\
                  Failed to initialize loggers|\
                  No resolution|\
                  Failed to initialize loggers
JAXB_EXCEPTION=\
                  MSO-GENERAL-9403E|\
                  JAXB Initialization Error|\
                  Please check other logs for more detailed info|\
                  JAXB Initialization Error
