###
# ============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
#1300-1399	Security/Permission Related
#2300-2399	Availability/Timeout Related
#3300-3399	Data Access/Integrity Related
#4300-4399	Schema Interface Type/Validation
#5300-5399	Business/Flow Processing Related
#6300-6399	Reserved \u2013 do not use
#9300-9399	Unknown Errors
#
######
#{classification} description
# I = Information
# W = Warning
# E = Error
# F = Fatal
########################################################################
ASDC_GENERAL_WARNING=\
                  MSO-ASDC-5301W|\
                  WARNING: {0}|\
                  Please check other logs for more detailed info|\
                  General warning 
ASDC_AUDIT_EXEC=\
                  MSO-ASDC-5302I|\
                  Executing method: {0}. {1}|\
                  No resolution needed|\
                  Executing method
ASDC_GENERAL_METRICS=\
                  MSO-ASDC-5305I|\
                  Executed method: {0}. {1}|\
                  No resolution needed|\
                  Generate information for Metric events 
ASDC_CREATE_SERVICE=\
                  MSO-ASDC-5306I|\
                  Creating new VNF Resource for service {0} with id {1} and version {2}|\
                  No resolution needed|\
                  Method triggered to create new VNF Resource                                                                                                                                                                                                                                                                                                                                     
ASDC_CREATE_ARTIFACT=\
                  MSO-ASDC-5307I|\
                  Installing new {0} for service {1} with id {2} and version {3}|\
                  No resolution needed|\
                  Method triggered to create new VNF Resource   
ASDC_ARTIFACT_ALREADY_DEPLOYED=\
                  MSO-ASDC-5308W|\
                  Constraint violation caught, artifact is already deployed {0} and version {1}|\
                  No resolution needed|\
                  Artifact is already deployed   
ASDC_ARTIFACT_INSTALL_EXC=\
                  MSO-ASDC-5309E|\
                  Exception caught during installation of the {0}. Transaction rollback.|\
                  Please check other logs for more detailed info|\
                  Exception caught during installation of the artifact   
ASDC_CHECK_HEAT_TEMPLATE=\
                  MSO-ASDC-5310I|\
                  Start to verify whether {0} with name {1} and version {2} is already deployed|\
                  No resolution needed|\
                  Check artifact  
ASDC_ARTIFACT_ALREADY_DEPLOYED_DETAIL=\
                  MSO-ASDC-5311I|\
                  ResourceInstanceName:{0} (ResourceUUID:{1}) is already deployed for this Service:{2}/{3}(ServiceUUID:{4}) (ResourceName: {5})|\
                  No resolution needed|\
                  Resource is already deployed  
ASDC_ARTIFACT_NOT_DEPLOYED_DETAIL=\
                  MSO-ASDC-5312I|\
                 ResourceInstanceName:{0} (ResourceUUID:{1}) is not yet deployed for this Service:{2}/{3}(ServiceUUID:{4}) (ResourceName: {5})|\
                  No resolution needed|\
                  Resource is not yet deployed  
ASDC_INIT_ASDC_CLIENT_EXC=\
                  MSO-ASDC-5314W|\
                  ASDControllerException caught during the Init/closing of ASDC Client with address {0} and environment {1}|\
                  Please check other logs for more detailed info|\
                  ASDControllerException caught during the Init/closing of ASDC Client      
ASDC_LOAD_ASDC_CLIENT_EXC=\
                  MSO-ASDC-5315W|\
                  ASDCParametersException caught during loading/reloading of the ASDC Client with address {0} and environment {1}|\
                  Please check other logs for more detailed info|\
                  ASDCParametersException caught during loading/reloading of the ASDC Client                    
ASDC_SHUTDOWN_ASDC_CLIENT_EXC=\
                  MSO-ASDC-5317W|\
                  {0} caught during the ASDC Controller with address {1} and environment {2} shutdown|\
                  Please check other logs for more detailed info|\
                  Exception caught during the ASDC Controller shutdown  
ASDC_START_INSTALL_ARTIFACT=\
                  MSO-ASDC-5318I|\
                  Trying to install the artifact:{0}|\
                  No resolution needed|\
                  Trying to install the artifact  
ASDC_ARTIFACT_TYPE_NOT_SUPPORT=\
                  MSO-ASDC-5319W|\
                  This artifact type is not supported:{0}|\
                  No resolution needed|\
                  Artifact type is not supported  
ASDC_ARTIFACT_ALREADY_EXIST=\
                  MSO-ASDC-5320I|\
                  No need to download the artifact as it exists already in MSO:{0} (UUID:{1}) associated to ResourceName {2}|\
                  No resolution needed|\
                  Artifact already exists                   
ASDC_ARTIFACT_DOWNLOAD_SUC=\
                  MSO-ASDC-5321I|\
                  Artifact successfully downloaded:{0} (UUID:{1}) (SIZE in Bytes:{2})|\
                  No resolution needed|\
                  Artifact successfully downloaded   
ASDC_ARTIFACT_DOWNLOAD_FAIL=\
                  MSO-ASDC-5322E|\
                  Artifact :{0} could not be downloaded correctly from ASDC URL {1} (UUID:{2}) Error message is {3})|\
                  Please check other logs for more detailed info|\
                  Artifact download failed
ASDC_START_DEPLOY_ARTIFACT=\
                  MSO-ASDC-5323I|\
                  Trying to deploy the artifact:{0} (UUID:{1})|\
                  No resolution needed|\
                  Trying to deploy the artifact                                       
ASDC_ARTIFACT_DEPLOY_SUC=\
                  MSO-ASDC-5324I|\
                  Resource successfully installed:{0} (UUID:{1}) (Nb of Modules:{2})|\
                  No resolution needed|\
                  Resource successfully installed  
ASDC_SEND_NOTIF_ASDC=\
                  MSO-ASDC-5325I|\
                  Sending {0} ({1}) notification to ASDC for artifact:{2}|\
                  No resolution needed|\
                  Sending notif to ASDC  
ASDC_SEND_NOTIF_ASDC_EXEC=\
                  MSO-ASDC-5326W|\
                  Exception caught when trying to notify ASDC|\
                  Please check other logs for more detailed info|\
                  Exception caught when trying to notify ASDC 
ASDC_RECEIVE_CALLBACK_NOTIF=\
                  MSO-ASDC-5327I|\
                  Receive a callback notification in ASDC, nb of artifacts: {0} (ServiceUUID:{1})|\
                  No resolution needed|\
                  Receive a callback notification in ASDC  
ASDC_RECEIVE_SERVICE_NOTIF=\
                  MSO-ASDC-5328I|\
                  Notification is ServiceVNF, (ServiceUUID:{0})|\
                  No resolution needed|\
                  Receive a callback notification for ServiceVNF 
ASDC_ARTIFACT_NULL=\
                  MSO-ASDC-5329I|\
                  Nothing to deploy artifact is NULL, (ServiceUUID:{0})|\
                  No resolution needed|\
                  Nothing to deploy artifact is NULL 
ASDC_SERVICE_NOT_SUPPORT=\
                  MSO-ASDC-5330W|\
                  Notification received, (ServiceUUID:{0}) is not a ServiceVNF and is therefore skipped|\
                  No resolution needed|\
                  Service not support 
ASDC_INIT_ASDC_CLIENT_SUC=\
                  MSO-ASDC-5331I|\
                  ASDC Controller successfully initialized|\
                  No resolution needed|\
                  ASDC client initialized  
ASDC_GENERAL_EXCEPTION_ARG=\
                  MSO-ASDC-9300E|\
                  Exception: {0}|\
                  Please check other logs for more detailed info|\
                  General exception with reason
ASDC_GENERAL_EXCEPTION=\
                  MSO-ASDC-9301E|\
                  Exception encountered|\
                  Please check other logs for more detailed info|\
                  Exception encountered
ASDC_ARTIFACT_CHECK_EXC=\
                  MSO-ASDC-9302E|\
                  Exception caught during checking existence of the artifact|\
                  Please check other logs for more detailed info|\
                  Exception caught during checking existence of the artifact
ASDC_SINGLETON_CHECKT_EXC=\
                  MSO-ASDC-9303E|\
                  Exception caught during the singleton check for ASDC with address {0} and environment {1}|\
                  Please check other logs for more detailed info|\
                  Exception caught during the singleton check
ASDC_PROPERTIES_NOT_FOUND=\
                  MSO-ASDC-9304E|\
                  Properties file: {0} not found|\
                  Please verify whether properties file exist or readable|\
                  Please verify whether properties file exist or readable|\
                  Properties file not found
