Add tunnel bandwidth vendor and allow max bandwith 63/25063/3
authorVenkata Harish K Kajur <vk250x@att.com>
Mon, 27 Nov 2017 22:48:33 +0000 (17:48 -0500)
committerVenkata Harish K Kajur <vk250x@att.com>
Tue, 28 Nov 2017 07:05:02 +0000 (02:05 -0500)
Issue-ID: AAI-516
Change-Id: I1aa18b9b1237c4696fbbdd88f5c889bf6a51d2ec
Signed-off-by: Venkata Harish K Kajur <vk250x@att.com>
aai-core/src/main/java/org/onap/aai/logging/LoggingContext.java
aai-core/src/main/java/org/onap/aai/util/AAIConstants.java
aai-schema/src/main/resources/aai_schema/aai_schema_v12.xsd
aai-schema/src/main/resources/oxm/aai_oxm_v12.xml

index 1e61c65..7d9dcce 100644 (file)
@@ -48,7 +48,16 @@ public class LoggingContext {
        private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(LoggingContext.class);
 
        private static final String PREVIOUS_CONTEXTS_KEY = "_PREVIOUS_CONTEXTS";
-
+       
+       //Response codes from ECOMP Logging Guidelines
+       public static final String SUCCESS = "0";
+       public static final String PERMISSION_ERROR = "100";
+       public static final String AVAILABILITY_TIMEOUT_ERROR = "200";
+       public static final String DATA_ERROR = "200";
+       public static final String SCHEMA_ERROR = "400";
+       public static final String BUSINESS_PROCESS_ERROR = "500";
+       public static final String UNKNOWN_ERROR = "900";
+       
        //ECOMP Specific Log Event Fields
        public static enum LoggingField {
                START_TIME("startTime"),
@@ -75,7 +84,7 @@ public class LoggingContext {
                
                //ECOMP Specific Metric Log Event Fields
                TARGET_ENTITY("targetEntity"),
-
+               TARGET_SERVICE_NAME("targetServiceName"),
                //A&AI Specific Log Event Fields
                COMPONENT("component"),
                STOP_WATCH_START("stopWatchStart");
@@ -99,7 +108,7 @@ public class LoggingContext {
                LoggingContext.serverIpAddress();
        }
 
-       private static void startTime() {
+       public static void startTime() {
                MDC.put(LoggingField.START_TIME.toString(), LogFormatTools.getCurrentDateTime());
        }
 
@@ -115,8 +124,7 @@ public class LoggingContext {
                MDC.put(LoggingField.REQUEST_ID.toString(), requestId.toString());
        }
 
-       public static void requestId(String requestId) throws AAIException {
-
+       public static void requestId(String requestId) {
                try {
                        if(requestId == null){
                                throw new IllegalArgumentException();
@@ -129,7 +137,15 @@ public class LoggingContext {
                } catch (IllegalArgumentException e) {
                        final UUID generatedRequestUuid = UUID.randomUUID();
                        MDC.put(LoggingField.REQUEST_ID.toString(), generatedRequestUuid.toString());
-                       LOGGER.warn("Unable to use UUID " + requestId + " (Not formatted properly). Using generated UUID=" + generatedRequestUuid);
+                       LoggingContext.save();
+                       AAIException ex = new AAIException("AAI_7405", e);
+                       String responseCode = Integer.toString(ex.getErrorObject().getHTTPResponseCode().getStatusCode());
+                       LoggingContext.responseCode(responseCode);
+
+                       LOGGER.warn("Unable to use UUID " + requestId + " (Not formatted properly). Using generated UUID="
+                                       + generatedRequestUuid);
+                       LoggingContext.restore();
+
                }
        }
 
@@ -177,6 +193,10 @@ public class LoggingContext {
                MDC.put(LoggingField.SEVERITY.toString(), String.valueOf(severity));
        }
 
+       public static void successStatusFields() {
+               responseCode(SUCCESS);
+               statusCode(LoggingContext.StatusCode.COMPLETE);
+       }
        private static void serverIpAddress() {
                try {
                        MDC.put(LoggingField.SERVER_IP_ADDRESS.toString(), InetAddress.getLocalHost().getHostAddress());
@@ -247,6 +267,17 @@ public class LoggingContext {
                MDC.put(LoggingField.TARGET_ENTITY.toString(), targetEntity);
        }
 
+       public static void targetServiceName(String targetServiceName) {
+               MDC.put(LoggingField.TARGET_SERVICE_NAME.toString(), targetServiceName);
+       }
+
+       public static boolean isStopWatchStarted() {
+               final String rawStopWatchStart = MDC.get(LoggingField.STOP_WATCH_START.toString());
+               if (rawStopWatchStart == null) {
+                       return false;
+               }
+               return true;
+       }
        public static void stopWatchStart() {
                MDC.put(LoggingField.STOP_WATCH_START.toString(), String.valueOf(System.nanoTime()));
        }
@@ -328,10 +359,12 @@ public class LoggingContext {
 
                        @SuppressWarnings("unchecked")
                        final Iterator<String> keys = previousContext.keys();
-       
+                       boolean foundElapsedTime = false;
                        while (keys.hasNext()) {
                                final String key = keys.next();
-
+                               if (LoggingField.ELAPSED_TIME.toString().equals(key)) {
+                                       foundElapsedTime = true;
+                               }
                                try {
                                        MDC.put(key, previousContext.getString(key));
                                } catch (JSONException e) {
@@ -339,12 +372,22 @@ public class LoggingContext {
                                        //                      or the value is invalid (they are all strings)
                                }
                        }
-
+                       if ( !foundElapsedTime ) {
+                               MDC.remove(LoggingField.ELAPSED_TIME.toString());
+                       }
                        MDC.put(PREVIOUS_CONTEXTS_KEY, removeLast(previousContexts).toString());
                } catch (JSONException e) {
                        //Ignore, the previousContext is serialized from a JSONObject
                }
        }
+       public static void restoreIfPossible() {
+               try {
+                       restore();
+               }
+               catch (LoggingContextNotExistsException e) {
+                       //Ignore
+               }
+       }
 
        /**
         * AJSC declares an ancient version of org.json:json in one of the parent POMs of this project.
index 9b7afe5..9c0eac0 100644 (file)
@@ -38,7 +38,6 @@ public final class AAIConstants {
        /** etc directory, relative to AAI_HOME */
        public static final String AAI_HOME_ETC = AAI_HOME_BUNDLECONFIG + AAI_FILESEP + "etc" + AAI_FILESEP;
        public static final String AAI_HOME_ETC_APP_PROPERTIES = AAI_HOME_ETC + "appprops" + AAI_FILESEP;
-       public static final String AAI_V2_OUTPUT_TRANSFORMS = AAIConstants.AAI_HOME_ETC_APP_PROPERTIES + AAIConstants.AAI_FILESEP + "output" + AAIConstants.AAI_FILESEP;
        public static final String AAI_HOME_ETC_AUTH = AAI_HOME_ETC + "auth" + AAI_FILESEP;
        public static final String AAI_CONFIG_FILENAME = AAI_HOME_ETC_APP_PROPERTIES + "aaiconfig.properties";
        public static final String AAI_AUTH_CONFIG_FILENAME = AAI_HOME_ETC_AUTH + "aai_policy.json";
@@ -142,6 +141,9 @@ public final class AAIConstants {
        /** Service description for LRSI */
        public static final String AAI_SERVICEDESCRIPTION_LRSI = "aai.servicedescription.lrsi";
        
+       /** Micro-service Names */
+       public static final String AAI_TRAVERSAL_MS = "aai-traversal";
+       public static final String AAI_RESOURCES_MS = "aai-resources";
        /**
         * Instantiates a new AAI constants.
         */
index 21448d2..346a825 100644 (file)
@@ -7247,6 +7247,20 @@ xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
             </xs:appinfo>
           </xs:annotation>
         </xs:element>
+        <xs:element name="tunnel-bandwidth" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="DHV Site Effective Bandwidth")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="vendor-allowed-max-bandwidth" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="Velocloud Nominal Throughput - VNT")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
         <xs:element name="resource-version" type="xs:string" minOccurs="0">
           <xs:annotation>
             <xs:appinfo>
index e9a4c17..9f9b213 100644 (file)
                                        <xml-properties>
                                                <xml-property name="description" value="id of  the configuration used to customize the resource" />
                                        </xml-properties>
+                               </xml-element>                          
+                               <xml-element java-attribute="tunnelBandwidth" name="tunnel-bandwidth" type="java.lang.String">
+                                       <xml-properties>
+                                               <xml-property name="description" value="DHV Site Effective Bandwidth" />
+                                       </xml-properties>
                                </xml-element>
+                               <xml-element java-attribute="vendorAllowedMaxBandwidth" name="vendor-allowed-max-bandwidth" type="java.lang.String">
+                                       <xml-properties>
+                                               <xml-property name="description" value="Velocloud Nominal Throughput - VNT" />
+                                       </xml-properties>
+                               </xml-element>                          
                                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
                                        <xml-properties>
                                                <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete." />