aboutsummaryrefslogtreecommitdiffstats
path: root/test/hpa_automation/heat/README.md
blob: 404ddbea1648a0fc587442bd399d1afb2e170fea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## Guide for hpa_automation.py script in heat

These guide describes how to run the hpa_automation.py script. It can be used to run the vFW and vDNS end to end use cases.

## Prerequisites

 - Install ONAP CLI. See [link](https://onap.readthedocs.io/en/dublin/submodules/cli.git/docs/installation_guide.html)
 - Install python mysql.connector (pip install mysql-connector-python)
 - Must have connectivity to the ONAP, a k8s vm already running is recommended as connectivity to the ONAP k8s network is required for the SDC onboarding section.
 - Create policies for homing using the temp_resource_module_name specified in hpa_automation_config.json. Sample policies can be seen in the sample_vfw_policies directory. Be sure to specify the right path to the directory in hpa_automation_config.json, only policies should exist in the directory
 - Create Nodeport for Policy pdp using the pdp_service_expose.yaml file (copy pdp_service_expose.yaml in hpa_automation/heat to rancher and run kubectl apply -f pdp_expose.yaml)
 - Put in the CSAR file to be used to create service models and specify its path in hpa_automation_config.json
 - Modify the SO bpmn configmap to change the SO vnf adapter endpoint to v2. See step 4 [here](https://onap.readthedocs.io/en/casablanca/submodules/integration.git/docs/docs_vfwHPA.html#docs-vfw-hpa)
 - Prepare sdnc_preload file and put in the right path to its location in hpa_automation_config.json 
 - Put in the right parameters for automation in hpa_automation_config.json
 - Ensure the insert_policy_models_heat.py script is in the same location as the hpa_automation.py script as the automation scripts calls the insert_policy_models_heat.py script.

**Points to Note:**
 - The hpa_automation.py runs end to end. It does the following;
          - Create cloud complex
          - Register cloud regions
          - Create service type
          - Create customer and adds customer subscription
          - SDC Onboarding (Create VLM, VSP, VF Model, and service model)
          - Upload policy models and adds policies
          - Create Service Instance and VNF Instance
          - SDNC Preload and Creates VF module
          
 - There are well named functions that do the above items every time the script is run. If you do not wish to run any part of that, you can go into the script and comment out the section at the bottom that handles that portion.
ighlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
<!-- Copyright (c) 2016 AT&T Intellectual Property. All rights reserved. -->
<configuration scan="true" scanPeriod="3 seconds">
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <!--<jmxConfigurator /> -->
  
  <!--  specify the component name -->
  <property name="componentName" value="DCAE"></property>
  
  <!--  log file names -->
  <property name="generalLogName" value="application" />
  <property name="securityLogName" value="security" />
  <property name="performanceLogName" value="performance" />
  <property name="serverLogName" value="server" />
  <property name="policyLogName" value="policy" />
  <property name="errorLogName" value="error" />
  <property name="metricsLogName" value="metrics" />
  <property name="auditLogName" value="audit" />
  <property name="debugLogName" value="debug" />
  
  <property name="defaultPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
  
  <property name="auditLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
  <property name="metricsLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
  <property name="errorLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />
  <property name="debugLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}| %msg%n" />
   
  <property name="logDirectory" value="${log.home}/${componentName}" />
  
  
  <!-- Example evaluator filter applied against console appender -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>

  <!-- ============================================================================ -->
  <!-- EELF Appenders -->
  <!-- ============================================================================ -->

  <!-- The EELFAppender is used to record events to the general application 
    log -->
    
    
  <appender name="EELF"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${generalLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${generalLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  
  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELF" />
  </appender>

  <!-- EELF Security Appender. This appender is used to record security events 
    to the security log file. Security events are separate from other loggers 
    in EELF so that security log records can be captured and managed in a secure 
    way separate from the other logs. This appender is set to never discard any 
    events. -->
  <appender name="EELFSecurity"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${securityLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  
  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <discardingThreshold>0</discardingThreshold>
    <appender-ref ref="EELFSecurity" />
  </appender>

  <!-- EELF Performance Appender. This appender is used to record performance 
    records. -->
  <appender name="EELFPerformance"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${performanceLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFPerformance" />
  </appender>

  <!-- EELF Server Appender. This appender is used to record Server related 
    logging events. The Server logger and appender are specializations of the 
    EELF application root logger and appender. This can be used to segregate Server 
    events from other components, or it can be eliminated to record these events 
    as part of the application root log. -->
  <appender name="EELFServer"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${serverLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
        <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFServer" />
  </appender>

  
  <!-- EELF Policy Appender. This appender is used to record Policy engine 
    related logging events. The Policy logger and appender are specializations 
    of the EELF application root logger and appender. This can be used to segregate 
    Policy engine events from other components, or it can be eliminated to record 
    these events as part of the application root log. -->
  <appender name="EELFPolicy"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${policyLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
        <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFPolicy" />
  </appender>
  
  
  <!-- EELF Audit Appender. This appender is used to record audit engine 
    related logging events. The audit logger and appender are specializations 
    of the EELF application root logger and appender. This can be used to segregate 
    Policy engine events from other components, or it can be eliminated to record 
    these events as part of the application root log. -->
    
  <!-- Audit log -->
	<appender name="EELFAudit"
	   class="ch.qos.logback.core.rolling.RollingFileAppender">
	   <file>${logDirectory}/${auditLogName}.log</file>
	   <!-- Audit messages filter - accept audit messages -->
	   <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
	      <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
	         <marker>AUDIT_MARKER</marker>
	         <marker>AUDIT</marker>
	      </evaluator>
	      <onMismatch>DENY</onMismatch>
	      <onMatch>ACCEPT</onMatch>
	   </filter>
	
	   <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
	      <fileNamePattern>${logDirectory}/${auditLogName}.%i.log.zip</fileNamePattern>
	      <minIndex>1</minIndex>
	      <maxIndex>10</maxIndex>
	   </rollingPolicy>
	
	   <triggeringPolicy
	      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
	      <maxFileSize>20MB</maxFileSize>
	   </triggeringPolicy>
	   <encoder>
	      <pattern>${auditLoggerPattern}</pattern>
	   </encoder>
	</appender>
  
  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFAudit" />
  </appender>

<appender name="EELFMetrics"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${metricsLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${metricsLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
        %msg%n"</pattern> -->
      <pattern>${metricsLoggerPattern}</pattern>
    </encoder>
  </appender>
  
  
  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFMetrics"/>
  </appender>
   
  <appender name="EELFError"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${errorLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${errorLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>${errorLoggerPattern}</pattern>
    </encoder>
  </appender>
  
  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFError"/>
  </appender>
  
   <appender name="EELFDebug"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${debugLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${debugLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>${debugLoggerPattern}</pattern>
    </encoder>
  </appender>
  
  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFDebug" />
    <includeCallerData>true</includeCallerData>
  </appender>
 
  
  <!-- ============================================================================ -->
  <!--  EELF loggers -->
  <!-- ============================================================================ -->
  <logger name="com.att.eelf" level="info" additivity="false">
    <appender-ref ref="asyncEELF" />
  </logger>
  <logger name="com.att.eelf.security" level="info" additivity="false">
    <appender-ref ref="asyncEELFSecurity" />
  </logger>
  <logger name="com.att.eelf.perf" level="info" additivity="false">
    <appender-ref ref="asyncEELFPerformance" />
  </logger>
  <logger name="com.att.eelf.server" level="info" additivity="false">
    <appender-ref ref="asyncEELFServer" />
  </logger>
  <logger name="com.att.eelf.policy" level="info" additivity="false">
    <appender-ref ref="asyncEELFPolicy" />
  </logger>

  <logger name="org.openecomp.sdc.common.ecomplog.EcompLoggerAudit" level="info" additivity="false">
    <appender-ref ref="asyncEELFAudit" />
  </logger>
  
  <logger name="com.att.eelf.metrics" level="info" additivity="false">
        <appender-ref ref="asyncEELFMetrics" />
  </logger>
 
 
   <logger name="com.att.eelf.error" level="error" additivity="false">
  <appender-ref ref="asyncEELFError" />
  </logger>
  
   <logger name="com.att.eelf.debug" level="debug" additivity="false">
        <appender-ref ref="asyncEELFDebug" />
  </logger>
  
  

  
  <root level="INFO">
    <appender-ref ref="asyncEELF" />
  </root>

</configuration>