Merge "Add INFO.yaml file"
authorSébastien Determe <sd378r@intl.att.com>
Fri, 9 Mar 2018 10:26:49 +0000 (10:26 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 9 Mar 2018 10:26:49 +0000 (10:26 +0000)
86 files changed:
extra/docker/clamp/clamp.env
pom.xml
src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java
src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java
src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java
src/main/java/org/onap/clamp/clds/client/req/sdc/SdcRequests.java
src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java
src/main/java/org/onap/clamp/clds/config/ClampProperties.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java [deleted file]
src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java
src/main/java/org/onap/clamp/clds/config/sdc/SdcControllersConfiguration.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java [moved from src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java with 96% similarity]
src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java [moved from src/main/java/org/onap/clamp/clds/config/CldsSecurityConfigUsers.java with 79% similarity]
src/main/java/org/onap/clamp/clds/exception/dcae/DcaeDeploymentException.java [moved from src/main/java/org/onap/clamp/clds/exception/DcaeDeploymentException.java with 97% similarity]
src/main/java/org/onap/clamp/clds/exception/sdc/SdcCommunicationException.java [moved from src/main/java/org/onap/clamp/clds/exception/SdcCommunicationException.java with 98% similarity]
src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcArtifactInstallerException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcControllerException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcDownloadException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcParametersException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleControllerStatus.java [moved from src/test/java/org/onap/clamp/clds/AbstractItCase.java with 60% similarity]
src/main/java/org/onap/clamp/clds/service/CldsService.java
src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java
src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java
src/main/resources/META-INF/resources/designer/WEB-INF/web.xml [deleted file]
src/main/resources/META-INF/resources/designer/lib/moment.min.js
src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js
src/main/resources/application.properties
src/main/resources/clds/clds-reference.properties [deleted file]
src/main/resources/clds/globalClds.properties [deleted file]
src/main/resources/clds/sdc-controllers-config.json [new file with mode: 0644]
src/main/resources/clds/templates/dcae-decode-service_ids.json [new file with mode: 0644]
src/main/resources/clds/templates/dcae-deployment-template.json [new file with mode: 0644]
src/main/resources/clds/templates/dcae-template.json [new file with mode: 0644]
src/main/resources/clds/templates/globalProperties.json [new file with mode: 0644]
src/main/resources/clds/templates/op-eNodeB-recipe.json [new file with mode: 0644]
src/main/resources/clds/templates/sdc-decode-service_ids.json [new file with mode: 0644]
src/main/resources/clds/templates/sdc-template.json [new file with mode: 0644]
src/main/resources/clds/templates/tca-policy-template.json [new file with mode: 0644]
src/main/resources/clds/templates/tca-template.json [new file with mode: 0644]
src/main/resources/clds/templates/tca-thresholds-template.json [new file with mode: 0644]
src/main/resources/clds/templates/ui-alarm-default.json [new file with mode: 0644]
src/main/resources/clds/templates/ui-location-default.json [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java
src/test/java/org/onap/clamp/clds/it/CldsReferencePropertiesItCase.java [deleted file]
src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java
src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java
src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java
src/test/java/org/onap/clamp/clds/it/HttpsItCase.java
src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java
src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java
src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java
src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java
src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java
src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java [new file with mode: 0644]
src/test/resources/application.properties [new file with mode: 0644]
src/test/resources/clds/clds-reference.properties [deleted file]
src/test/resources/clds/sdc-controller-config-NULL.json [new file with mode: 0644]
src/test/resources/clds/sdc-controller-config-TLS.json [new file with mode: 0644]
src/test/resources/clds/sdc-controller-config-bad.json [new file with mode: 0644]
src/test/resources/clds/sdc-controllers-config-bad.json [new file with mode: 0644]
src/test/resources/clds/sdc-controllers-config-missing-param.json [new file with mode: 0644]
src/test/resources/clds/sdc-controllers-config.json [new file with mode: 0644]
src/test/resources/clds/templates/dcae-decode-service_ids.json [new file with mode: 0644]
src/test/resources/clds/templates/dcae-deployment-template.json [new file with mode: 0644]
src/test/resources/clds/templates/dcae-template.json [new file with mode: 0644]
src/test/resources/clds/templates/globalProperties.json [new file with mode: 0644]
src/test/resources/clds/templates/op-eNodeB-recipe.json [new file with mode: 0644]
src/test/resources/clds/templates/sdc-decode-service_ids.json [new file with mode: 0644]
src/test/resources/clds/templates/sdc-template.json [new file with mode: 0644]
src/test/resources/clds/templates/tca-policy-template.json [new file with mode: 0644]
src/test/resources/clds/templates/tca-template.json [new file with mode: 0644]
src/test/resources/clds/templates/tca-thresholds-template.json [new file with mode: 0644]
src/test/resources/clds/templates/ui-alarm-default.json [new file with mode: 0644]
src/test/resources/clds/templates/ui-location-default.json [new file with mode: 0644]
src/test/resources/https/https-test.properties

index 47ec08f..729941a 100644 (file)
@@ -1,2 +1,2 @@
 ### Be careful, this must be in one line only ###
-SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3","org.onap.clamp.config.files.cldsPolicyConfig":"classpath:/clds/clds-policy-config.properties","org.onap.clamp.config.files.cldsReference":"classpath:/clds/clds-reference.properties"}
\ No newline at end of file
+SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3","clamp.config.files.sdcController":"classpath:/clds/sdc-controllers-config.json","clamp.config.files.cldsPolicyConfig":"classpath:/clds/clds-policy-config.properties"}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 192d35b..2f1a7d2 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                                <dependency>
                                                <groupId>org.apache.commons</groupId>
                                                <artifactId>commons-vfs2</artifactId>
-                                               <version>2.0</version>
+                                               <version>2.2</version>
                                </dependency>
                                <dependency>
                                                <groupId>joda-time</groupId>
                                                <artifactId>hibernate-annotations</artifactId>
                                                <version>3.5.6-Final</version>
                                </dependency>
-                               <!-- <dependency> -->
-                               <!-- <groupId>org.apache.geronimo.specs</groupId> -->
-                               <!-- <artifactId>geronimo-jpa_2.0_spec</artifactId> -->
-                               <!-- <version>1.1</version> -->
-                               <!-- </dependency> -->
                                <dependency>
                                                <groupId>dom4j</groupId>
                                                <artifactId>dom4j</artifactId>
                                                <artifactId>jsf-impl</artifactId>
                                                <version>2.1.7</version>
                                </dependency>
+                               <!-- Other dependencies to fix nexus IQ reported vulnerabilities -->
+                               <dependency>
+                                       <groupId>org.codehaus.plexus</groupId>
+                                       <artifactId>plexus-utils</artifactId>
+                                       <version>3.0.24</version>
+                               </dependency>
+                               <dependency>
+                                       <groupId>commons-fileupload</groupId>
+                                       <artifactId>commons-fileupload</artifactId>
+                                       <version>1.3.3</version>
+                               </dependency>
+                               <dependency>
+                                       <groupId>org.jboss.spec.javax.ws.rs</groupId>
+                                       <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
+                                       <version>1.0.1.Final</version>
+                               </dependency>
                                <!-- Remove the MYSQL connector and replace it by Mariadb -->
                                <dependency>
                                                <groupId>org.mariadb.jdbc</groupId>
                                                <artifactId>mariadb-java-client</artifactId>
                                                <version>2.2.1</version>
                                </dependency>
+                               <!-- For SDC Controller -->
+                               <dependency>
+                                               <groupId>org.openecomp.sdc.sdc-distribution-client</groupId>
+                                               <artifactId>sdc-distribution-client</artifactId>
+                                               <version>1.2.3</version>
+                               </dependency>
                </dependencies>
 
                <build>
                                                                                                                </run>
                                                                                                </image>
                                                                                                <image>
-                                                                                                               <name>python:2</name>
+                                                                                                               <name>python:2-slim</name>
                                                                                                                <alias>python</alias>
                                                                                                                <run>
                                                                                                                                <hostname>python</hostname>
index 3c8649c..9226604 100644 (file)
@@ -31,8 +31,8 @@ import java.util.Date;
 \r
 import org.json.simple.JSONObject;\r
 import org.json.simple.parser.JSONParser;\r
-import org.onap.clamp.clds.config.CldsReferenceProperties;\r
-import org.onap.clamp.clds.exception.DcaeDeploymentException;\r
+import org.onap.clamp.clds.config.ClampProperties;\r
+import org.onap.clamp.clds.exception.dcae.DcaeDeploymentException;\r
 import org.onap.clamp.clds.util.LoggingUtils;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.stereotype.Component;\r
@@ -47,10 +47,10 @@ public class DcaeDispatcherServices {
     protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeDispatcherServices.class);\r
     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();\r
     @Autowired\r
-    private CldsReferenceProperties refProp;\r
+    private ClampProperties refProp;\r
     private static final String STATUS_URL_LOG = "Status URL extracted: ";\r
     private static final String DCAE_URL_PREFIX = "/dcae-deployments/";\r
-    private static final String DCAE_URL_PROPERTY_NAME = "DCAE_DISPATCHER_URL";\r
+    private static final String DCAE_URL_PROPERTY_NAME = "dcae.dispatcher.url";\r
     private static final String DCAE_REQUEST_FAILED_LOG = "RequestFailed - responseStr=";\r
     public static final String DCAE_REQUESTID_PROPERTY_NAME = "dcae.header.requestId";\r
     private static final String DCAE_LINK_FIELD = "links";\r
index 1abd889..c4abebd 100644 (file)
@@ -41,7 +41,7 @@ import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;\r
 import org.json.simple.parser.JSONParser;\r
 import org.json.simple.parser.ParseException;\r
-import org.onap.clamp.clds.config.CldsReferenceProperties;\r
+import org.onap.clamp.clds.config.ClampProperties;\r
 import org.onap.clamp.clds.dao.CldsDao;\r
 import org.onap.clamp.clds.model.CldsEvent;\r
 import org.onap.clamp.clds.model.CldsModel;\r
@@ -61,9 +61,9 @@ public class DcaeInventoryServices {
     protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class);\r
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();\r
     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();\r
-    private static final String DCAE_INVENTORY_URL = "DCAE_INVENTORY_URL";\r
+    private static final String DCAE_INVENTORY_URL = "dcae.inventory.url";\r
     @Autowired\r
-    private CldsReferenceProperties refProp;\r
+    private ClampProperties refProp;\r
     @Autowired\r
     private CldsDao cldsDao;\r
 \r
index 4e165e1..37259cd 100644 (file)
@@ -31,7 +31,7 @@ import java.util.UUID;
 import org.apache.camel.Exchange;
 import org.apache.camel.Handler;
 import org.onap.clamp.clds.client.req.policy.PolicyClient;
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.properties.Holmes;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -48,7 +48,7 @@ public class HolmesPolicyDelegate {
     @Autowired
     private PolicyClient policyClient;
     @Autowired
-    private CldsReferenceProperties refProp;
+    private ClampProperties refProp;
 
     /**
      * Perform activity. Send Holmes info to policy api.
index ec83db9..ae28805 100644 (file)
@@ -33,7 +33,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Handler;
 import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq;
 import org.onap.clamp.clds.client.req.policy.PolicyClient;
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.Policy;
 import org.onap.clamp.clds.model.properties.PolicyChain;
@@ -61,7 +61,7 @@ public class OperationalPolicyDelegate {
      * Automatically injected by Spring, define in CldsConfiguration as a bean.
      */
     @Autowired
-    private CldsReferenceProperties refProp;
+    private ClampProperties refProp;
 
     /**
      * Perform activity. Send Operational Policy info to policy api.
index 438ea47..64e19f9 100644 (file)
@@ -35,7 +35,7 @@ import org.apache.camel.Handler;
 import org.apache.commons.codec.DecoderException;
 import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
 import org.onap.clamp.clds.client.req.sdc.SdcRequests;
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.DcaeEvent;
 import org.onap.clamp.clds.model.properties.Global;
 import org.onap.clamp.clds.model.properties.ModelProperties;
@@ -55,7 +55,7 @@ public class SdcSendReqDelegate {
     @Autowired
     private SdcRequests sdcReq;
     @Autowired
-    private CldsReferenceProperties refProp;
+    private ClampProperties refProp;
 
     /**
      * Perform activity. Send to sdc proxy.
index 55fe2c5..e16e8c3 100644 (file)
@@ -32,7 +32,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Handler;
 import org.onap.clamp.clds.client.req.policy.PolicyClient;
 import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.Tca;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,7 +47,7 @@ public class TcaPolicyDelegate {
     protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDelegate.class);
     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
     @Autowired
-    private CldsReferenceProperties refProp;
+    private ClampProperties refProp;
     @Autowired
     private PolicyClient policyClient;
 
index 434da4b..d3e8a54 100644 (file)
@@ -39,7 +39,7 @@ import java.util.Map;
 
 import javax.ws.rs.BadRequestException;
 
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.properties.Global;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.PolicyChain;
@@ -80,7 +80,7 @@ public class OperationalPolicyReq {
      * @throws BuilderException
      * @throws UnsupportedEncodingException
      */
-    public static Map<AttributeType, Map<String, String>> formatAttributes(CldsReferenceProperties refProp, ModelProperties prop,
+    public static Map<AttributeType, Map<String, String>> formatAttributes(ClampProperties refProp, ModelProperties prop,
             String modelElementId, PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException {
         Global global = prop.getGlobal();
         prop.setCurrentModelElementId(modelElementId);
@@ -163,7 +163,7 @@ public class OperationalPolicyReq {
      * @throws BuilderException
      * @throws UnsupportedEncodingException
      */
-    protected static String formatOpenLoopYaml(CldsReferenceProperties refProp, ModelProperties prop, String modelElementId,
+    protected static String formatOpenLoopYaml(ClampProperties refProp, ModelProperties prop, String modelElementId,
             PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException {
         // get property objects
         Global global = prop.getGlobal();
@@ -193,7 +193,7 @@ public class OperationalPolicyReq {
      * @throws BuilderException
      * @throws UnsupportedEncodingException
      */
-    protected static String formatYaml(CldsReferenceProperties refProp, ModelProperties prop, String modelElementId,
+    protected static String formatYaml(ClampProperties refProp, ModelProperties prop, String modelElementId,
             PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException {
         // get property objects
         Global global = prop.getGlobal();
@@ -251,7 +251,7 @@ public class OperationalPolicyReq {
      * @throws BuilderException
      * @throws UnsupportedEncodingException
      */
-    protected static String formateNodeBYaml(CldsReferenceProperties refProp, ModelProperties prop, String modelElementId,
+    protected static String formateNodeBYaml(ClampProperties refProp, ModelProperties prop, String modelElementId,
             PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException {
         // get property objects
         Global global = prop.getGlobal();
@@ -329,7 +329,7 @@ public class OperationalPolicyReq {
      * @param inOrigList
      * @return
      */
-    private static List<PolicyItem> addAOTSActorRecipe(CldsReferenceProperties refProp, String service, List<PolicyItem> inOrigList) {
+    private static List<PolicyItem> addAOTSActorRecipe(ClampProperties refProp, String service, List<PolicyItem> inOrigList) {
         List<PolicyItem> outList = new ArrayList<>();
         try {
             PolicyItem policyItem = inOrigList.get(0);
index 06eff4e..144a48c 100644 (file)
@@ -37,7 +37,7 @@ import java.util.UUID;
 
 import javax.ws.rs.BadRequestException;
 
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.exception.policy.PolicyClientException;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.util.LoggingUtils;
@@ -71,12 +71,12 @@ public class PolicyClient {
     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
     protected static final String POLICY_MSTYPE_PROPERTY_NAME = "policy.ms.type";
     protected static final String POLICY_ONAPNAME_PROPERTY_NAME = "policy.onap.name";
-    @Value("${org.onap.clamp.config.files.cldsPolicyConfig:'classpath:/clds/clds-policy-config.properties'}")
+    @Value("${clamp.config.files.cldsPolicyConfig:'classpath:/clds/clds-policy-config.properties'}")
     protected String cldsPolicyConfigFile;
     @Autowired
     protected ApplicationContext appContext;
     @Autowired
-    protected CldsReferenceProperties refProp;
+    protected ClampProperties refProp;
 
     /**
      * Perform BRMS policy type.
index 299ec1e..fd7d096 100644 (file)
@@ -58,8 +58,8 @@ import org.apache.commons.csv.CSVRecord;
 import org.apache.commons.io.IOUtils;\r
 import org.apache.commons.lang3.StringUtils;\r
 import org.apache.http.HttpHeaders;\r
-import org.onap.clamp.clds.config.CldsReferenceProperties;\r
-import org.onap.clamp.clds.exception.SdcCommunicationException;\r
+import org.onap.clamp.clds.config.ClampProperties;\r
+import org.onap.clamp.clds.exception.sdc.SdcCommunicationException;\r
 import org.onap.clamp.clds.model.CldsAlarmCondition;\r
 import org.onap.clamp.clds.model.CldsServiceData;\r
 import org.onap.clamp.clds.model.CldsVfData;\r
@@ -72,6 +72,7 @@ import org.onap.clamp.clds.model.sdc.SdcResource;
 import org.onap.clamp.clds.model.sdc.SdcResourceBasicInfo;\r
 import org.onap.clamp.clds.model.sdc.SdcServiceDetail;\r
 import org.onap.clamp.clds.model.sdc.SdcServiceInfo;\r
+import org.onap.clamp.clds.service.CldsService;\r
 import org.onap.clamp.clds.util.CryptoUtils;\r
 import org.onap.clamp.clds.util.LoggingUtils;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
@@ -93,7 +94,7 @@ public class SdcCatalogServices {
     private static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool";\r
     private static final String RESOURCE_URL_PREFIX = "resources";\r
     @Autowired\r
-    private CldsReferenceProperties refProp;\r
+    private ClampProperties refProp;\r
 \r
     /**\r
      * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic\r
@@ -840,11 +841,13 @@ public class SdcCatalogServices {
      * @param globalProps\r
      * @param cldsServiceData\r
      * @return\r
+     * @throws IOException\r
+     *             In case of issues during the parsing of the Global Properties\r
      */\r
-    public String createPropertiesObjectByUUID(String globalProps, CldsServiceData cldsServiceData) {\r
+    public String createPropertiesObjectByUUID(CldsServiceData cldsServiceData) throws IOException {\r
         String totalPropsStr;\r
         ObjectMapper mapper = new ObjectMapper();\r
-        ObjectNode globalPropsJson;\r
+        ObjectNode globalPropsJson = (ObjectNode) refProp.getJsonTemplate(CldsService.GLOBAL_PROPERTIES_KEY);\r
         if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) {\r
             // Objectnode to save all byservice, byvf , byvfc and byalarm nodes\r
             ObjectNode byIdObjectNode = mapper.createObjectNode();\r
@@ -886,28 +889,13 @@ public class SdcCatalogServices {
                     "alertDescription");\r
             ObjectNode alertDescObjectNodeByAlert = createAlarmCondObjectNodeByAlarmKey(mapper, allAlertDescriptions);\r
             byIdObjectNode.putPOJO("byAlertDescription", alertDescObjectNodeByAlert);\r
-            globalPropsJson = decodeGlobalProp(globalProps, mapper);\r
             globalPropsJson.putPOJO("shared", byIdObjectNode);\r
             logger.info("Global properties JSON created with SDC info:" + globalPropsJson);\r
-        } else {\r
-            /**\r
-             * to create json with total properties when no serviceUUID passed\r
-             */\r
-            globalPropsJson = decodeGlobalProp(globalProps, mapper);\r
         }\r
         totalPropsStr = globalPropsJson.toString();\r
         return totalPropsStr;\r
     }\r
 \r
-    private ObjectNode decodeGlobalProp(String globalProps, ObjectMapper mapper) {\r
-        try {\r
-            return (ObjectNode) mapper.readValue(globalProps, JsonNode.class);\r
-        } catch (IOException e) {\r
-            logger.error("Exception occurred during decoding of the global props, returning an empty objectNode", e);\r
-            return mapper.createObjectNode();\r
-        }\r
-    }\r
-\r
     /**\r
      * Method to get alarm conditions/alert description from Service Data.\r
      * \r
index 214933d..e34b7e9 100644 (file)
@@ -41,7 +41,7 @@ import java.util.Map.Entry;
 
 import org.apache.commons.codec.DecoderException;
 import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.properties.Global;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.Tca;
@@ -61,7 +61,7 @@ public class SdcRequests {
     @Autowired
     private SdcCatalogServices sdcCatalogServices;
     @Autowired
-    protected CldsReferenceProperties refProp;
+    protected ClampProperties refProp;
 
     /**
      * Format the Blueprint from a Yaml
index 73355a7..f514691 100644 (file)
@@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import java.io.IOException;
 import java.util.Map;
 
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.exception.TcaRequestFormatterException;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.Tca;
@@ -64,7 +64,7 @@ public class TcaRequestFormatter {
      *            The Model Prop created from BPMN JSON and BPMN properties JSON
      * @return The Json string containing that should be sent to policy
      */
-    public static String createPolicyJson(CldsReferenceProperties refProp, ModelProperties modelProperties) {
+    public static String createPolicyJson(ClampProperties refProp, ModelProperties modelProperties) {
         try {
             String service = modelProperties.getGlobal().getService();
             Tca tca = modelProperties.getType(Tca.class);
@@ -103,7 +103,7 @@ public class TcaRequestFormatter {
      *            modelProperties.setCurrentModelElementId will be used
      * @return The Json node containing what should be sent to policy
      */
-    public static JsonNode createPolicyContent(CldsReferenceProperties refProp, ModelProperties modelProperties, String service,
+    public static JsonNode createPolicyContent(ClampProperties refProp, ModelProperties modelProperties, String service,
             String policyName, Tca tca) {
         try {
             String serviceToUse = service;
@@ -153,7 +153,7 @@ public class TcaRequestFormatter {
      *            The Model Properties created from BPMN JSON and BPMN
      *            properties JSON
      */
-    private static void addThresholds(CldsReferenceProperties refProp, String service, ObjectNode appendToNode, TcaItem tcaItem,
+    private static void addThresholds(ClampProperties refProp, String service, ObjectNode appendToNode, TcaItem tcaItem,
             ModelProperties modelProperties) {
         ArrayNode tcaNodes = appendToNode.withArray("thresholds");
         ObjectNode tcaNode;
@@ -185,7 +185,7 @@ public class TcaRequestFormatter {
      *            The yaml string received from the UI
      * @return The updated YAML as a string
      */
-    public static String updatedBlueprintWithConfiguration(CldsReferenceProperties refProp, ModelProperties modelProperties,
+    public static String updatedBlueprintWithConfiguration(ClampProperties refProp, ModelProperties modelProperties,
             String yamlValue) {
         String jsonPolicy = ((ObjectNode) createPolicyContent(refProp, modelProperties, null, null, null)).toString();
         logger.info("Yaml that will be updated:" + yamlValue);
diff --git a/src/main/java/org/onap/clamp/clds/config/ClampProperties.java b/src/main/java/org/onap/clamp/clds/config/ClampProperties.java
new file mode 100644 (file)
index 0000000..66f35ac
--- /dev/null
@@ -0,0 +1,154 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017-2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.config;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+/**
+ * Holds Clamp properties and add some functionalities.
+ */
+@Component
+public class ClampProperties {
+
+    @Autowired
+    private ApplicationContext appContext;
+    @Autowired
+    private Environment env;
+    public static final String CONFIG_PREFIX = "clamp.config.";
+
+    /**
+     * get property value.
+     *
+     * @param key
+     *            The first key
+     * @return The string with the value
+     */
+    public String getStringValue(String key) {
+        return env.getProperty(CONFIG_PREFIX + key);
+    }
+
+    /**
+     * get property value for a combo key (key1 + "." + key2). If not found just
+     * use key1.
+     *
+     * @param key1
+     *            The first key
+     * @param key2
+     *            The second key after a dot
+     * @return The string with the value
+     */
+    public String getStringValue(String key1, String key2) {
+        String value = getStringValue(key1 + "." + key2);
+        if (value == null || value.length() == 0) {
+            value = getStringValue(key1);
+        }
+        return value;
+    }
+
+    /**
+     * Return json as objects that can be updated. The value obtained from the
+     * clds-reference file will be used as a filename.
+     *
+     * @param key
+     *            The key that will be used to access the clds-reference file
+     * @return A jsonNode
+     * @throws IOException
+     *             In case of issues with the JSON parser
+     */
+    public JsonNode getJsonTemplate(String key) throws IOException {
+        ObjectMapper objectMapper = new ObjectMapper();
+        String fileReference = getStringValue(key);
+        return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class)
+                : null;
+    }
+
+    /**
+     * Return json as objects that can be updated. First try with combo key
+     * (key1 + "." + key2), otherwise default to just key1. The value obtained
+     * from the clds-reference file will be used as a filename.
+     *
+     * @param key1
+     *            The first key
+     * @param key2
+     *            The second key after a dot
+     * @return A JsonNode
+     * @throws IOException
+     *             In case of issues with the JSON parser
+     */
+    public JsonNode getJsonTemplate(String key1, String key2) throws IOException {
+        ObjectMapper objectMapper = new ObjectMapper();
+        String fileReference = getStringValue(key1, key2);
+        return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class)
+                : null;
+    }
+
+    /**
+     * Return the file content. The value obtained from the clds-reference file
+     * will be used as a filename.
+     *
+     * @param key
+     *            The key that will be used to access the clds-reference file
+     * @return File content in String
+     * @throws IOException
+     *             In case of issues with the JSON parser
+     */
+    public String getFileContent(String key) throws IOException {
+        String fileReference = getStringValue(key);
+        return (fileReference != null) ? getFileContentFromPath(fileReference) : null;
+    }
+
+    /**
+     * Return the file content. First try with combo key (key1 + "." + key2),
+     * otherwise default to just key1. The value obtained from the
+     * clds-reference file will be used as a filename.
+     *
+     * @param key1
+     *            The first key
+     * @param key2
+     *            The second key after a dot
+     * @return File content in String
+     * @throws IOException
+     *             In case of issues with the JSON parser
+     */
+    public String getFileContent(String key1, String key2) throws IOException {
+        String fileReference = getStringValue(key1, key2);
+        return (fileReference != null) ? getFileContentFromPath(fileReference) : null;
+    }
+
+    private String getFileContentFromPath(String filepath) throws IOException {
+        URL url = appContext.getResource(filepath).getURL();
+        return IOUtils.toString(url, StandardCharsets.UTF_8);
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java b/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java
deleted file mode 100644 (file)
index a8acdee..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2017-2018 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.config;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import javax.annotation.PostConstruct;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.io.Resource;
-import org.springframework.stereotype.Component;
-
-/**
- * Holds reference properties.
- */
-@Component
-public class CldsReferenceProperties {
-
-    @Autowired
-    private ApplicationContext appContext;
-    private Properties prop;
-    @Value("${org.onap.clamp.config.files.cldsReference:'classpath:/clds/clds-reference.properties'}")
-    private String cldsReferenceValuesFile;
-
-    @PostConstruct
-    public void loadConfig() throws IOException {
-        prop = new Properties();
-        Resource resource = appContext.getResource(cldsReferenceValuesFile);
-        prop.load(resource.getInputStream());
-    }
-
-    /**
-     * get property value
-     *
-     * @param key
-     * @return
-     */
-    public String getStringValue(String key) {
-        return prop.getProperty(key);
-    }
-
-    /**
-     * get property value for a combo key (key1 + "." + key2). If not found just
-     * use key1.
-     *
-     * @param key1
-     * @param key2
-     * @return
-     */
-    public String getStringValue(String key1, String key2) {
-        String value = getStringValue(key1 + "." + key2);
-        if (value == null || value.length() == 0) {
-            value = getStringValue(key1);
-        }
-        return value;
-    }
-
-    /**
-     * Return json as objects that can be updated
-     *
-     * @param key
-     * @return
-     * @throws IOException
-     */
-    public JsonNode getJsonTemplate(String key) throws IOException {
-        ObjectMapper objectMapper = new ObjectMapper();
-        return objectMapper.readValue(getStringValue(key), JsonNode.class);
-    }
-
-    /**
-     * Return json as objects that can be updated. First try with combo key
-     * (key1 + "." + key2), otherwise default to just key1.
-     *
-     * @param key1
-     * @param key2
-     * @return
-     * @throws IOException
-     */
-    public JsonNode getJsonTemplate(String key1, String key2) throws IOException {
-        ObjectMapper objectMapper = new ObjectMapper();
-        return objectMapper.readValue(getStringValue(key1, key2), JsonNode.class);
-    }
-}
index 15d06b9..bb1b9d1 100644 (file)
@@ -27,11 +27,14 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 
+import org.apache.commons.io.IOUtils;
 import org.onap.clamp.clds.exception.CldsUsersException;
 import org.onap.clamp.clds.service.CldsUser;
 
 public class CldsUserJsonDecoder {
+
     /**
      * This method decodes the JSON file provided to a CldsUser Array. The
      * stream is closed after this call, this is not possible to reuse it.
@@ -42,10 +45,18 @@ public class CldsUserJsonDecoder {
      *         JSON file
      */
     public static CldsUser[] decodeJson(InputStream cldsUsersFile) {
+        try {
+            return decodeJson(IOUtils.toString(cldsUsersFile, StandardCharsets.UTF_8.name()));
+        } catch (IOException e) {
+            throw new CldsUsersException("Exception occurred during the decoding of the clds-users.json", e);
+        }
+    }
+
+    public static CldsUser[] decodeJson(String cldsUsersString) {
         try {
             // the ObjectMapper readValue method closes the stream no need to do
             // it
-            return new ObjectMapper().readValue(cldsUsersFile, CldsUser[].class);
+            return new ObjectMapper().readValue(cldsUsersString, CldsUser[].class);
         } catch (IOException e) {
             throw new CldsUsersException("Exception occurred during the decoding of the clds-users.json", e);
         }
diff --git a/src/main/java/org/onap/clamp/clds/config/sdc/SdcControllersConfiguration.java b/src/main/java/org/onap/clamp/clds/config/sdc/SdcControllersConfiguration.java
new file mode 100644 (file)
index 0000000..5b54904
--- /dev/null
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.config.sdc;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+
+import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.io.Resource;
+import org.springframework.stereotype.Component;
+
+/**
+ * This class maps the SDC config JSON file. This JSON can have multiple
+ * sdc-controller config. So the json is loaded in a static way and the instance
+ * must specify the controller name that it represents.
+ */
+@Component
+public class SdcControllersConfiguration {
+
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcControllersConfiguration.class);
+    public static final String CONTROLLER_SUBTREE_KEY = "sdc-connections";
+    @Autowired
+    protected ApplicationContext appContext;
+    /**
+     * The file name that will be loaded by Spring.
+     */
+    @Value("${clamp.config.files.sdcController:'classpath:/clds/sdc-controllers-config.json'}")
+    protected String sdcControllerFile;
+    /**
+     * The root of the JSON.
+     */
+    private JsonNode jsonRootNode;
+
+    @PostConstruct
+    public void loadConfiguration() throws IOException {
+        Resource resource = appContext.getResource(sdcControllerFile);
+        // Try to load json tree
+        jsonRootNode = new ObjectMapper().readValue(resource.getInputStream(), JsonNode.class);
+    }
+
+    public SdcSingleControllerConfiguration getSdcSingleControllerConfiguration(String controllerName) {
+        Map<String, SdcSingleControllerConfiguration> controllerMap = getAllDefinedControllers();
+        return controllerMap.get(controllerName);
+    }
+
+    /**
+     * This method reads all Controllers configurations and returns them.
+     *
+     * @return A list of controller Names defined in the config
+     */
+    public Map<String, SdcSingleControllerConfiguration> getAllDefinedControllers() {
+        Map<String, SdcSingleControllerConfiguration> result = new HashMap<>();
+        if (jsonRootNode.get(CONTROLLER_SUBTREE_KEY) != null) {
+            jsonRootNode.get(CONTROLLER_SUBTREE_KEY).fields().forEachRemaining(entry -> result.put(entry.getKey(),
+                    new SdcSingleControllerConfiguration(entry.getValue(), entry.getKey())));
+        } else {
+            throw new SdcParametersException(
+                    CONTROLLER_SUBTREE_KEY + " key not found in the file: " + sdcControllerFile);
+        }
+        return result;
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java
new file mode 100644 (file)
index 0000000..c97beb0
--- /dev/null
@@ -0,0 +1,285 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.config.sdc;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.JsonNode;
+
+import java.security.GeneralSecurityException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.codec.DecoderException;
+import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException;
+import org.onap.clamp.clds.util.CryptoUtils;
+import org.openecomp.sdc.api.consumer.IConfiguration;
+
+/**
+ * This class maps the SDC config JSON for one controller.
+ */
+public class SdcSingleControllerConfiguration implements IConfiguration {
+
+    private static final EELFLogger logger = EELFManager.getInstance()
+            .getLogger(SdcSingleControllerConfiguration.class);
+    /**
+     * The sdc Controller name corresponding.
+     */
+    private String sdcControllerName;
+    /**
+     * The root of the JSON.
+     */
+    private JsonNode jsonRootNode;
+    // All keys that can be present in the JSON
+    public static final String CONSUMER_GROUP_ATTRIBUTE_NAME = "consumerGroup";
+    public static final String CONSUMER_ID_ATTRIBUTE_NAME = "consumerId";
+    public static final String ENVIRONMENT_NAME_ATTRIBUTE_NAME = "environmentName";
+    public static final String PASSWORD_ATTRIBUTE_NAME = "password";
+    public static final String POLLING_INTERVAL_ATTRIBUTE_NAME = "pollingInterval";
+    public static final String RELEVANT_ARTIFACT_TYPES_ATTRIBUTE_NAME = "relevantArtifactTypes";
+    public static final String USER_ATTRIBUTE_NAME = "user";
+    public static final String SDC_ADDRESS_ATTRIBUTE_NAME = "sdcAddress";
+    public static final String POLLING_TIMEOUT_ATTRIBUTE_NAME = "pollingTimeout";
+    public static final String ACTIVATE_SERVER_TLS_AUTH = "activateServerTLSAuth";
+    public static final String KEY_STORE_PASSWORD = "keyStorePassword";
+    public static final String KEY_STORE_PATH = "keyStorePath";
+    private String errorMessageKeyNotFound;
+    /**
+     * Supported artifact types.
+     */
+    public static final String HEAT = "HEAT";
+    public static final String HEAT_ARTIFACT = "HEAT_ARTIFACT";
+    public static final String HEAT_ENV = "HEAT_ENV";
+    public static final String HEAT_NESTED = "HEAT_NESTED";
+    public static final String HEAT_NET = "HEAT_NET";
+    public static final String HEAT_VOL = "HEAT_VOL";
+    public static final String OTHER = "OTHER";
+    public static final String TOSCA_CSAR = "TOSCA_CSAR";
+    public static final String VF_MODULES_METADATA = "VF_MODULES_METADATA";
+    private static final String[] SUPPORTED_ARTIFACT_TYPES = {
+            HEAT, HEAT_ARTIFACT, HEAT_ENV, HEAT_NESTED, HEAT_NET, HEAT_VOL, OTHER, TOSCA_CSAR, VF_MODULES_METADATA
+    };
+    public static final List<String> SUPPORTED_ARTIFACT_TYPES_LIST = Collections
+            .unmodifiableList(Arrays.asList(SUPPORTED_ARTIFACT_TYPES));
+
+    /**
+     * This constructor builds a SdcSingleControllerConfiguration from the
+     * corresponding json.
+     * 
+     * @param jsonRootNode
+     *            The JSON node
+     * @param controllerName
+     *            The controller name that must appear in the JSON
+     */
+    public SdcSingleControllerConfiguration(JsonNode jsonNode, String controllerName) {
+        jsonRootNode = jsonNode;
+        setSdcControllerName(controllerName);
+        testAllRequiredParameters();
+    }
+
+    public String getSdcControllerName() {
+        return sdcControllerName;
+    }
+
+    public void setSdcControllerName(String controllerName) {
+        this.sdcControllerName = controllerName;
+        errorMessageKeyNotFound = " parameter cannot be found in config file for controller name" + sdcControllerName;
+        testAllRequiredParameters();
+    }
+
+    @Override
+    public java.lang.Boolean isUseHttpsWithDmaap() {
+        return false;
+    }
+
+    @Override
+    public String getConsumerGroup() {
+        if (jsonRootNode != null && jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME) != null) {
+            String config = jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME).asText();
+            return "NULL".equals(config) || config.isEmpty() ? null : config;
+        }
+        return null;
+    }
+
+    @Override
+    public String getConsumerID() {
+        if (jsonRootNode != null && jsonRootNode.get(CONSUMER_ID_ATTRIBUTE_NAME) != null) {
+            String config = jsonRootNode.get(CONSUMER_ID_ATTRIBUTE_NAME).asText();
+            return config.isEmpty() ? null : config;
+        }
+        return null;
+    }
+
+    @Override
+    public String getEnvironmentName() {
+        if (jsonRootNode != null && jsonRootNode.get(ENVIRONMENT_NAME_ATTRIBUTE_NAME) != null) {
+            String config = jsonRootNode.get(ENVIRONMENT_NAME_ATTRIBUTE_NAME).asText();
+            return config.isEmpty() ? null : config;
+        }
+        return null;
+    }
+
+    @Override
+    public String getPassword() {
+        try {
+            if (jsonRootNode != null && jsonRootNode.get(PASSWORD_ATTRIBUTE_NAME) != null) {
+                String config = CryptoUtils.decrypt(jsonRootNode.get(PASSWORD_ATTRIBUTE_NAME).asText());
+                return config.isEmpty() ? null : config;
+            }
+        } catch (GeneralSecurityException | DecoderException e) {
+            logger.error("Unable to decrypt the SDC password", e);
+        }
+        return null;
+    }
+
+    @Override
+    public int getPollingInterval() {
+        if (jsonRootNode != null && jsonRootNode.get(POLLING_INTERVAL_ATTRIBUTE_NAME) != null) {
+            return jsonRootNode.get(POLLING_INTERVAL_ATTRIBUTE_NAME).asInt();
+        } else {
+            return 0;
+        }
+    }
+
+    @Override
+    public List<String> getRelevantArtifactTypes() {
+        // DO not return the Static List SUPPORTED_ARTIFACT_TYPES_LIST because
+        // the ASDC Client could try to modify it !!!
+        return Arrays.asList(SUPPORTED_ARTIFACT_TYPES);
+    }
+
+    @Override
+    public String getUser() {
+        if (jsonRootNode != null && jsonRootNode.get(USER_ATTRIBUTE_NAME) != null) {
+            String config = jsonRootNode.get(USER_ATTRIBUTE_NAME).asText();
+            return config.isEmpty() ? null : config;
+        }
+        return null;
+    }
+
+    @Override
+    public String getAsdcAddress() {
+        if (jsonRootNode != null && jsonRootNode.get(SDC_ADDRESS_ATTRIBUTE_NAME) != null) {
+            String config = jsonRootNode.get(SDC_ADDRESS_ATTRIBUTE_NAME).asText();
+            return config.isEmpty() ? null : config;
+        }
+        return null;
+    }
+
+    @Override
+    public int getPollingTimeout() {
+        if (jsonRootNode != null && jsonRootNode.get(POLLING_TIMEOUT_ATTRIBUTE_NAME) != null) {
+            return jsonRootNode.get(POLLING_TIMEOUT_ATTRIBUTE_NAME).asInt();
+        } else {
+            return 0;
+        }
+    }
+
+    @Override
+    public boolean activateServerTLSAuth() {
+        if (jsonRootNode != null && jsonRootNode.get(ACTIVATE_SERVER_TLS_AUTH) != null) {
+            return jsonRootNode.get(ACTIVATE_SERVER_TLS_AUTH).asBoolean(false);
+        } else {
+            return false;
+        }
+    }
+
+    @Override
+    public String getKeyStorePassword() {
+        try {
+            if (jsonRootNode != null && jsonRootNode.get(KEY_STORE_PASSWORD) != null) {
+                String config = CryptoUtils.decrypt(jsonRootNode.get(KEY_STORE_PASSWORD).asText());
+                return config.isEmpty() ? null : config;
+            }
+        } catch (GeneralSecurityException | DecoderException e) {
+            logger.error("Unable to decrypt the SDC password", e);
+        }
+        return null;
+    }
+
+    @Override
+    public String getKeyStorePath() {
+        if (jsonRootNode != null && jsonRootNode.get(KEY_STORE_PATH) != null) {
+            String config = jsonRootNode.get(KEY_STORE_PATH).asText();
+            return config.isEmpty() ? null : config;
+        }
+        return null;
+    }
+
+    /**
+     * This method can be used to validate all required parameters are well
+     * there.
+     */
+    public void testAllRequiredParameters() {
+        // Special case for this attribute that can be null from
+        // getConsumerGroup
+        if (jsonRootNode == null) {
+            throw new SdcParametersException("Json is null for controller " + this.getSdcControllerName());
+        }
+        if (this.getConsumerGroup() == null && (jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME) == null
+                || !"NULL".equals(jsonRootNode.get(CONSUMER_GROUP_ATTRIBUTE_NAME).asText()))) {
+            throw new SdcParametersException(CONSUMER_GROUP_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getConsumerID() == null || this.getConsumerID().isEmpty()) {
+            throw new SdcParametersException(CONSUMER_ID_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getEnvironmentName() == null || this.getEnvironmentName().isEmpty()) {
+            throw new SdcParametersException(ENVIRONMENT_NAME_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getAsdcAddress() == null || this.getAsdcAddress().isEmpty()) {
+            throw new SdcParametersException(SDC_ADDRESS_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getPassword() == null || this.getPassword().isEmpty()) {
+            throw new SdcParametersException(PASSWORD_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getPollingInterval() == 0) {
+            throw new SdcParametersException(POLLING_INTERVAL_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getPollingTimeout() == 0) {
+            throw new SdcParametersException(POLLING_TIMEOUT_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getRelevantArtifactTypes() == null || this.getRelevantArtifactTypes().isEmpty()) {
+            throw new SdcParametersException(RELEVANT_ARTIFACT_TYPES_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+        if (this.getUser() == null || this.getUser().isEmpty()) {
+            throw new SdcParametersException(USER_ATTRIBUTE_NAME + errorMessageKeyNotFound);
+        }
+    }
+
+    /**
+     * The flag allows the client to receive metadata for all resources of the
+     * service regardless of the artifacts associated to them. Setting the flag
+     * to false will preserve legacy behavior.
+     */
+    @Override
+    public boolean isFilterInEmptyResources() {
+        return true;
+    }
+
+    @Override
+    public List<String> getMsgBusAddress() {
+        return null;
+    }
+}
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 
-package org.onap.clamp.clds.config;
+package org.onap.clamp.clds.config.spring;
 
 import javax.sql.DataSource;
 import javax.xml.transform.TransformerConfigurationException;
 
+import org.onap.clamp.clds.config.EncodedPasswordBasicDataSource;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.transform.XslTransformer;
 import org.springframework.beans.factory.annotation.Qualifier;
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 
-package org.onap.clamp.clds.config;
+package org.onap.clamp.clds.config.spring;
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
 import java.io.IOException;
 
+import org.onap.clamp.clds.config.ClampProperties;
+import org.onap.clamp.clds.config.CldsUserJsonDecoder;
 import org.onap.clamp.clds.exception.CldsUsersException;
 import org.onap.clamp.clds.service.CldsUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Profile;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
@@ -43,29 +44,21 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
 /**
  * This class is used to enable the HTTP authentication to login. It requires a
  * specific JSON file containing the user definition
- * (classpath:etc/config/clds/clds-users.json).
- *
+ * (classpath:clds/clds-users.json).
  */
 @Configuration
 @EnableWebSecurity
 @Profile("clamp-spring-authentication")
 public class CldsSecurityConfigUsers extends WebSecurityConfigurerAdapter {
 
-    protected static final EELFLogger logger        = EELFManager.getInstance()
-            .getLogger(CldsSecurityConfigUsers.class);
+    protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSecurityConfigUsers.class);
     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
     @Autowired
-    private ApplicationContext        appContext;
-
-    @Value("${org.onap.clamp.config.files.cldsUsers:'classpath:etc/config/clds/clds-users.json'}")
-    private String                    cldsUsersFile;
-
-    @Value("${CLDS_PERMISSION_TYPE_CL:permission-type-cl}")
-    private String                    cldsPersmissionTypeCl;
-
+    private ClampProperties refProp;
+    @Value("${clamp.config.security.permission.type.cl:permission-type-cl}")
+    private String cldsPersmissionTypeCl;
     @Value("${CLDS_PERMISSION_INSTANCE:dev}")
-    private String                    cldsPermissionInstance;
+    private String cldsPermissionInstance;
 
     /**
      * This method configures on which URL the authorization will be enabled.
@@ -92,13 +85,11 @@ public class CldsSecurityConfigUsers extends WebSecurityConfigurerAdapter {
     public void configureGlobal(AuthenticationManagerBuilder auth) {
         try {
             CldsUser[] usersList = loadUsers();
-
             // no users defined
             if (null == usersList) {
-                logger.warn("No users defined. Users should be defined under " + cldsUsersFile);
+                logger.warn("No users defined. Users should be defined under clds-users.json");
                 return;
             }
-
             for (CldsUser user : usersList) {
                 auth.inMemoryAuthentication().withUser(user.getUser()).password(user.getPassword())
                         .roles(user.getPermissionsString());
@@ -114,14 +105,11 @@ public class CldsSecurityConfigUsers extends WebSecurityConfigurerAdapter {
      * CldsUser.
      * 
      * @return The array of CldsUser
+     * @throws IOException
+     *             In case of the file is not found
      */
-    private CldsUser[] loadUsers() {
-        try {
-            logger.info("Load from clds-users.properties");
-            return CldsUserJsonDecoder.decodeJson(appContext.getResource(cldsUsersFile).getInputStream());
-        } catch (IOException e) {
-            logger.error("Unable to decode the User Json file", e);
-            throw new CldsUsersException("Load from clds-users.properties", e);
-        }
+    private CldsUser[] loadUsers() throws IOException {
+        logger.info("Load from clds-users.properties");
+        return CldsUserJsonDecoder.decodeJson(refProp.getFileContent("files.cldsUsers"));
     }
 }
@@ -21,7 +21,7 @@
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 
-package org.onap.clamp.clds.exception;
+package org.onap.clamp.clds.exception.dcae;
 
 /**
  * New exception to capture DCAE communication errors.
@@ -21,7 +21,7 @@
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 
-package org.onap.clamp.clds.exception;
+package org.onap.clamp.clds.exception.sdc;
 
 /**
  * New exception to capture SDC communication errors.
diff --git a/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcArtifactInstallerException.java b/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcArtifactInstallerException.java
new file mode 100644 (file)
index 0000000..973081c
--- /dev/null
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception.sdc.controller;
+
+/**
+ * Exception during SDC artifact installation.
+ */
+public class SdcArtifactInstallerException extends Exception {
+
+    /**
+     * serialization id.
+     */
+    private static final long serialVersionUID = 4095937499475915021L;
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcArtifactInstallerException(final String message) {
+        super(message);
+    }
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcArtifactInstallerException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcControllerException.java b/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcControllerException.java
new file mode 100644 (file)
index 0000000..9c34757
--- /dev/null
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception.sdc.controller;
+
+/**
+ * Exception of the SDC controller.
+ */
+public class SdcControllerException extends Exception {
+
+    /**
+     * serialization id.
+     */
+    private static final long serialVersionUID = -4236006447255525130L;
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcControllerException(final String message) {
+        super(message);
+    }
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcControllerException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcDownloadException.java b/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcDownloadException.java
new file mode 100644 (file)
index 0000000..bace1ac
--- /dev/null
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception.sdc.controller;
+
+/**
+ * Exception during download from SDC.
+ */
+public class SdcDownloadException extends Exception {
+
+    /**
+     * serialization id.
+     */
+    private static final long serialVersionUID = -5276848693231134901L;
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcDownloadException(final String message) {
+        super(message);
+    }
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcDownloadException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcParametersException.java b/src/main/java/org/onap/clamp/clds/exception/sdc/controller/SdcParametersException.java
new file mode 100644 (file)
index 0000000..6ff0f15
--- /dev/null
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception.sdc.controller;
+
+/**
+ * Exception of the SDC controller.
+ */
+public class SdcParametersException extends RuntimeException {
+
+    /**
+     * serialization id.
+     */
+    private static final long serialVersionUID = 8425657297510362736L;
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcParametersException(final String message) {
+        super(message);
+    }
+
+    /**
+     * @param message
+     *            The message to dump
+     * @param cause
+     *            The Throwable cause object
+     */
+    public SdcParametersException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java b/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java
new file mode 100644 (file)
index 0000000..db5d271
--- /dev/null
@@ -0,0 +1,70 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.sdc.controller;
+
+import org.openecomp.sdc.api.consumer.IDistributionStatusMessage;
+import org.openecomp.sdc.utils.DistributionStatusEnum;
+
+public class DistributionStatusMessage implements IDistributionStatusMessage {
+
+    private String artifactURL;
+    private String consumerID;
+    private String distributionID;
+    private DistributionStatusEnum distributionStatus;
+    private long timestamp;
+
+    public DistributionStatusMessage(final String artifactUrl, final String consumerId, final String distributionId,
+            final DistributionStatusEnum distributionStatusEnum, final long timestampL) {
+        artifactURL = artifactUrl;
+        consumerID = consumerId;
+        distributionID = distributionId;
+        distributionStatus = distributionStatusEnum;
+        timestamp = timestampL;
+    }
+
+    @Override
+    public String getArtifactURL() {
+        return artifactURL;
+    }
+
+    @Override
+    public String getConsumerID() {
+        return consumerID;
+    }
+
+    @Override
+    public String getDistributionID() {
+        return distributionID;
+    }
+
+    @Override
+    public DistributionStatusEnum getStatus() {
+        return distributionStatus;
+    }
+
+    @Override
+    public long getTimestamp() {
+        return timestamp;
+    }
+}
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP CLAMP
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 
-package org.onap.clamp.clds;
+package org.onap.clamp.clds.sdc.controller;
 
-import org.junit.BeforeClass;
-import org.onap.clamp.clds.client.req.policy.PolicyClient;
-import org.onap.clamp.clds.config.CldsReferenceProperties;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ActiveProfiles;
-
-@ActiveProfiles("clamp-default")
-public abstract class AbstractItCase {
-
-    @Autowired
-    protected CldsReferenceProperties refProp;
-    @Autowired
-    protected PolicyClient policyClient;
-
-    @BeforeClass
-    public static void oneTimeSetUp() {
-        System.setProperty("CLDS_DCAE_URL", "http://localhost:13786/cl-dcae-services");
-    }
+public enum SdcSingleControllerStatus {
+    STOPPED, IDLE, BUSY
 }
index 14e6562..d22a518 100644 (file)
@@ -34,9 +34,7 @@ import java.io.InputStream;
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Properties;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
@@ -54,6 +52,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 import javax.xml.transform.TransformerException;
 
 import org.apache.camel.Produce;
@@ -64,11 +63,11 @@ import org.onap.clamp.clds.camel.CamelProxy;
 import org.onap.clamp.clds.client.DcaeDispatcherServices;
 import org.onap.clamp.clds.client.DcaeInventoryServices;
 import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
-import org.onap.clamp.clds.config.CldsReferenceProperties;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.exception.CldsConfigException;
-import org.onap.clamp.clds.exception.SdcCommunicationException;
 import org.onap.clamp.clds.exception.policy.PolicyClientException;
+import org.onap.clamp.clds.exception.sdc.SdcCommunicationException;
 import org.onap.clamp.clds.model.CLDSMonitoringDetails;
 import org.onap.clamp.clds.model.CldsDBServiceCache;
 import org.onap.clamp.clds.model.CldsEvent;
@@ -89,7 +88,6 @@ import org.onap.clamp.clds.transform.XslTransformer;
 import org.onap.clamp.clds.util.LoggingUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.ApplicationContext;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.HttpClientErrorException;
@@ -104,20 +102,19 @@ public class CldsService extends SecureServiceBase {
     @Produce(uri = "direct:processSubmit")
     private CamelProxy camelProxy;
     protected static final EELFLogger securityLogger = EELFManager.getInstance().getSecurityLogger();
-    @Autowired
-    private ApplicationContext appContext;
     private static final String RESOURCE_NAME = "clds-version.properties";
-    @Value("${CLDS_PERMISSION_TYPE_CL:permission-type-cl}")
+    public static final String GLOBAL_PROPERTIES_KEY = "files.globalProperties";
+    @Value("${clamp.config.security.permission.type.cl:permission-type-cl}")
     private String cldsPersmissionTypeCl;
-    @Value("${CLDS_PERMISSION_TYPE_CL_MANAGE:permission-type-cl-manage}")
+    @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}")
     private String cldsPermissionTypeClManage;
-    @Value("${CLDS_PERMISSION_TYPE_CL_EVENT:permission-type-cl-event}")
+    @Value("${clamp.config.security.permission.type.cl.event:permission-type-cl-event}")
     private String cldsPermissionTypeClEvent;
-    @Value("${CLDS_PERMISSION_TYPE_FILTER_VF:permission-type-filter-vf}")
+    @Value("${clamp.config.security.permission.type.filter.vf:permission-type-filter-vf}")
     private String cldsPermissionTypeFilterVf;
-    @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}")
+    @Value("${clamp.config.security.permission.type.template:permission-type-template}")
     private String cldsPermissionTypeTemplate;
-    @Value("${CLDS_PERMISSION_INSTANCE:dev}")
+    @Value("${clamp.config.security.permission.instance:dev}")
     private String cldsPermissionInstance;
     private SecureServicePermission permissionReadCl;
     private SecureServicePermission permissionUpdateCl;
@@ -134,15 +131,12 @@ public class CldsService extends SecureServiceBase {
                 "update");
     }
 
-    @Value("${org.onap.clamp.config.files.globalClds:'classpath:/clds/globalClds.properties'}")
-    private String globalClds;
-    private Properties globalCldsProperties;
     @Autowired
     private CldsDao cldsDao;
     @Autowired
     private XslTransformer cldsBpmnTransformer;
     @Autowired
-    private CldsReferenceProperties refProp;
+    private ClampProperties refProp;
     @Autowired
     private SdcCatalogServices sdcCatalogServices;
     @Autowired
@@ -214,7 +208,7 @@ public class CldsService extends SecureServiceBase {
 
     /**
      * REST service that retrieves clds healthcheck information.
-     * 
+     *
      * @return CldsHealthCheck class containing healthcheck info
      */
     @GET
@@ -348,6 +342,9 @@ public class CldsService extends SecureServiceBase {
             if (template != null) {
                 cldsModel.setTemplateId(template.getId());
                 cldsModel.setDocText(template.getPropText());
+                // This is to provide the Bpmn XML when Template part in UI is
+                // disabled
+                cldsModel.setBpmnText(template.getBpmnText());
             }
         }
         cldsModel.save(cldsDao, getUserId());
@@ -400,105 +397,106 @@ public class CldsService extends SecureServiceBase {
     @Path("/action/{action}/{modelName}")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public CldsModel putModelAndProcessAction(@PathParam("action") String action,
+    public Response putModelAndProcessAction(@PathParam("action") String action,
             @PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model)
             throws TransformerException, ParseException, GeneralSecurityException, DecoderException {
         Date startTime = new Date();
-        LoggingUtils.setRequestContext("CldsService: Process model action", getPrincipalName());
-        String actionCd = action.toUpperCase();
-        SecureServicePermission permisionManage = SecureServicePermission.create(cldsPermissionTypeClManage,
-                cldsPermissionInstance, actionCd);
-        isAuthorized(permisionManage);
-        isAuthorizedForVf(model);
-        String userId = getUserId();
-        String actionStateCd = CldsEvent.ACTION_STATE_INITIATED;
-        String processDefinitionKey = "clds-process-action-wf";
-        logger.info("PUT actionCd={}", actionCd);
-        logger.info("PUT actionStateCd={}", actionStateCd);
-        logger.info("PUT processDefinitionKey={}", processDefinitionKey);
-        logger.info("PUT modelName={}", modelName);
-        logger.info("PUT test={}", test);
-        logger.info("PUT bpmnText={}", model.getBpmnText());
-        logger.info("PUT propText={}", model.getPropText());
-        logger.info("PUT userId={}", userId);
-        logger.info("PUT getTypeId={}", model.getTypeId());
-        logger.info("PUT deploymentId={}", model.getDeploymentId());
-        if (model.getTemplateName() != null) {
-            CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
-            if (template != null) {
-                model.setTemplateId(template.getId());
-                model.setDocText(template.getPropText());
+        CldsModel retrievedModel = null;
+        Boolean errorCase = false;
+        try {
+            LoggingUtils.setRequestContext("CldsService: Process model action", getPrincipalName());
+            String actionCd = action.toUpperCase();
+            SecureServicePermission permisionManage = SecureServicePermission.create(cldsPermissionTypeClManage,
+                    cldsPermissionInstance, actionCd);
+            isAuthorized(permisionManage);
+            isAuthorizedForVf(model);
+            String userId = getUserId();
+            String actionStateCd = CldsEvent.ACTION_STATE_INITIATED;
+            String processDefinitionKey = "clds-process-action-wf";
+            logger.info("PUT actionCd={}", actionCd);
+            logger.info("PUT actionStateCd={}", actionStateCd);
+            logger.info("PUT processDefinitionKey={}", processDefinitionKey);
+            logger.info("PUT modelName={}", modelName);
+            logger.info("PUT test={}", test);
+            logger.info("PUT bpmnText={}", model.getBpmnText());
+            logger.info("PUT propText={}", model.getPropText());
+            logger.info("PUT userId={}", userId);
+            logger.info("PUT getTypeId={}", model.getTypeId());
+            logger.info("PUT deploymentId={}", model.getDeploymentId());
+            if (model.getTemplateName() != null) {
+                CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
+                if (template != null) {
+                    model.setTemplateId(template.getId());
+                    model.setDocText(template.getPropText());
+                    // This is to provide the Bpmn XML when Template part in UI is
+                    // disabled
+                    model.setBpmnText(template.getBpmnText());
+                }
             }
-        }
-        // save model to db
-        model.setName(modelName);
-        model.save(cldsDao, getUserId());
-        // get vars and format if necessary
-        String prop = model.getPropText();
-        String bpmn = model.getBpmnText();
-        String docText = model.getDocText();
-        String controlName = model.getControlName();
-        String bpmnJson = cldsBpmnTransformer.doXslTransformToString(bpmn);
-        logger.info("PUT bpmnJson={}", bpmnJson);
-        // Flag indicates whether it is triggered by Validation Test button from
-        // UI
-        boolean isTest = false;
-        if (test != null && test.equalsIgnoreCase("true")) {
-            isTest = true;
-        } else {
-            String actionTestOverride = refProp.getStringValue("action.test.override");
-            if (actionTestOverride != null && actionTestOverride.equalsIgnoreCase("true")) {
-                logger.info("PUT actionTestOverride={}", actionTestOverride);
-                logger.info("PUT override test indicator and setting it to true");
+            // save model to db
+            model.setName(modelName);
+            model.save(cldsDao, getUserId());
+            // get vars and format if necessary
+            String prop = model.getPropText();
+            String bpmn = model.getBpmnText();
+            String docText = model.getDocText();
+            String controlName = model.getControlName();
+            String bpmnJson = cldsBpmnTransformer.doXslTransformToString(bpmn);
+            logger.info("PUT bpmnJson={}", bpmnJson);
+            // Flag indicates whether it is triggered by Validation Test button from
+            // UI
+            boolean isTest = false;
+            if (test != null && test.equalsIgnoreCase("true")) {
                 isTest = true;
+            } else {
+                String actionTestOverride = refProp.getStringValue("action.test.override");
+                if (actionTestOverride != null && actionTestOverride.equalsIgnoreCase("true")) {
+                    logger.info("PUT actionTestOverride={}", actionTestOverride);
+                    logger.info("PUT override test indicator and setting it to true");
+                    isTest = true;
+                }
             }
+            logger.info("PUT isTest={}", isTest);
+            boolean isInsertTestEvent = false;
+            String insertTestEvent = refProp.getStringValue("action.insert.test.event");
+            if (insertTestEvent != null && insertTestEvent.equalsIgnoreCase("true")) {
+                isInsertTestEvent = true;
+            }
+            logger.info("PUT isInsertTestEvent={}", isInsertTestEvent);
+            // determine if requested action is permitted
+            model.validateAction(actionCd);
+            logger.info("modelProp - " + prop);
+            logger.info("docText - " + docText);
+            try {
+                String result = camelProxy.submit(actionCd, prop, bpmnJson, modelName, controlName, docText, isTest, userId,
+                        isInsertTestEvent);
+                logger.info("Starting Camel flow on request, result is: ", result);
+            } catch (SdcCommunicationException | PolicyClientException | BadRequestException e) {
+                errorCase = true;
+                logger.error("Exception occured during invoking Camel process", e);
+            }
+            // refresh model info from db (get fresh event info)
+            retrievedModel = CldsModel.retrieve(cldsDao, modelName, false);
+            if (!isTest && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT)
+                    || actionCd.equalsIgnoreCase(CldsEvent.ACTION_RESUBMIT)
+                    || actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMITDCAE))) {
+                // To verify inventory status and modify model status to distribute
+                dcaeInventoryServices.setEventInventory(retrievedModel, getUserId());
+                retrievedModel.save(cldsDao, getUserId());
+            }
+            // audit log
+            LoggingUtils.setTimeContext(startTime, new Date());
+            LoggingUtils.setResponseContext("0", "Process model action success", this.getClass().getName());
+            auditLogger.info("Process model action completed");
+        } catch (Exception e) {
+            errorCase = true;
+            logger.error("Exception occured during putModelAndProcessAction", e);
         }
-        logger.info("PUT isTest={}", isTest);
-        boolean isInsertTestEvent = false;
-        String insertTestEvent = refProp.getStringValue("action.insert.test.event");
-        if (insertTestEvent != null && insertTestEvent.equalsIgnoreCase("true")) {
-            isInsertTestEvent = true;
-        }
-        logger.info("PUT isInsertTestEvent={}", isInsertTestEvent);
-        // determine if requested action is permitted
-        model.validateAction(actionCd);
-        // input variables for Camel process
-        Map<String, Object> variables = new HashMap<>();
-        variables.put("actionCd", actionCd);
-        variables.put("modelProp", prop.getBytes());
-        variables.put("modelBpmnProp", bpmnJson);
-        variables.put("modelName", modelName);
-        variables.put("controlName", controlName);
-        variables.put("docText", docText.getBytes());
-        variables.put("isTest", isTest);
-        variables.put("userid", userId);
-        variables.put("isInsertTestEvent", isInsertTestEvent);
-        logger.info("modelProp - " + prop);
-        logger.info("docText - " + docText);
-        // ModelProperties modelProperties = new ModelProperties(modelName,
-        // controlName, actionCd, isTest, modelBpmnProp, modelProp);
-        try {
-            String result = camelProxy.submit(actionCd, prop, bpmnJson, modelName, controlName, docText, isTest, userId,
-                    isInsertTestEvent);
-            logger.info("Starting Camel flow on request, result is: ", result);
-        } catch (SdcCommunicationException | PolicyClientException | BadRequestException e) {
-            logger.error("Exception occured during invoking Camel process", e);
-            throw new CldsConfigException(e.getMessage(), e);
-        }
-        // refresh model info from db (get fresh event info)
-        CldsModel retreivedModel = CldsModel.retrieve(cldsDao, modelName, false);
-        if (!isTest && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT)
-                || actionCd.equalsIgnoreCase(CldsEvent.ACTION_RESUBMIT)
-                || actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMITDCAE))) {
-            // To verify inventory status and modify model status to distribute
-            dcaeInventoryServices.setEventInventory(retreivedModel, getUserId());
-            retreivedModel.save(cldsDao, getUserId());
+
+        if (errorCase) {
+            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(retrievedModel).build();
         }
-        // audit log
-        LoggingUtils.setTimeContext(startTime, new Date());
-        LoggingUtils.setResponseContext("0", "Process model action success", this.getClass().getName());
-        auditLogger.info("Process model action completed");
-        return retreivedModel;
+        return Response.status(Response.Status.OK).entity(retrievedModel).build();
     }
 
     /**
@@ -556,7 +554,7 @@ public class CldsService extends SecureServiceBase {
 
     /**
      * REST service that retrieves sdc services
-     * 
+     *
      * @throws GeneralSecurityException
      *             In case of issue when decryting the SDC password
      * @throws DecoderException
@@ -586,7 +584,7 @@ public class CldsService extends SecureServiceBase {
 
     /**
      * REST service that retrieves total properties required by UI
-     * 
+     *
      * @throws IOException
      *             In case of issues
      */
@@ -594,13 +592,13 @@ public class CldsService extends SecureServiceBase {
     @Path("/properties")
     @Produces(MediaType.APPLICATION_JSON)
     public String getSdcProperties() throws IOException {
-        return createPropertiesObjectByUUID(getGlobalCldsString(), "{}");
+        return createPropertiesObjectByUUID("{}");
     }
 
     /**
      * REST service that retrieves total properties by using invariantUUID based
      * on refresh and non refresh
-     * 
+     *
      * @throws GeneralSecurityException
      *             In case of issues with the decryting the encrypted password
      * @throws DecoderException
@@ -629,7 +627,7 @@ public class CldsService extends SecureServiceBase {
         // filter out VFs the user is not authorized for
         cldsServiceData.filterVfs(this);
         // format retrieved data into properties json
-        String sdcProperties = sdcCatalogServices.createPropertiesObjectByUUID(getGlobalCldsString(), cldsServiceData);
+        String sdcProperties = sdcCatalogServices.createPropertiesObjectByUUID(cldsServiceData);
         // audit log
         LoggingUtils.setTimeContext(startTime, new Date());
         LoggingUtils.setResponseContext("0", "Get sdc properties by uuid success", this.getClass().getName());
@@ -698,10 +696,10 @@ public class CldsService extends SecureServiceBase {
         return serviceNode.toString();
     }
 
-    private String createPropertiesObjectByUUID(String globalProps, String cldsResponseStr) throws IOException {
+    private String createPropertiesObjectByUUID(String cldsResponseStr) throws IOException {
         ObjectMapper mapper = new ObjectMapper();
         SdcServiceDetail cldsSdcServiceDetail = mapper.readValue(cldsResponseStr, SdcServiceDetail.class);
-        ObjectNode globalPropsJson = null;
+        ObjectNode globalPropsJson = (ObjectNode) refProp.getJsonTemplate(GLOBAL_PROPERTIES_KEY);
         if (cldsSdcServiceDetail != null && cldsSdcServiceDetail.getUuid() != null) {
             /**
              * to create json with vf, alarm and locations
@@ -720,14 +718,8 @@ public class CldsService extends SecureServiceBase {
              */
             ObjectNode emptyvfcobjectNode = createByVFCObjectNode(mapper, cldsSdcServiceDetail.getResources());
             byServiceBasicObjetNode.putPOJO("byVf", emptyvfcobjectNode);
-            globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class);
             globalPropsJson.putPOJO("shared", byServiceBasicObjetNode);
             logger.info("valuie of objNode: {}", globalPropsJson);
-        } else {
-            /**
-             * to create json with total properties when no serviceUUID passed
-             */
-            globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class);
         }
         return globalPropsJson.toString();
     }
@@ -814,115 +806,123 @@ public class CldsService extends SecureServiceBase {
     @Path("/deploy/{modelName}")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public CldsModel deployModel(@PathParam("action") String action, @PathParam("modelName") String modelName,
+    public Response deployModel(@PathParam("action") String action, @PathParam("modelName") String modelName,
             @QueryParam("test") String test, CldsModel model) {
         Date startTime = new Date();
         LoggingUtils.setRequestContext("CldsService: Deploy model", getPrincipalName());
+        Boolean errorCase = false;
         try {
-            checkForDuplicateServiceVf(modelName, model.getPropText());
-        } catch (IOException | BadRequestException e) {
-            logger.error("Exception occured during duplicate check for service and VF", e);
-            throw new CldsConfigException(e.getMessage(), e);
-        }
-        String deploymentId = "";
-        // If model is already deployed then pass same deployment id
-        if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) {
-            deploymentId = model.getDeploymentId();
-        } else {
-            deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId";
-        }
-        String createNewDeploymentStatusUrl = dcaeDispatcherServices.createNewDeployment(deploymentId,
-                model.getTypeId());
-        String operationStatus = "processing";
-        long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10);
-        while ("processing".equalsIgnoreCase(operationStatus)) {
-            // Break the loop if waiting for more than 10 mins
-            if (waitingTime < System.nanoTime()) {
-                break;
+            try {
+                checkForDuplicateServiceVf(modelName, model.getPropText());
+            } catch (IOException | BadRequestException e) {
+                errorCase = true;
+                logger.error("Exception occured during duplicate check for service and VF", e);
             }
-            operationStatus = dcaeDispatcherServices.getOperationStatus(createNewDeploymentStatusUrl);
-        }
-        if ("succeeded".equalsIgnoreCase(operationStatus)) {
-            String artifactName = model.getControlName();
-            if (artifactName != null) {
-                artifactName = artifactName + ".yml";
+            String deploymentId = "";
+            // If model is already deployed then pass same deployment id
+            if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) {
+                deploymentId = model.getDeploymentId();
+            } else {
+                deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId";
             }
-            DcaeEvent dcaeEvent = new DcaeEvent();
-            /* set dcae events */
-            dcaeEvent.setArtifactName(artifactName);
-            dcaeEvent.setEvent(DcaeEvent.EVENT_DEPLOYMENT);
-            CldsEvent.insEvent(cldsDao, dcaeEvent.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(),
-                    CldsEvent.ACTION_STATE_RECEIVED, null);
-            model.setDeploymentId(deploymentId);
-            model.save(cldsDao, getUserId());
-        } else {
-            logger.info("Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
-            throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR,
-                    "Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
+            String createNewDeploymentStatusUrl = dcaeDispatcherServices.createNewDeployment(deploymentId,
+                    model.getTypeId());
+            String operationStatus = "processing";
+            long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10);
+            while ("processing".equalsIgnoreCase(operationStatus)) {
+                // Break the loop if waiting for more than 10 mins
+                if (waitingTime < System.nanoTime()) {
+                    break;
+                }
+                operationStatus = dcaeDispatcherServices.getOperationStatus(createNewDeploymentStatusUrl);
+            }
+            if ("succeeded".equalsIgnoreCase(operationStatus)) {
+                String artifactName = model.getControlName();
+                if (artifactName != null) {
+                    artifactName = artifactName + ".yml";
+                }
+                DcaeEvent dcaeEvent = new DcaeEvent();
+                /* set dcae events */
+                dcaeEvent.setArtifactName(artifactName);
+                dcaeEvent.setEvent(DcaeEvent.EVENT_DEPLOYMENT);
+                CldsEvent.insEvent(cldsDao, dcaeEvent.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(),
+                        CldsEvent.ACTION_STATE_RECEIVED, null);
+                model.setDeploymentId(deploymentId);
+                model.save(cldsDao, getUserId());
+            } else {
+                logger.info("Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
+                throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR,
+                        "Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
+            }
+            logger.info("Deploy model (" + modelName + ") succeeded...Deployment Id is - " + deploymentId);
+            // audit log
+            LoggingUtils.setTimeContext(startTime, new Date());
+            LoggingUtils.setResponseContext("0", "Deploy model success", this.getClass().getName());
+            auditLogger.info("Deploy model completed");
+        } catch (Exception e) {
+            errorCase = true;
+            logger.error("Exception occured during deployModel", e);
         }
-        logger.info("Deploy model (" + modelName + ") succeeded...Deployment Id is - " + deploymentId);
-        // audit log
-        LoggingUtils.setTimeContext(startTime, new Date());
-        LoggingUtils.setResponseContext("0", "Deploy model success", this.getClass().getName());
-        auditLogger.info("Deploy model completed");
-        return model;
+
+        if (errorCase) {
+            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(model).build();
+        }
+        return Response.status(Response.Status.OK).entity(model).build();
     }
 
     @PUT
     @Path("/undeploy/{modelName}")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public CldsModel unDeployModel(@PathParam("action") String action, @PathParam("modelName") String modelName,
-            @QueryParam("test") String test, CldsModel model) throws IOException {
+    public Response unDeployModel(@PathParam("action") String action, @PathParam("modelName") String modelName,
+            @QueryParam("test") String test, CldsModel model) {
         Date startTime = new Date();
         LoggingUtils.setRequestContext("CldsService: Undeploy model", getPrincipalName());
-        String operationStatusUndeployUrl = dcaeDispatcherServices.deleteExistingDeployment(model.getDeploymentId(),
-                model.getTypeId());
-        String operationStatus = "processing";
-        long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10);
-        while ("processing".equalsIgnoreCase(operationStatus)) {
-            if (waitingTime < System.nanoTime()) {
-                break;
+
+        Boolean errorCase = false;
+        try {
+            String operationStatusUndeployUrl = dcaeDispatcherServices.deleteExistingDeployment(model.getDeploymentId(),
+                    model.getTypeId());
+            String operationStatus = "processing";
+            long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10);
+            while ("processing".equalsIgnoreCase(operationStatus)) {
+                if (waitingTime < System.nanoTime()) {
+                    break;
+                }
+                operationStatus = dcaeDispatcherServices.getOperationStatus(operationStatusUndeployUrl);
             }
-            operationStatus = dcaeDispatcherServices.getOperationStatus(operationStatusUndeployUrl);
-        }
-        if ("succeeded".equalsIgnoreCase(operationStatus)) {
-            String artifactName = model.getControlName();
-            if (artifactName != null) {
-                artifactName = artifactName + ".yml";
+            if ("succeeded".equalsIgnoreCase(operationStatus)) {
+                String artifactName = model.getControlName();
+                if (artifactName != null) {
+                    artifactName = artifactName + ".yml";
+                }
+                DcaeEvent dcaeEvent = new DcaeEvent();
+                // set dcae events
+                dcaeEvent.setArtifactName(artifactName);
+                dcaeEvent.setEvent(DcaeEvent.EVENT_UNDEPLOYMENT);
+                CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(),
+                        CldsEvent.ACTION_STATE_RECEIVED, null);
+                model.setDeploymentId(null);
+                model.save(cldsDao, getUserId());
+            } else {
+                logger.info("Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
+                throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR,
+                        "Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
             }
-            DcaeEvent dcaeEvent = new DcaeEvent();
-            // set dcae events
-            dcaeEvent.setArtifactName(artifactName);
-            dcaeEvent.setEvent(DcaeEvent.EVENT_UNDEPLOYMENT);
-            CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(),
-                    CldsEvent.ACTION_STATE_RECEIVED, null);
-            model.setDeploymentId(null);
-            model.save(cldsDao, getUserId());
-        } else {
-            logger.info("Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
-            throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR,
-                    "Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus);
+            logger.info("Undeploy model (" + modelName + ") succeeded.");
+            // audit log
+            LoggingUtils.setTimeContext(startTime, new Date());
+            LoggingUtils.setResponseContext("0", "Undeploy model success", this.getClass().getName());
+            auditLogger.info("Undeploy model completed");
+        } catch (Exception e) {
+            errorCase = true;
+            logger.error("Exception occured during unDeployModel", e);
         }
-        logger.info("Undeploy model (" + modelName + ") succeeded.");
-        // audit log
-        LoggingUtils.setTimeContext(startTime, new Date());
-        LoggingUtils.setResponseContext("0", "Undeploy model success", this.getClass().getName());
-        auditLogger.info("Undeploy model completed");
-        return model;
-    }
 
-    private String getGlobalCldsString() {
-        try {
-            if (null == globalCldsProperties) {
-                globalCldsProperties = new Properties();
-                globalCldsProperties.load(appContext.getResource(globalClds).getInputStream());
-            }
-            return (String) globalCldsProperties.get("globalCldsProps");
-        } catch (IOException e) {
-            logger.error("Unable to load the globalClds due to an exception", e);
-            throw new CldsConfigException("Unable to load the globalClds due to an exception", e);
+        if (errorCase) {
+            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(model).build();
         }
+        return Response.status(Response.Status.OK).entity(model).build();
     }
 
     private void checkForDuplicateServiceVf(String modelName, String modelPropText) throws IOException {
index e64f74b..1b03922 100644 (file)
@@ -55,9 +55,9 @@ import org.springframework.stereotype.Component;
 @Path("/cldsTempate")
 public class CldsTemplateService extends SecureServiceBase {
 
-    @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}")
+    @Value("${clamp.config.security.permission.type.template:permission-type-template}")
     private String cldsPermissionTypeTemplate;
-    @Value("${CLDS_PERMISSION_INSTANCE:dev}")
+    @Value("${clamp.config.security.permission.instance:dev}")
     private String cldsPermissionInstance;
     private SecureServicePermission permissionReadTemplate;
     private SecureServicePermission permissionUpdateTemplate;
index 57705d8..720576c 100644 (file)
@@ -28,7 +28,7 @@ import java.io.InputStream;
 import java.util.Scanner;
 
 /**
- * Utility methods supporting transforms.
+ * Utility methods supporting resources accesses.
  */
 public final class ResourceFileUtil {
 
diff --git a/src/main/resources/META-INF/resources/designer/WEB-INF/web.xml b/src/main/resources/META-INF/resources/designer/WEB-INF/web.xml
deleted file mode 100644 (file)
index b3b47e3..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ============LICENSE_START=======================================================
-  ONAP CLAMP
-  ================================================================================
-  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============================================
-  ===================================================================
-  ECOMP is a trademark and service mark of AT&T Intellectual Property.
-  -->
-
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
-  <welcome-file-list>
-    <welcome-file>index.html</welcome-file>
-  </welcome-file-list>
-</web-app>
index 024d488..00b41a1 100644 (file)
@@ -1,7 +1,6 @@
-//! moment.js
-//! version : 2.9.0
+//! moment.min.js
+//! version : 2.20.1
 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
 //! license : MIT
 //! momentjs.com
-(function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(a,b){return Bb.call(a,b)}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function e(a){vb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function f(a,b){var c=!0;return o(function(){return c&&(e(a),c=!1),b.apply(this,arguments)},b)}function g(a,b){sc[a]||(e(b),sc[a]=!0)}function h(a,b){return function(c){return r(a.call(this,c),b)}}function i(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function j(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function k(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function l(){}function m(a,b){b!==!1&&H(a),p(this,a),this._d=new Date(+a._d),uc===!1&&(uc=!0,vb.updateOffset(this),uc=!1)}function n(a){var b=A(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=vb.localeData(),this._bubble()}function o(a,b){for(var d in b)c(b,d)&&(a[d]=b[d]);return c(b,"toString")&&(a.toString=b.toString),c(b,"valueOf")&&(a.valueOf=b.valueOf),a}function p(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Kb.length>0)for(c in Kb)d=Kb[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function s(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function t(a,b){var c;return b=M(b,a),a.isBefore(b)?c=s(a,b):(c=s(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function u(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(g(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=vb.duration(c,d),v(this,e,a),this}}function v(a,b,c,d){var e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&pb(a,"Date",ob(a,"Date")+f*c),g&&nb(a,ob(a,"Month")+g*c),d&&vb.updateOffset(a,f||g)}function w(a){return"[object Array]"===Object.prototype.toString.call(a)}function x(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function y(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&C(a[d])!==C(b[d]))&&g++;return g+f}function z(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=lc[a]||mc[b]||b}return a}function A(a){var b,d,e={};for(d in a)c(a,d)&&(b=z(d),b&&(e[b]=a[d]));return e}function B(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}vb[b]=function(e,f){var g,h,i=vb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=vb().utc().set(d,a);return i.call(vb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function C(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function D(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function E(a,b,c){return jb(vb([a,11,31+b-c]),b,c).week}function F(a){return G(a)?366:365}function G(a){return a%4===0&&a%100!==0||a%400===0}function H(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[Db]<0||a._a[Db]>11?Db:a._a[Eb]<1||a._a[Eb]>D(a._a[Cb],a._a[Db])?Eb:a._a[Fb]<0||a._a[Fb]>24||24===a._a[Fb]&&(0!==a._a[Gb]||0!==a._a[Hb]||0!==a._a[Ib])?Fb:a._a[Gb]<0||a._a[Gb]>59?Gb:a._a[Hb]<0||a._a[Hb]>59?Hb:a._a[Ib]<0||a._a[Ib]>999?Ib:-1,a._pf._overflowDayOfYear&&(Cb>b||b>Eb)&&(b=Eb),a._pf.overflow=b)}function I(b){return null==b._isValid&&(b._isValid=!isNaN(b._d.getTime())&&b._pf.overflow<0&&!b._pf.empty&&!b._pf.invalidMonth&&!b._pf.nullInput&&!b._pf.invalidFormat&&!b._pf.userInvalidated,b._strict&&(b._isValid=b._isValid&&0===b._pf.charsLeftOver&&0===b._pf.unusedTokens.length&&b._pf.bigHour===a)),b._isValid}function J(a){return a?a.toLowerCase().replace("_","-"):a}function K(a){for(var b,c,d,e,f=0;f<a.length;){for(e=J(a[f]).split("-"),b=e.length,c=J(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=L(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&y(e,c,!0)>=b-1)break;b--}f++}return null}function L(a){var b=null;if(!Jb[a]&&Lb)try{b=vb.locale(),require("./locale/"+a),vb.locale(b)}catch(c){}return Jb[a]}function M(a,b){var c,d;return b._isUTC?(c=b.clone(),d=(vb.isMoment(a)||x(a)?+a:+vb(a))-+c,c._d.setTime(+c._d+d),vb.updateOffset(c,!1),c):vb(a).local()}function N(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function O(a){var b,c,d=a.match(Pb);for(b=0,c=d.length;c>b;b++)d[b]=rc[d[b]]?rc[d[b]]:N(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function P(a,b){return a.isValid()?(b=Q(b,a.localeData()),nc[b]||(nc[b]=O(b)),nc[b](a)):a.localeData().invalidDate()}function Q(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Qb.lastIndex=0;d>=0&&Qb.test(a);)a=a.replace(Qb,c),Qb.lastIndex=0,d-=1;return a}function R(a,b){var c,d=b._strict;switch(a){case"Q":return _b;case"DDDD":return bc;case"YYYY":case"GGGG":case"gggg":return d?cc:Tb;case"Y":case"G":case"g":return ec;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?dc:Ub;case"S":if(d)return _b;case"SS":if(d)return ac;case"SSS":if(d)return bc;case"DDD":return Sb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Wb;case"a":case"A":return b._locale._meridiemParse;case"x":return Zb;case"X":return $b;case"Z":case"ZZ":return Xb;case"T":return Yb;case"SSSS":return Vb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?ac:Rb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Rb;case"Do":return d?b._locale._ordinalParse:b._locale._ordinalParseLenient;default:return c=new RegExp($(Z(a.replace("\\","")),"i"))}}function S(a){a=a||"";var b=a.match(Xb)||[],c=b[b.length-1]||[],d=(c+"").match(jc)||["-",0,0],e=+(60*d[1])+C(d[2]);return"+"===d[0]?e:-e}function T(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[Db]=3*(C(b)-1));break;case"M":case"MM":null!=b&&(e[Db]=C(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b,a,c._strict),null!=d?e[Db]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[Eb]=C(b));break;case"Do":null!=b&&(e[Eb]=C(parseInt(b.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=C(b));break;case"YY":e[Cb]=vb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[Cb]=C(b);break;case"a":case"A":c._meridiem=b;break;case"h":case"hh":c._pf.bigHour=!0;case"H":case"HH":e[Fb]=C(b);break;case"m":case"mm":e[Gb]=C(b);break;case"s":case"ss":e[Hb]=C(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Ib]=C(1e3*("0."+b));break;case"x":c._d=new Date(C(b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=S(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=C(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=vb.parseTwoDigitYear(b)}}function U(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[Cb],jb(vb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[Cb],jb(vb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=kb(d,e,f,h,g),a._a[Cb]=i.year,a._dayOfYear=i.dayOfYear}function V(a){var c,d,e,f,g=[];if(!a._d){for(e=X(a),a._w&&null==a._a[Eb]&&null==a._a[Db]&&U(a),a._dayOfYear&&(f=b(a._a[Cb],e[Cb]),a._dayOfYear>F(f)&&(a._pf._overflowDayOfYear=!0),d=fb(f,0,a._dayOfYear),a._a[Db]=d.getUTCMonth(),a._a[Eb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];24===a._a[Fb]&&0===a._a[Gb]&&0===a._a[Hb]&&0===a._a[Ib]&&(a._nextDay=!0,a._a[Fb]=0),a._d=(a._useUTC?fb:eb).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Fb]=24)}}function W(a){var b;a._d||(b=A(a._i),a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],V(a))}function X(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function Y(b){if(b._f===vb.ISO_8601)return void ab(b);b._a=[],b._pf.empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Q(b._f,b._locale).match(Pb)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(R(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&b._pf.unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),rc[f]?(d?b._pf.empty=!1:b._pf.unusedTokens.push(f),T(f,d,b)):b._strict&&!d&&b._pf.unusedTokens.push(f);b._pf.charsLeftOver=i-j,h.length>0&&b._pf.unusedInput.push(h),b._pf.bigHour===!0&&b._a[Fb]<=12&&(b._pf.bigHour=a),b._a[Fb]=k(b._locale,b._a[Fb],b._meridiem),V(b),H(b)}function Z(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function $(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function _(a){var b,c,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=p({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._pf=d(),b._f=a._f[f],Y(b),I(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,c=b));o(a,c||b)}function ab(a){var b,c,d=a._i,e=fc.exec(d);if(e){for(a._pf.iso=!0,b=0,c=hc.length;c>b;b++)if(hc[b][1].exec(d)){a._f=hc[b][0]+(e[6]||" ");break}for(b=0,c=ic.length;c>b;b++)if(ic[b][1].exec(d)){a._f+=ic[b][0];break}d.match(Xb)&&(a._f+="Z"),Y(a)}else a._isValid=!1}function bb(a){ab(a),a._isValid===!1&&(delete a._isValid,vb.createFromInputFallback(a))}function cb(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function db(b){var c,d=b._i;d===a?b._d=new Date:x(d)?b._d=new Date(+d):null!==(c=Mb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?bb(b):w(d)?(b._a=cb(d.slice(0),function(a){return parseInt(a,10)}),V(b)):"object"==typeof d?W(b):"number"==typeof d?b._d=new Date(d):vb.createFromInputFallback(b)}function eb(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fb(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function gb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function hb(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function ib(a,b,c){var d=vb.duration(a).abs(),e=Ab(d.as("s")),f=Ab(d.as("m")),g=Ab(d.as("h")),h=Ab(d.as("d")),i=Ab(d.as("M")),j=Ab(d.as("y")),k=e<oc.s&&["s",e]||1===f&&["m"]||f<oc.m&&["mm",f]||1===g&&["h"]||g<oc.h&&["hh",g]||1===h&&["d"]||h<oc.d&&["dd",h]||1===i&&["M"]||i<oc.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,hb.apply({},k)}function jb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=vb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function kb(a,b,c,d,e){var f,g,h=fb(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:F(a-1)+g}}function lb(b){var c,d=b._i,e=b._f;return b._locale=b._locale||vb.localeData(b._l),null===d||e===a&&""===d?vb.invalid({nullInput:!0}):("string"==typeof d&&(b._i=d=b._locale.preparse(d)),vb.isMoment(d)?new m(d,!0):(e?w(e)?_(b):Y(b):db(b),c=new m(b),c._nextDay&&(c.add(1,"d"),c._nextDay=a),c))}function mb(a,b){var c,d;if(1===b.length&&w(b[0])&&(b=b[0]),!b.length)return vb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function nb(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),D(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function ob(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function pb(a,b,c){return"Month"===b?nb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function qb(a,b){return function(c){return null!=c?(pb(this,a,c),vb.updateOffset(this,b),this):ob(this,a)}}function rb(a){return 400*a/146097}function sb(a){return 146097*a/400}function tb(a){vb.duration.fn[a]=function(){return this._data[a]}}function ub(a){"undefined"==typeof ender&&(wb=zb.moment,zb.moment=a?f("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",vb):vb)}for(var vb,wb,xb,yb="2.9.0",zb="undefined"==typeof global||"undefined"!=typeof window&&window!==global.window?this:global,Ab=Math.round,Bb=Object.prototype.hasOwnProperty,Cb=0,Db=1,Eb=2,Fb=3,Gb=4,Hb=5,Ib=6,Jb={},Kb=[],Lb="undefined"!=typeof module&&module&&module.exports,Mb=/^\/?Date\((\-?\d+)/i,Nb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Ob=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Pb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Qb=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Rb=/\d\d?/,Sb=/\d{1,3}/,Tb=/\d{1,4}/,Ub=/[+\-]?\d{1,6}/,Vb=/\d+/,Wb=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Xb=/Z|[\+\-]\d\d:?\d\d/gi,Yb=/T/i,Zb=/[\+\-]?\d+/,$b=/[\+\-]?\d+(\.\d{1,3})?/,_b=/\d/,ac=/\d\d/,bc=/\d{3}/,cc=/\d{4}/,dc=/[+-]?\d{6}/,ec=/[+-]?\d+/,fc=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,gc="YYYY-MM-DDTHH:mm:ssZ",hc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],ic=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],jc=/([\+\-]|\d\d)/gi,kc=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),lc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},mc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},nc={},oc={s:45,m:45,h:22,d:26,M:11},pc="DDD w W M D d".split(" "),qc="M D H h m s w W".split(" "),rc={M:function(){return this.month()+1},MMM:function(a){return this.localeData().monthsShort(this,a)},MMMM:function(a){return this.localeData().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)},ddd:function(a){return this.localeData().weekdaysShort(this,a)},dddd:function(a){return this.localeData().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return r(this.year()%100,2)},YYYY:function(){return r(this.year(),4)},YYYYY:function(){return r(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+r(Math.abs(a),6)},gg:function(){return r(this.weekYear()%100,2)},gggg:function(){return r(this.weekYear(),4)},ggggg:function(){return r(this.weekYear(),5)},GG:function(){return r(this.isoWeekYear()%100,2)},GGGG:function(){return r(this.isoWeekYear(),4)},GGGGG:function(){return r(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return C(this.milliseconds()/100)},SS:function(){return r(C(this.milliseconds()/10),2)},SSS:function(){return r(this.milliseconds(),3)},SSSS:function(){return r(this.milliseconds(),3)},Z:function(){var a=this.utcOffset(),b="+";return 0>a&&(a=-a,b="-"),b+r(C(a/60),2)+":"+r(C(a)%60,2)},ZZ:function(){var a=this.utcOffset(),b="+";return 0>a&&(a=-a,b="-"),b+r(C(a/60),2)+r(C(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},sc={},tc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],uc=!1;pc.length;)xb=pc.pop(),rc[xb+"o"]=i(rc[xb],xb);for(;qc.length;)xb=qc.pop(),rc[xb+xb]=h(rc[xb],2);rc.DDDD=h(rc.DDD,3),o(l.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=vb.utc([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=vb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.apply(b,[c]):d},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(a){return a},postformat:function(a){return a},week:function(a){return jb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),vb=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=c,g._l=e,g._strict=f,g._isUTC=!1,g._pf=d(),lb(g)},vb.suppressDeprecationWarnings=!1,vb.createFromInputFallback=f("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),vb.min=function(){var a=[].slice.call(arguments,0);return mb("isBefore",a)},vb.max=function(){var a=[].slice.call(arguments,0);return mb("isAfter",a)},vb.utc=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=c,g._strict=f,g._pf=d(),lb(g).utc()},vb.unix=function(a){return vb(1e3*a)},vb.duration=function(a,b){var d,e,f,g,h=a,i=null;return vb.isDuration(a)?h={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(h={},b?h[b]=a:h.milliseconds=a):(i=Nb.exec(a))?(d="-"===i[1]?-1:1,h={y:0,d:C(i[Eb])*d,h:C(i[Fb])*d,m:C(i[Gb])*d,s:C(i[Hb])*d,ms:C(i[Ib])*d}):(i=Ob.exec(a))?(d="-"===i[1]?-1:1,f=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*d},h={y:f(i[2]),M:f(i[3]),d:f(i[4]),h:f(i[5]),m:f(i[6]),s:f(i[7]),w:f(i[8])}):null==h?h={}:"object"==typeof h&&("from"in h||"to"in h)&&(g=t(vb(h.from),vb(h.to)),h={},h.ms=g.milliseconds,h.M=g.months),e=new n(h),vb.isDuration(a)&&c(a,"_locale")&&(e._locale=a._locale),e},vb.version=yb,vb.defaultFormat=gc,vb.ISO_8601=function(){},vb.momentProperties=Kb,vb.updateOffset=function(){},vb.relativeTimeThreshold=function(b,c){return oc[b]===a?!1:c===a?oc[b]:(oc[b]=c,!0)},vb.lang=f("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return vb.locale(a,b)}),vb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?vb.defineLocale(a,b):vb.localeData(a),c&&(vb.duration._locale=vb._locale=c)),vb._locale._abbr},vb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Jb[a]||(Jb[a]=new l),Jb[a].set(b),vb.locale(a),Jb[a]):(delete Jb[a],null)},vb.langData=f("moment.langData is deprecated. Use moment.localeData instead.",function(a){return vb.localeData(a)}),vb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return vb._locale;if(!w(a)){if(b=L(a))return b;a=[a]}return K(a)},vb.isMoment=function(a){return a instanceof m||null!=a&&c(a,"_isAMomentObject")},vb.isDuration=function(a){return a instanceof n};for(xb=tc.length-1;xb>=0;--xb)B(tc[xb]);vb.normalizeUnits=function(a){return z(a)},vb.invalid=function(a){var b=vb.utc(0/0);return null!=a?o(b._pf,a):b._pf.userInvalidated=!0,b},vb.parseZone=function(){return vb.apply(null,arguments).parseZone()},vb.parseTwoDigitYear=function(a){return C(a)+(C(a)>68?1900:2e3)},vb.isDate=x,o(vb.fn=m.prototype,{clone:function(){return vb(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=vb(this).utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():P(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):P(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return I(this)},isDSTShifted:function(){return this._a?this.isValid()&&y(this._a,(this._isUTC?vb.utc(this._a):vb(this._a)).toArray())>0:!1},parsingFlags:function(){return o({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.utcOffset(0,a)},local:function(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(a){var b=P(this,a||vb.defaultFormat);return this.localeData().postformat(b)},add:u(1,"add"),subtract:u(-1,"subtract"),diff:function(a,b,c){var d,e,f=M(a,this),g=6e4*(f.utcOffset()-this.utcOffset());return b=z(b),"year"===b||"month"===b||"quarter"===b?(e=j(this,f),"quarter"===b?e/=3:"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:q(e)},from:function(a,b){return vb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(vb(),a)},calendar:function(a){var b=a||vb(),c=M(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this,vb(b)))},isLeapYear:function(){return G(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=gb(a,this.localeData()),this.add(a-b,"d")):b},month:qb("Month",!0),startOf:function(a){switch(a=z(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(b){return b=z(b),b===a||"millisecond"===b?this:this.startOf(b).add(1,"isoWeek"===b?"week":b).subtract(1,"ms")},isAfter:function(a,b){var c;return b=z("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=vb.isMoment(a)?a:vb(a),+this>+a):(c=vb.isMoment(a)?+a:+vb(a),c<+this.clone().startOf(b))},isBefore:function(a,b){var c;return b=z("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=vb.isMoment(a)?a:vb(a),+a>+this):(c=vb.isMoment(a)?+a:+vb(a),+this.clone().endOf(b)<c)},isBetween:function(a,b,c){return this.isAfter(a,c)&&this.isBefore(b,c)},isSame:function(a,b){var c;return b=z(b||"millisecond"),"millisecond"===b?(a=vb.isMoment(a)?a:vb(a),+this===+a):(c=+vb(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))},min:f("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=vb.apply(null,arguments),this>a?this:a}),max:f("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=vb.apply(null,arguments),a>this?this:a}),zone:f("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}),utcOffset:function(a,b){var c,d=this._offset||0;return null!=a?("string"==typeof a&&(a=S(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._dateUtcOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.add(c,"m"),d!==a&&(!b||this._changeInProgress?v(this,vb.duration(a-d,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,vb.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?d:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(S(this._i)),this},hasAlignedHourOffset:function(a){return a=a?vb(a).utcOffset():0,(this.utcOffset()-a)%60===0},daysInMonth:function(){return D(this.year(),this.month())},dayOfYear:function(a){var b=Ab((vb(this).startOf("day")-vb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=jb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=jb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=jb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return E(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return E(this.year(),a.dow,a.doy)},get:function(a){return a=z(a),this[a]()},set:function(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else a=z(a),"function"==typeof this[a]&&this[a](b);return this},locale:function(b){var c;return b===a?this._locale._abbr:(c=vb.localeData(b),null!=c&&(this._locale=c),this)},lang:f("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(b){return b===a?this.localeData():this.locale(b)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),vb.fn.millisecond=vb.fn.milliseconds=qb("Milliseconds",!1),vb.fn.second=vb.fn.seconds=qb("Seconds",!1),vb.fn.minute=vb.fn.minutes=qb("Minutes",!1),vb.fn.hour=vb.fn.hours=qb("Hours",!0),vb.fn.date=qb("Date",!0),vb.fn.dates=f("dates accessor is deprecated. Use date instead.",qb("Date",!0)),vb.fn.year=qb("FullYear",!0),vb.fn.years=f("years accessor is deprecated. Use year instead.",qb("FullYear",!0)),vb.fn.days=vb.fn.day,vb.fn.months=vb.fn.month,vb.fn.weeks=vb.fn.week,vb.fn.isoWeeks=vb.fn.isoWeek,vb.fn.quarters=vb.fn.quarter,vb.fn.toJSON=vb.fn.toISOString,vb.fn.isUTC=vb.fn.isUtc,o(vb.duration.fn=n.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=q(d/1e3),g.seconds=a%60,b=q(a/60),g.minutes=b%60,c=q(b/60),g.hours=c%24,e+=q(c/24),h=q(rb(e)),e-=q(sb(h)),f+=q(e/30),e%=30,h+=q(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return q(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*C(this._months/12)
-},humanize:function(a){var b=ib(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=vb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=vb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=z(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=z(a),"month"===a||"year"===a)return b=this._days+this._milliseconds/864e5,c=this._months+12*rb(b),"month"===a?c:c/12;switch(b=this._days+Math.round(sb(this._months/12)),a){case"week":return b/7+this._milliseconds/6048e5;case"day":return b+this._milliseconds/864e5;case"hour":return 24*b+this._milliseconds/36e5;case"minute":return 24*b*60+this._milliseconds/6e4;case"second":return 24*b*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*b*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+a)}},lang:vb.fn.lang,locale:vb.fn.locale,toIsoString:f("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),vb.duration.fn.toString=vb.duration.fn.toISOString;for(xb in kc)c(kc,xb)&&tb(xb.toLowerCase());vb.duration.fn.asMilliseconds=function(){return this.as("ms")},vb.duration.fn.asSeconds=function(){return this.as("s")},vb.duration.fn.asMinutes=function(){return this.as("m")},vb.duration.fn.asHours=function(){return this.as("h")},vb.duration.fn.asDays=function(){return this.as("d")},vb.duration.fn.asWeeks=function(){return this.as("weeks")},vb.duration.fn.asMonths=function(){return this.as("M")},vb.duration.fn.asYears=function(){return this.as("y")},vb.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===C(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Lb?module.exports=vb:"function"==typeof define&&define.amd?(define(function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(zb.moment=wb),vb}),ub(!0)):ub()}).call(this);
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";function e(){return Qe.apply(null,arguments)}function t(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function n(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){return void 0===e}function i(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function r(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function a(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function o(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e,t){for(var n in t)o(t,n)&&(e[n]=t[n]);return o(t,"toString")&&(e.toString=t.toString),o(t,"valueOf")&&(e.valueOf=t.valueOf),e}function l(e,t,n,s){return ge(e,t,n,s,!0).utc()}function d(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function h(e){if(null==e._isValid){var t=d(e),n=Xe.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function c(e){var t=l(NaN);return null!=e?u(d(t),e):d(t).userInvalidated=!0,t}function f(e,t){var n,i,r;if(s(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),s(t._i)||(e._i=t._i),s(t._f)||(e._f=t._f),s(t._l)||(e._l=t._l),s(t._strict)||(e._strict=t._strict),s(t._tzm)||(e._tzm=t._tzm),s(t._isUTC)||(e._isUTC=t._isUTC),s(t._offset)||(e._offset=t._offset),s(t._pf)||(e._pf=d(t)),s(t._locale)||(e._locale=t._locale),Ke.length>0)for(n=0;n<Ke.length;n++)s(r=t[i=Ke[n]])||(e[i]=r);return e}function m(t){f(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===et&&(et=!0,e.updateOffset(this),et=!1)}function _(e){return e instanceof m||null!=e&&null!=e._isAMomentObject}function y(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=y(t)),n}function p(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&g(e[s])!==g(t[s]))&&a++;return a+r}function w(t){!1===e.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function v(t,n){var s=!0;return u(function(){if(null!=e.deprecationHandler&&e.deprecationHandler(null,t),s){for(var i,r=[],a=0;a<arguments.length;a++){if(i="","object"==typeof arguments[a]){i+="\n["+a+"] ";for(var o in arguments[0])i+=o+": "+arguments[0][o]+", ";i=i.slice(0,-2)}else i=arguments[a];r.push(i)}w(t+"\nArguments: "+Array.prototype.slice.call(r).join("")+"\n"+(new Error).stack),s=!1}return n.apply(this,arguments)},n)}function M(t,n){null!=e.deprecationHandler&&e.deprecationHandler(t,n),tt[t]||(w(n),tt[t]=!0)}function S(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function D(e,t){var s,i=u({},e);for(s in t)o(t,s)&&(n(e[s])&&n(t[s])?(i[s]={},u(i[s],e[s]),u(i[s],t[s])):null!=t[s]?i[s]=t[s]:delete i[s]);for(s in e)o(e,s)&&!o(t,s)&&n(e[s])&&(i[s]=u({},i[s]));return i}function k(e){null!=e&&this.set(e)}function Y(e,t){var n=e.toLowerCase();st[n]=st[n+"s"]=st[t]=e}function O(e){return"string"==typeof e?st[e]||st[e.toLowerCase()]:void 0}function T(e){var t,n,s={};for(n in e)o(e,n)&&(t=O(n))&&(s[t]=e[n]);return s}function x(e,t){it[e]=t}function b(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}function P(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(ut[e]=i),t&&(ut[t[0]]=function(){return b(i.apply(this,arguments),t[1],t[2])}),n&&(ut[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function W(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function H(e,t){return e.isValid()?(t=R(t,e.localeData()),ot[t]=ot[t]||function(e){var t,n,s=e.match(rt);for(t=0,n=s.length;t<n;t++)ut[s[t]]?s[t]=ut[s[t]]:s[t]=W(s[t]);return function(t){var i,r="";for(i=0;i<n;i++)r+=S(s[i])?s[i].call(t,e):s[i];return r}}(t),ot[t](e)):e.localeData().invalidDate()}function R(e,t){function n(e){return t.longDateFormat(e)||e}var s=5;for(at.lastIndex=0;s>=0&&at.test(e);)e=e.replace(at,n),at.lastIndex=0,s-=1;return e}function C(e,t,n){Yt[e]=S(t)?t:function(e,s){return e&&n?n:t}}function F(e,t){return o(Yt,e)?Yt[e](t._strict,t._locale):new RegExp(function(e){return U(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i}))}(e))}function U(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function L(e,t){var n,s=t;for("string"==typeof e&&(e=[e]),i(t)&&(s=function(e,n){n[t]=g(e)}),n=0;n<e.length;n++)Ot[e[n]]=s}function N(e,t){L(e,function(e,n,s,i){s._w=s._w||{},t(e,s._w,s,i)})}function G(e,t,n){null!=t&&o(Ot,e)&&Ot[e](t,n._a,n,e)}function V(e){return E(e)?366:365}function E(e){return e%4==0&&e%100!=0||e%400==0}function I(t,n){return function(s){return null!=s?(j(this,t,s),e.updateOffset(this,n),this):A(this,t)}}function A(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function j(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&E(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Z(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Z(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=function(e,t){return(e%t+t)%t}(t,12);return e+=(t-n)/12,1===n?E(e)?29:28:31-n%7%2}function z(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=g(t);else if(t=e.localeData().monthsParse(t),!i(t))return e;return n=Math.min(e.date(),Z(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function $(t){return null!=t?(z(this,t),e.updateOffset(this,!0),this):A(this,"Month")}function q(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=l([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=U(s[t]),i[t]=U(i[t]);for(t=0;t<24;t++)r[t]=U(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function J(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function B(e,t,n){var s=7+t-n;return-((7+J(e,0,s).getUTCDay()-t)%7)+s-1}function Q(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+B(e,s,i);return o<=0?a=V(r=e-1)+o:o>V(e)?(r=e+1,a=o-V(e)):(r=e,a=o),{year:r,dayOfYear:a}}function X(e,t,n){var s,i,r=B(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+K(i=e.year()-1,t,n):a>K(e.year(),t,n)?(s=a-K(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function K(e,t,n){var s=B(e,t,n),i=B(e+1,t,n);return(V(e)-s+i)/7}function ee(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],d=[];for(t=0;t<7;t++)n=l([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),d.push(s),d.push(i),d.push(r);for(a.sort(e),o.sort(e),u.sort(e),d.sort(e),t=0;t<7;t++)o[t]=U(o[t]),u[t]=U(u[t]),d[t]=U(d[t]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function te(){return this.hours()%12||12}function ne(e,t){P(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function se(e,t){return t._meridiemParse}function ie(e){return e?e.toLowerCase().replace("_","-"):e}function re(e){var t=null;if(!Xt[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=Jt._abbr;require("./locale/"+e),ae(t)}catch(e){}return Xt[e]}function ae(e,t){var n;return e&&(n=s(t)?ue(e):oe(e,t))&&(Jt=n),Jt._abbr}function oe(e,t){if(null!==t){var n=Qt;if(t.abbr=e,null!=Xt[e])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Xt[e]._config;else if(null!=t.parentLocale){if(null==Xt[t.parentLocale])return Kt[t.parentLocale]||(Kt[t.parentLocale]=[]),Kt[t.parentLocale].push({name:e,config:t}),null;n=Xt[t.parentLocale]._config}return Xt[e]=new k(D(n,t)),Kt[e]&&Kt[e].forEach(function(e){oe(e.name,e.config)}),ae(e),Xt[e]}return delete Xt[e],null}function ue(e){var n;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Jt;if(!t(e)){if(n=re(e))return n;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=ie(e[r]).split("-")).length,n=(n=ie(e[r+1]))?n.split("-"):null;t>0;){if(s=re(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&p(i,n,!0)>=t-1)break;t--}r++}return null}(e)}function le(e){var t,n=e._a;return n&&-2===d(e).overflow&&(t=n[xt]<0||n[xt]>11?xt:n[bt]<1||n[bt]>Z(n[Tt],n[xt])?bt:n[Pt]<0||n[Pt]>24||24===n[Pt]&&(0!==n[Wt]||0!==n[Ht]||0!==n[Rt])?Pt:n[Wt]<0||n[Wt]>59?Wt:n[Ht]<0||n[Ht]>59?Ht:n[Rt]<0||n[Rt]>999?Rt:-1,d(e)._overflowDayOfYear&&(t<Tt||t>bt)&&(t=bt),d(e)._overflowWeeks&&-1===t&&(t=Ct),d(e)._overflowWeekday&&-1===t&&(t=Ft),d(e).overflow=t),e}function de(e,t,n){return null!=e?e:null!=t?t:n}function he(t){var n,s,i,r,a,o=[];if(!t._d){for(i=function(t){var n=new Date(e.now());return t._useUTC?[n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()]:[n.getFullYear(),n.getMonth(),n.getDate()]}(t),t._w&&null==t._a[bt]&&null==t._a[xt]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=de(t.GG,e._a[Tt],X(pe(),1,4).year),s=de(t.W,1),((i=de(t.E,1))<1||i>7)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=X(pe(),r,a);n=de(t.gg,e._a[Tt],l.year),s=de(t.w,l.week),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(u=!0)):i=r}s<1||s>K(n,r,a)?d(e)._overflowWeeks=!0:null!=u?d(e)._overflowWeekday=!0:(o=Q(n,s,i,r,a),e._a[Tt]=o.year,e._dayOfYear=o.dayOfYear)}(t),null!=t._dayOfYear&&(a=de(t._a[Tt],i[Tt]),(t._dayOfYear>V(a)||0===t._dayOfYear)&&(d(t)._overflowDayOfYear=!0),s=J(a,0,t._dayOfYear),t._a[xt]=s.getUTCMonth(),t._a[bt]=s.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=o[n]=i[n];for(;n<7;n++)t._a[n]=o[n]=null==t._a[n]?2===n?1:0:t._a[n];24===t._a[Pt]&&0===t._a[Wt]&&0===t._a[Ht]&&0===t._a[Rt]&&(t._nextDay=!0,t._a[Pt]=0),t._d=(t._useUTC?J:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&e>=0&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,o),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(d(t).weekdayMismatch=!0)}}function ce(e){var t,n,s,i,r,a,o=e._i,u=en.exec(o)||tn.exec(o);if(u){for(d(e).iso=!0,t=0,n=sn.length;t<n;t++)if(sn[t][1].exec(u[1])){i=sn[t][0],s=!1!==sn[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=rn.length;t<n;t++)if(rn[t][1].exec(u[3])){r=(u[2]||" ")+rn[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!nn.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),_e(e)}else e._isValid=!1}function fe(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Vt.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}function me(e){var t=on.exec(function(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e._i));if(t){var n=fe(t[4],t[3],t[2],t[5],t[6],t[7]);if(!function(e,t,n){if(e&&jt.indexOf(e)!==new Date(t[0],t[1],t[2]).getDay())return d(n).weekdayMismatch=!0,n._isValid=!1,!1;return!0}(t[1],n,e))return;e._a=n,e._tzm=function(e,t,n){if(e)return un[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(t[8],t[9],t[10]),e._d=J.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),d(e).rfc2822=!0}else e._isValid=!1}function _e(t){if(t._f!==e.ISO_8601)if(t._f!==e.RFC_2822){t._a=[],d(t).empty=!0;var n,s,i,r,a,o=""+t._i,u=o.length,l=0;for(i=R(t._f,t._locale).match(rt)||[],n=0;n<i.length;n++)r=i[n],(s=(o.match(F(r,t))||[])[0])&&((a=o.substr(0,o.indexOf(s))).length>0&&d(t).unusedInput.push(a),o=o.slice(o.indexOf(s)+s.length),l+=s.length),ut[r]?(s?d(t).empty=!1:d(t).unusedTokens.push(r),G(r,s,t)):t._strict&&!s&&d(t).unusedTokens.push(r);d(t).charsLeftOver=u-l,o.length>0&&d(t).unusedInput.push(o),t._a[Pt]<=12&&!0===d(t).bigHour&&t._a[Pt]>0&&(d(t).bigHour=void 0),d(t).parsedDateParts=t._a.slice(0),d(t).meridiem=t._meridiem,t._a[Pt]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}(t._locale,t._a[Pt],t._meridiem),he(t),le(t)}else me(t);else ce(t)}function ye(o){var l=o._i,y=o._f;return o._locale=o._locale||ue(o._l),null===l||void 0===y&&""===l?c({nullInput:!0}):("string"==typeof l&&(o._i=l=o._locale.preparse(l)),_(l)?new m(le(l)):(r(l)?o._d=l:t(y)?function(e){var t,n,s,i,r;if(0===e._f.length)return d(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;i<e._f.length;i++)r=0,t=f({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],_e(t),h(t)&&(r+=d(t).charsLeftOver,r+=10*d(t).unusedTokens.length,d(t).score=r,(null==s||r<s)&&(s=r,n=t));u(e,n||t)}(o):y?_e(o):function(o){var u=o._i;s(u)?o._d=new Date(e.now()):r(u)?o._d=new Date(u.valueOf()):"string"==typeof u?function(t){var n=an.exec(t._i);null===n?(ce(t),!1===t._isValid&&(delete t._isValid,me(t),!1===t._isValid&&(delete t._isValid,e.createFromInputFallback(t)))):t._d=new Date(+n[1])}(o):t(u)?(o._a=a(u.slice(0),function(e){return parseInt(e,10)}),he(o)):n(u)?function(e){if(!e._d){var t=T(e._i);e._a=a([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),he(e)}}(o):i(u)?o._d=new Date(u):e.createFromInputFallback(o)}(o),h(o)||(o._d=null),o))}function ge(e,s,i,r,a){var o={};return!0!==i&&!1!==i||(r=i,i=void 0),(n(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||t(e)&&0===e.length)&&(e=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=a,o._l=i,o._i=e,o._f=s,o._strict=r,function(e){var t=new m(le(ye(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}(o)}function pe(e,t,n,s){return ge(e,t,n,s,!1)}function we(e,n){var s,i;if(1===n.length&&t(n[0])&&(n=n[0]),!n.length)return pe();for(s=n[0],i=1;i<n.length;++i)n[i].isValid()&&!n[i][e](s)||(s=n[i]);return s}function ve(e){var t=T(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ut.call(hn,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<hn.length;++s)if(e[hn[s]]){if(n)return!1;parseFloat(e[hn[s]])!==g(e[hn[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=ue(),this._bubble()}function Me(e){return e instanceof ve}function Se(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function De(e,t){P(e,0,0,function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+b(~~(e/60),2)+t+b(~~e%60,2)})}function ke(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(cn)||["-",0,0],i=60*s[1]+g(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Ye(t,n){var s,i;return n._isUTC?(s=n.clone(),i=(_(t)||r(t)?t.valueOf():pe(t).valueOf())-s.valueOf(),s._d.setTime(s._d.valueOf()+i),e.updateOffset(s,!1),s):pe(t).local()}function Oe(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Te(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function xe(e,t){var n,s,r,a=e,u=null;return Me(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:i(e)?(a={},t?a[t]=e:a.milliseconds=e):(u=fn.exec(e))?(n="-"===u[1]?-1:1,a={y:0,d:g(u[bt])*n,h:g(u[Pt])*n,m:g(u[Wt])*n,s:g(u[Ht])*n,ms:g(Se(1e3*u[Rt]))*n}):(u=mn.exec(e))?(n="-"===u[1]?-1:(u[1],1),a={y:be(u[2],n),M:be(u[3],n),w:be(u[4],n),d:be(u[5],n),h:be(u[6],n),m:be(u[7],n),s:be(u[8],n)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(r=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Ye(t,e),e.isBefore(t)?n=Pe(e,t):((n=Pe(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(pe(a.from),pe(a.to)),(a={}).ms=r.milliseconds,a.M=r.months),s=new ve(a),Me(e)&&o(e,"_locale")&&(s._locale=e._locale),s}function be(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Pe(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function We(e,t){return function(n,s){var i,r;return null===s||isNaN(+s)||(M(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=s,s=r),n="string"==typeof n?+n:n,i=xe(n,s),He(this,i,e),this}}function He(t,n,s,i){var r=n._milliseconds,a=Se(n._days),o=Se(n._months);t.isValid()&&(i=null==i||i,o&&z(t,A(t,"Month")+o*s),a&&j(t,"Date",A(t,"Date")+a*s),r&&t._d.setTime(t._d.valueOf()+r*s),i&&e.updateOffset(t,a||o))}function Re(e,t){var n,s=12*(t.year()-e.year())+(t.month()-e.month()),i=e.clone().add(s,"months");return n=t-i<0?(t-i)/(i-e.clone().add(s-1,"months")):(t-i)/(e.clone().add(s+1,"months")-i),-(s+n)||0}function Ce(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ue(e))&&(this._locale=t),this)}function Fe(){return this._locale}function Ue(e,t){P(0,[e,e.length],0,t)}function Le(e,t,n,s,i){var r;return null==e?X(this,s,i).year:(r=K(e,s,i),t>r&&(t=r),function(e,t,n,s,i){var r=Q(e,t,n,s,i),a=J(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}function Ne(e,t){t[Rt]=g(1e3*("0."+e))}function Ge(e){return e}function Ve(e,t,n,s){var i=ue(),r=l().set(s,t);return i[n](r,e)}function Ee(e,t,n){if(i(e)&&(t=e,e=void 0),e=e||"",null!=t)return Ve(e,t,n,"month");var s,r=[];for(s=0;s<12;s++)r[s]=Ve(e,s,n,"month");return r}function Ie(e,t,n,s){"boolean"==typeof e?(i(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,i(t)&&(n=t,t=void 0),t=t||"");var r=ue(),a=e?r._week.dow:0;if(null!=n)return Ve(t,(n+a)%7,s,"day");var o,u=[];for(o=0;o<7;o++)u[o]=Ve(t,(o+a)%7,s,"day");return u}function Ae(e,t,n,s){var i=xe(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function je(e){return e<0?Math.floor(e):Math.ceil(e)}function Ze(e){return 4800*e/146097}function ze(e){return 146097*e/4800}function $e(e){return function(){return this.as(e)}}function qe(e){return function(){return this.isValid()?this._data[e]:NaN}}function Je(e){return(e>0)-(e<0)||+e}function Be(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=An(this._milliseconds)/1e3,s=An(this._days),i=An(this._months);t=y((e=y(n/60))/60),n%=60,e%=60;var r=y(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Je(this._months)!==Je(h)?"-":"",m=Je(this._days)!==Je(h)?"-":"",_=Je(this._milliseconds)!==Je(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var Qe,Xe;Xe=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var Ke=e.momentProperties=[],et=!1,tt={};e.suppressDeprecationWarnings=!1,e.deprecationHandler=null;var nt;nt=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)o(e,t)&&n.push(t);return n};var st={},it={},rt=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,at=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ot={},ut={},lt=/\d/,dt=/\d\d/,ht=/\d{3}/,ct=/\d{4}/,ft=/[+-]?\d{6}/,mt=/\d\d?/,_t=/\d\d\d\d?/,yt=/\d\d\d\d\d\d?/,gt=/\d{1,3}/,pt=/\d{1,4}/,wt=/[+-]?\d{1,6}/,vt=/\d+/,Mt=/[+-]?\d+/,St=/Z|[+-]\d\d:?\d\d/gi,Dt=/Z|[+-]\d\d(?::?\d\d)?/gi,kt=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,Yt={},Ot={},Tt=0,xt=1,bt=2,Pt=3,Wt=4,Ht=5,Rt=6,Ct=7,Ft=8;P("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),P(0,["YY",2],0,function(){return this.year()%100}),P(0,["YYYY",4],0,"year"),P(0,["YYYYY",5],0,"year"),P(0,["YYYYYY",6,!0],0,"year"),Y("year","y"),x("year",1),C("Y",Mt),C("YY",mt,dt),C("YYYY",pt,ct),C("YYYYY",wt,ft),C("YYYYYY",wt,ft),L(["YYYYY","YYYYYY"],Tt),L("YYYY",function(t,n){n[Tt]=2===t.length?e.parseTwoDigitYear(t):g(t)}),L("YY",function(t,n){n[Tt]=e.parseTwoDigitYear(t)}),L("Y",function(e,t){t[Tt]=parseInt(e,10)}),e.parseTwoDigitYear=function(e){return g(e)+(g(e)>68?1900:2e3)};var Ut,Lt=I("FullYear",!0);Ut=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},P("M",["MM",2],"Mo",function(){return this.month()+1}),P("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),P("MMMM",0,0,function(e){return this.localeData().months(this,e)}),Y("month","M"),x("month",8),C("M",mt),C("MM",mt,dt),C("MMM",function(e,t){return t.monthsShortRegex(e)}),C("MMMM",function(e,t){return t.monthsRegex(e)}),L(["M","MM"],function(e,t){t[xt]=g(e)-1}),L(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[xt]=i:d(n).invalidMonth=e});var Nt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Gt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Vt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Et=kt,It=kt;P("w",["ww",2],"wo","week"),P("W",["WW",2],"Wo","isoWeek"),Y("week","w"),Y("isoWeek","W"),x("week",5),x("isoWeek",5),C("w",mt),C("ww",mt,dt),C("W",mt),C("WW",mt,dt),N(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=g(e)});P("d",0,"do","day"),P("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),P("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),P("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),P("e",0,0,"weekday"),P("E",0,0,"isoWeekday"),Y("day","d"),Y("weekday","e"),Y("isoWeekday","E"),x("day",11),x("weekday",11),x("isoWeekday",11),C("d",mt),C("e",mt),C("E",mt),C("dd",function(e,t){return t.weekdaysMinRegex(e)}),C("ddd",function(e,t){return t.weekdaysShortRegex(e)}),C("dddd",function(e,t){return t.weekdaysRegex(e)}),N(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:d(n).invalidWeekday=e}),N(["d","e","E"],function(e,t,n,s){t[s]=g(e)});var At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),jt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Zt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=kt,$t=kt,qt=kt;P("H",["HH",2],0,"hour"),P("h",["hh",2],0,te),P("k",["kk",2],0,function(){return this.hours()||24}),P("hmm",0,0,function(){return""+te.apply(this)+b(this.minutes(),2)}),P("hmmss",0,0,function(){return""+te.apply(this)+b(this.minutes(),2)+b(this.seconds(),2)}),P("Hmm",0,0,function(){return""+this.hours()+b(this.minutes(),2)}),P("Hmmss",0,0,function(){return""+this.hours()+b(this.minutes(),2)+b(this.seconds(),2)}),ne("a",!0),ne("A",!1),Y("hour","h"),x("hour",13),C("a",se),C("A",se),C("H",mt),C("h",mt),C("k",mt),C("HH",mt,dt),C("hh",mt,dt),C("kk",mt,dt),C("hmm",_t),C("hmmss",yt),C("Hmm",_t),C("Hmmss",yt),L(["H","HH"],Pt),L(["k","kk"],function(e,t,n){var s=g(e);t[Pt]=24===s?0:s}),L(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),L(["h","hh"],function(e,t,n){t[Pt]=g(e),d(n).bigHour=!0}),L("hmm",function(e,t,n){var s=e.length-2;t[Pt]=g(e.substr(0,s)),t[Wt]=g(e.substr(s)),d(n).bigHour=!0}),L("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Pt]=g(e.substr(0,s)),t[Wt]=g(e.substr(s,2)),t[Ht]=g(e.substr(i)),d(n).bigHour=!0}),L("Hmm",function(e,t,n){var s=e.length-2;t[Pt]=g(e.substr(0,s)),t[Wt]=g(e.substr(s))}),L("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Pt]=g(e.substr(0,s)),t[Wt]=g(e.substr(s,2)),t[Ht]=g(e.substr(i))});var Jt,Bt=I("Hours",!0),Qt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Gt,monthsShort:Vt,week:{dow:0,doy:6},weekdays:At,weekdaysMin:Zt,weekdaysShort:jt,meridiemParse:/[ap]\.?m?\.?/i},Xt={},Kt={},en=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,nn=/Z|[+-]\d\d(?::?\d\d)?/,sn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],rn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],an=/^\/?Date\((\-?\d+)/i,on=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,un={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};e.createFromInputFallback=v("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),e.ISO_8601=function(){},e.RFC_2822=function(){};var ln=v("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=pe.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:c()}),dn=v("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=pe.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:c()}),hn=["year","quarter","month","week","day","hour","minute","second","millisecond"];De("Z",":"),De("ZZ",""),C("Z",Dt),C("ZZ",Dt),L(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=ke(Dt,e)});var cn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var fn=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,mn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;xe.fn=ve.prototype,xe.invalid=function(){return xe(NaN)};var _n=We(1,"add"),yn=We(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var gn=v("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});P(0,["gg",2],0,function(){return this.weekYear()%100}),P(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ue("gggg","weekYear"),Ue("ggggg","weekYear"),Ue("GGGG","isoWeekYear"),Ue("GGGGG","isoWeekYear"),Y("weekYear","gg"),Y("isoWeekYear","GG"),x("weekYear",1),x("isoWeekYear",1),C("G",Mt),C("g",Mt),C("GG",mt,dt),C("gg",mt,dt),C("GGGG",pt,ct),C("gggg",pt,ct),C("GGGGG",wt,ft),C("ggggg",wt,ft),N(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=g(e)}),N(["gg","GG"],function(t,n,s,i){n[i]=e.parseTwoDigitYear(t)}),P("Q",0,"Qo","quarter"),Y("quarter","Q"),x("quarter",7),C("Q",lt),L("Q",function(e,t){t[xt]=3*(g(e)-1)}),P("D",["DD",2],"Do","date"),Y("date","D"),x("date",9),C("D",mt),C("DD",mt,dt),C("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),L(["D","DD"],bt),L("Do",function(e,t){t[bt]=g(e.match(mt)[0])});var pn=I("Date",!0);P("DDD",["DDDD",3],"DDDo","dayOfYear"),Y("dayOfYear","DDD"),x("dayOfYear",4),C("DDD",gt),C("DDDD",ht),L(["DDD","DDDD"],function(e,t,n){n._dayOfYear=g(e)}),P("m",["mm",2],0,"minute"),Y("minute","m"),x("minute",14),C("m",mt),C("mm",mt,dt),L(["m","mm"],Wt);var wn=I("Minutes",!1);P("s",["ss",2],0,"second"),Y("second","s"),x("second",15),C("s",mt),C("ss",mt,dt),L(["s","ss"],Ht);var vn=I("Seconds",!1);P("S",0,0,function(){return~~(this.millisecond()/100)}),P(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),P(0,["SSS",3],0,"millisecond"),P(0,["SSSS",4],0,function(){return 10*this.millisecond()}),P(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),P(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),P(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),P(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),P(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),Y("millisecond","ms"),x("millisecond",16),C("S",gt,lt),C("SS",gt,dt),C("SSS",gt,ht);var Mn;for(Mn="SSSS";Mn.length<=9;Mn+="S")C(Mn,vt);for(Mn="S";Mn.length<=9;Mn+="S")L(Mn,Ne);var Sn=I("Milliseconds",!1);P("z",0,0,"zoneAbbr"),P("zz",0,0,"zoneName");var Dn=m.prototype;Dn.add=_n,Dn.calendar=function(t,n){var s=t||pe(),i=Ye(s,this).startOf("day"),r=e.calendarFormat(this,i)||"sameElse",a=n&&(S(n[r])?n[r].call(this,s):n[r]);return this.format(a||this.localeData().calendar(r,this,pe(s)))},Dn.clone=function(){return new m(this)},Dn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Ye(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=O(t)){case"year":r=Re(this,s)/12;break;case"month":r=Re(this,s);break;case"quarter":r=Re(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:y(r)},Dn.endOf=function(e){return void 0===(e=O(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},Dn.format=function(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var n=H(this,t);return this.localeData().postformat(n)},Dn.from=function(e,t){return this.isValid()&&(_(e)&&e.isValid()||pe(e).isValid())?xe({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Dn.fromNow=function(e){return this.from(pe(),e)},Dn.to=function(e,t){return this.isValid()&&(_(e)&&e.isValid()||pe(e).isValid())?xe({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Dn.toNow=function(e){return this.to(pe(),e)},Dn.get=function(e){return e=O(e),S(this[e])?this[e]():this},Dn.invalidAt=function(){return d(this).overflow},Dn.isAfter=function(e,t){var n=_(e)?e:pe(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=O(s(t)?"millisecond":t))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},Dn.isBefore=function(e,t){var n=_(e)?e:pe(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=O(s(t)?"millisecond":t))?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},Dn.isBetween=function(e,t,n,s){return("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},Dn.isSame=function(e,t){var n,s=_(e)?e:pe(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=O(t||"millisecond"))?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},Dn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},Dn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},Dn.isValid=function(){return h(this)},Dn.lang=gn,Dn.locale=Ce,Dn.localeData=Fe,Dn.max=dn,Dn.min=ln,Dn.parsingFlags=function(){return u({},d(this))},Dn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:it[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=T(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(e=O(e),S(this[e]))return this[e](t);return this},Dn.startOf=function(e){switch(e=O(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},Dn.subtract=yn,Dn.toArray=function(){return[this.year(),this.month(),this.date(),this.hour(),this.minute(),this.second(),this.millisecond()]},Dn.toObject=function(){return{years:this.year(),months:this.month(),date:this.date(),hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()}},Dn.toDate=function(){return new Date(this.valueOf())},Dn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):S(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this._d.valueOf()).toISOString().replace("Z",H(n,"Z")):H(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},Dn.toJSON=function(){return this.isValid()?this.toISOString():null},Dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Dn.unix=function(){return Math.floor(this.valueOf()/1e3)},Dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Dn.year=Lt,Dn.isLeapYear=function(){return E(this.year())},Dn.weekYear=function(e){return Le.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Dn.isoWeekYear=function(e){return Le.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},Dn.quarter=Dn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},Dn.month=$,Dn.daysInMonth=function(){return Z(this.year(),this.month())},Dn.week=Dn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},Dn.isoWeek=Dn.isoWeeks=function(e){var t=X(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},Dn.weeksInYear=function(){var e=this.localeData()._week;return K(this.year(),e.dow,e.doy)},Dn.isoWeeksInYear=function(){return K(this.year(),1,4)},Dn.date=pn,Dn.day=Dn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},Dn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},Dn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},Dn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},Dn.hour=Dn.hours=Bt,Dn.minute=Dn.minutes=wn,Dn.second=Dn.seconds=vn,Dn.millisecond=Dn.milliseconds=Sn,Dn.utcOffset=function(t,n,s){var i,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=ke(Dt,t)))return this}else Math.abs(t)<16&&!s&&(t*=60);return!this._isUTC&&n&&(i=Oe(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),r!==t&&(!n||this._changeInProgress?He(this,xe(t-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Oe(this)},Dn.utc=function(e){return this.utcOffset(0,e)},Dn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Oe(this),"m")),this},Dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=ke(St,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},Dn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?pe(e).utcOffset():0,(this.utcOffset()-e)%60==0)},Dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},Dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Dn.isUtc=Te,Dn.isUTC=Te,Dn.zoneAbbr=function(){return this._isUTC?"UTC":""},Dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Dn.dates=v("dates accessor is deprecated. Use date instead.",pn),Dn.months=v("months accessor is deprecated. Use month instead",$),Dn.years=v("years accessor is deprecated. Use year instead",Lt),Dn.zone=v("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),Dn.isDSTShifted=v("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(f(e,this),(e=ye(e))._a){var t=e._isUTC?l(e._a):pe(e._a);this._isDSTShifted=this.isValid()&&p(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var kn=k.prototype;kn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return S(s)?s.call(t,n):s},kn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},kn.invalidDate=function(){return this._invalidDate},kn.ordinal=function(e){return this._ordinal.replace("%d",e)},kn.preparse=Ge,kn.postformat=Ge,kn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return S(i)?i(e,t,n,s):i.replace(/%d/i,e)},kn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return S(n)?n(t):n.replace(/%s/i,t)},kn.set=function(e){var t,n;for(n in e)S(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},kn.months=function(e,n){return e?t(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Nt).test(n)?"format":"standalone"][e.month()]:t(this._months)?this._months:this._months.standalone},kn.monthsShort=function(e,n){return e?t(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Nt.test(n)?"format":"standalone"][e.month()]:t(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},kn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=l([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ut.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ut.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ut.call(this._shortMonthsParse,a))?i:-1!==(i=Ut.call(this._longMonthsParse,a))?i:null:-1!==(i=Ut.call(this._longMonthsParse,a))?i:-1!==(i=Ut.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=l([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},kn.monthsRegex=function(e){return this._monthsParseExact?(o(this,"_monthsRegex")||q.call(this),e?this._monthsStrictRegex:this._monthsRegex):(o(this,"_monthsRegex")||(this._monthsRegex=It),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},kn.monthsShortRegex=function(e){return this._monthsParseExact?(o(this,"_monthsRegex")||q.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(o(this,"_monthsShortRegex")||(this._monthsShortRegex=Et),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},kn.week=function(e){return X(e,this._week.dow,this._week.doy).week},kn.firstDayOfYear=function(){return this._week.doy},kn.firstDayOfWeek=function(){return this._week.dow},kn.weekdays=function(e,n){return e?t(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(n)?"format":"standalone"][e.day()]:t(this._weekdays)?this._weekdays:this._weekdays.standalone},kn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},kn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},kn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=l([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ut.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ut.call(this._weekdaysParse,a))?i:-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ut.call(this._weekdaysParse,a))?i:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:-1!==(i=Ut.call(this._weekdaysParse,a))?i:-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=l([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},kn.weekdaysRegex=function(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||ee.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(o(this,"_weekdaysRegex")||(this._weekdaysRegex=zt),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},kn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||ee.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(o(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=$t),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},kn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||ee.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(o(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},kn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},kn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},ae("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===g(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),e.lang=v("moment.lang is deprecated. Use moment.locale instead.",ae),e.langData=v("moment.langData is deprecated. Use moment.localeData instead.",ue);var Yn=Math.abs,On=$e("ms"),Tn=$e("s"),xn=$e("m"),bn=$e("h"),Pn=$e("d"),Wn=$e("w"),Hn=$e("M"),Rn=$e("y"),Cn=qe("milliseconds"),Fn=qe("seconds"),Un=qe("minutes"),Ln=qe("hours"),Nn=qe("days"),Gn=qe("months"),Vn=qe("years"),En=Math.round,In={ss:44,s:45,m:45,h:22,d:26,M:11},An=Math.abs,jn=ve.prototype;return jn.isValid=function(){return this._isValid},jn.abs=function(){var e=this._data;return this._milliseconds=Yn(this._milliseconds),this._days=Yn(this._days),this._months=Yn(this._months),e.milliseconds=Yn(e.milliseconds),e.seconds=Yn(e.seconds),e.minutes=Yn(e.minutes),e.hours=Yn(e.hours),e.months=Yn(e.months),e.years=Yn(e.years),this},jn.add=function(e,t){return Ae(this,e,t,1)},jn.subtract=function(e,t){return Ae(this,e,t,-1)},jn.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=O(e))||"year"===e)return t=this._days+s/864e5,n=this._months+Ze(t),"month"===e?n:n/12;switch(t=this._days+Math.round(ze(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},jn.asMilliseconds=On,jn.asSeconds=Tn,jn.asMinutes=xn,jn.asHours=bn,jn.asDays=Pn,jn.asWeeks=Wn,jn.asMonths=Hn,jn.asYears=Rn,jn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},jn._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*je(ze(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=y(r/1e3),u.seconds=e%60,t=y(e/60),u.minutes=t%60,n=y(t/60),u.hours=n%24,a+=y(n/24),i=y(Ze(a)),o+=i,a-=je(ze(i)),s=y(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},jn.clone=function(){return xe(this)},jn.get=function(e){return e=O(e),this.isValid()?this[e+"s"]():NaN},jn.milliseconds=Cn,jn.seconds=Fn,jn.minutes=Un,jn.hours=Ln,jn.days=Nn,jn.weeks=function(){return y(this.days()/7)},jn.months=Gn,jn.years=Vn,jn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var s=xe(e).abs(),i=En(s.as("s")),r=En(s.as("m")),a=En(s.as("h")),o=En(s.as("d")),u=En(s.as("M")),l=En(s.as("y")),d=i<=In.ss&&["s",i]||i<In.s&&["ss",i]||r<=1&&["m"]||r<In.m&&["mm",r]||a<=1&&["h"]||a<In.h&&["hh",a]||o<=1&&["d"]||o<In.d&&["dd",o]||u<=1&&["M"]||u<In.M&&["MM",u]||l<=1&&["y"]||["yy",l];return d[2]=t,d[3]=+e>0,d[4]=n,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,d)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},jn.toISOString=Be,jn.toString=Be,jn.toJSON=Be,jn.locale=Ce,jn.localeData=Fe,jn.toIsoString=v("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Be),jn.lang=gn,P("X",0,0,"unix"),P("x",0,0,"valueOf"),C("x",Mt),C("X",/[+-]?\d+(\.\d{1,3})?/),L("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),L("x",function(e,t,n){n._d=new Date(g(e))}),e.version="2.20.1",function(e){Qe=e}(pe),e.fn=Dn,e.min=function(){return we("isBefore",[].slice.call(arguments,0))},e.max=function(){return we("isAfter",[].slice.call(arguments,0))},e.now=function(){return Date.now?Date.now():+new Date},e.utc=l,e.unix=function(e){return pe(1e3*e)},e.months=function(e,t){return Ee(e,t,"months")},e.isDate=r,e.locale=ae,e.invalid=c,e.duration=xe,e.isMoment=_,e.weekdays=function(e,t,n){return Ie(e,t,n,"weekdays")},e.parseZone=function(){return pe.apply(null,arguments).parseZone()},e.localeData=ue,e.isDuration=Me,e.monthsShort=function(e,t){return Ee(e,t,"monthsShort")},e.weekdaysMin=function(e,t,n){return Ie(e,t,n,"weekdaysMin")},e.defineLocale=oe,e.updateLocale=function(e,t){if(null!=t){var n,s,i=Qt;null!=(s=re(e))&&(i=s._config),(n=new k(t=D(i,t))).parentLocale=Xt[e],Xt[e]=n,ae(e)}else null!=Xt[e]&&(null!=Xt[e].parentLocale?Xt[e]=Xt[e].parentLocale:null!=Xt[e]&&delete Xt[e]);return Xt[e]},e.locales=function(){return nt(Xt)},e.weekdaysShort=function(e,t,n){return Ie(e,t,n,"weekdaysShort")},e.normalizeUnits=O,e.relativeTimeRounding=function(e){return void 0===e?En:"function"==typeof e&&(En=e,!0)},e.relativeTimeThreshold=function(e,t){return void 0!==In[e]&&(void 0===t?In[e]:(In[e]=t,"s"===e&&(In.ss=t-1),!0))},e.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},e.prototype=Dn,e.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},e});
index f6092b8..0887550 100644 (file)
@@ -214,6 +214,7 @@ app.service('cldsModelService', ['alertService', '$http', '$q', function(alertSe
 
       })
       .error(function(data) {
+        def.resolve(data);
         alertService.alertMessage("Action Failure:" + uiAction, 2);
         //def         alertService.alertMessage("Action Successful:"+uiAction,1);
         def.reject(svcAction + " not successful");
index 38a719d..3d56725 100644 (file)
@@ -106,16 +106,99 @@ async.core.pool.size=10
 async.max.pool.size=20\r
 async.queue.capacity=500\r
 \r
-org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.properties\r
-org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties\r
-org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json\r
-org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties\r
+clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties\r
+clamp.config.files.cldsUsers=classpath:/clds/clds-users.json\r
+clamp.config.files.globalProperties=classpath:/clds/templates/globalProperties.json\r
+clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json\r
+\r
+# Properties for Clamp\r
+# DCAE request build properties\r
+#\r
+clamp.config.dcae.template=classpath:/clds/templates/dcae-template.json\r
+clamp.config.dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json\r
+clamp.config.dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json\r
+#\r
+# SDC request blueprint properties\r
+#\r
+clamp.config.sdc.template=classpath:/clds/templates/sdc-template.json\r
+clamp.config.sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json\r
+#\r
+#\r
+# General Policy request properties\r
+#\r
+clamp.config.policy.onap.name=DCAE\r
+clamp.config.policy.pdp.group=default\r
+clamp.config.policy.ms.type=MicroService\r
+clamp.config.policy.ms.policyNamePrefix=Config_MS_\r
+clamp.config.policy.op.type=BRMS_Param\r
+clamp.config.policy.op.policyNamePrefix=Config_BRMS_Param_\r
+\r
+# TCA MicroService Policy request build properties\r
+#\r
+clamp.config.tca.policyid.prefix=DCAE.Config_\r
+clamp.config.tca.policy.template=classpath:/clds/templates/tca-policy-template.json\r
+clamp.config.tca.template=classpath:/clds/templates/tca-template.json\r
+clamp.config.tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json\r
+\r
+#\r
+#\r
+# Operational Policy request build properties\r
+#\r
+clamp.config.op.policyDescription=from clds\r
+# default\r
+clamp.config.op.templateName=ClosedLoopvUSP\r
+clamp.config.op.operationTopic=APPC-CL\r
+clamp.config.op.notificationTopic=POLICY-CL-MGT\r
+clamp.config.op.controller=amsterdam\r
+clamp.config.op.policy.appc=APPC\r
+# by service: vSCP\r
+clamp.config.op.templateName.vSCP=ClosedLoopTemplate\r
+clamp.config.op.controller.vSCP=1607-f5fw\r
+clamp.config.op.eNodeB.templateName=ClosedLoopControlName\r
+clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00\r
+clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL\r
+clamp.config.op.eNodeB.controller=amsterdam\r
+clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json\r
+clamp.config.op.eNodeB.timeWindow=35\r
+clamp.config.op.eNodeB.limit=2\r
+clamp.config.op.eNodeB.period=10s\r
+#\r
+# Sdc service properties\r
+clamp.config.sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/\r
+clamp.config.sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080\r
+clamp.config.sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services\r
+clamp.config.sdc.serviceUsername=clamp\r
+clamp.config.sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981\r
+clamp.config.sdc.artifactLabel=blueprintclampcockpit\r
+clamp.config.sdc.sdcX-InstanceID=CLAMP\r
+clamp.config.sdc.artifactType=DCAE_INVENTORY_BLUEPRINT\r
+clamp.config.sdc.locationArtifactLabel=locationclampcockpit\r
+clamp.config.sdc.locationArtifactType=DCAE_INVENTORY_JSON\r
+clamp.config.sdc.InstanceID=X-ECOMP-InstanceID\r
+clamp.config.sdc.header.requestId = X-ECOMP-RequestID\r
+#\r
+#\r
+clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json\r
+clamp.config.ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json\r
+#\r
+# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request\r
+clamp.config.action.test.override=false\r
+# if action.insert.test.event is true, then insert event even if the action is set to test\r
+clamp.config.action.insert.test.event=false\r
+clamp.config.clds.service.cache.invalidate.after.seconds=120\r
+\r
+#DCAE Inventory Url Properties\r
+clamp.config.dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080\r
+\r
+#DCAE Dispatcher Url Properties\r
+clamp.config.dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080\r
+clamp.config.dcae.header.requestId = X-ECOMP-RequestID\r
 \r
 #Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case !\r
-CLDS_PERMISSION_TYPE_CL=permission-type-cl\r
-CLDS_PERMISSION_TYPE_CL_MANAGE=permission-type-cl-manage\r
-CLDS_PERMISSION_TYPE_CL_EVENT=permission-type-cl-event\r
-CLDS_PERMISSION_TYPE_FILTER_VF=permission-type-filter-vf\r
-CLDS_PERMISSION_TYPE_TEMPLATE=permission-type-template\r
+clamp.config.security.permission.type.cl=permission-type-cl\r
+clamp.config.security.permission.type.cl.manage=permission-type-cl-manage\r
+clamp.config.security.permission.type.cl.event=permission-type-cl-event\r
+clamp.config.security.permission.type.filter.vf=permission-type-filter-vf\r
+clamp.config.security.permission.type.template=permission-type-template\r
 #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties\r
-CLDS_PERMISSION_INSTANCE=dev
\ No newline at end of file
+clamp.config.security.permission.instance=dev
\ No newline at end of file
diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties
deleted file mode 100644 (file)
index 09cb5c9..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-###\r
-# ============LICENSE_START=======================================================\r
-# ONAP CLAMP\r
-# ================================================================================\r
-# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights\r
-#                             reserved.\r
-# ================================================================================\r
-# Licensed under the Apache License, Version 2.0 (the "License");\r
-# you may not use this file except in compliance with the License.\r
-# You may obtain a copy of the License at\r
-#\r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-# ============LICENSE_END============================================\r
-# ===================================================================\r
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
-###\r
-\r
-#\r
-# Poperties for CLDS\r
-#\r
-#\r
-# DCAE request build properties\r
-#\r
-dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}}\r
-dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]}\r
-dcae.deployment.template={"serviceTypeId": "???", "inputs": {"aaiEnrichmentHost": "10.0.1.1", "enableAAIEnrichment": "true", "subscriberHostName" : "10.0.11.1", "publisherHostName" : "10.0.11.1"}}\r
-#\r
-# SDC request blueprint properties\r
-#\r
-sdc.template={}\r
-sdc.decode.service_ids={}\r
-#\r
-#\r
-# General Policy request properties\r
-#\r
-policy.onap.name=DCAE\r
-policy.pdp.group=default\r
-policy.ms.type=MicroService\r
-policy.ms.policyNamePrefix=Config_MS_\r
-policy.op.type=BRMS_Param\r
-policy.op.policyNamePrefix=Config_BRMS_Param_\r
-\r
-# TCA MicroService Policy request build properties\r
-#\r
-tca.policyid.prefix=DCAE.Config_\r
-tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}}\r
-tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}\r
-tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}\r
-\r
-#\r
-#\r
-# Operational Policy request build properties\r
-#\r
-op.policyDescription=from clds\r
-# default\r
-op.templateName=ClosedLoopvUSP\r
-op.operationTopic=APPC-CL\r
-op.notificationTopic=POLICY-CL-MGT\r
-op.controller=amsterdam\r
-op.policy.appc=APPC\r
-# by service: vSCP\r
-op.templateName.vSCP=ClosedLoopTemplate\r
-op.controller.vSCP=1607-f5fw\r
-op.eNodeB.templateName=ClosedLoopControlName\r
-op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00\r
-op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL\r
-op.eNodeB.controller=amsterdam\r
-op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]}\r
-op.eNodeB.timeWindow=35\r
-op.eNodeB.limit=2\r
-op.eNodeB.period=10s\r
-#\r
-# Sdc service properties\r
-sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/
-sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080
-sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services
-sdc.serviceUsername=clamp\r
-sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981\r
-sdc.artifactLabel=blueprintclampcockpit\r
-sdc.sdcX-InstanceID=CLAMP\r
-sdc.artifactType=DCAE_INVENTORY_BLUEPRINT\r
-sdc.locationArtifactLabel=locationclampcockpit\r
-sdc.locationArtifactType=DCAE_INVENTORY_JSON\r
-sdc.InstanceID=X-ECOMP-InstanceID\r
-sdc.header.requestId = X-ECOMP-RequestID\r
-#\r
-#\r
-ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"}\r
-ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE-<OAME-hostname> IS NOT ACTIVE ":"vCCF-vDB: OAM NODE-<OAME-hostname> IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper:  jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []","Service Assurance Server <IP address> cannot be contacted":"vMVM: Service Assurance Server <IP address> cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings.  MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings.  MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"}\r
-#\r
-# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request\r
-action.test.override=false\r
-# if action.insert.test.event is true, then insert event even if the action is set to test\r
-action.insert.test.event=false\r
-clds.service.cache.invalidate.after.seconds=120\r
-\r
-#DCAE Inventory Url Properties\r
-DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080
-\r
-#DCAE Dispatcher Url Properties\r
-DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080\r
-dcae.header.requestId = X-ECOMP-RequestID
diff --git a/src/main/resources/clds/globalClds.properties b/src/main/resources/clds/globalClds.properties
deleted file mode 100644 (file)
index e83fa6c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-###\r
-# ============LICENSE_START=======================================================\r
-# ONAP CLAMP\r
-# ================================================================================\r
-# Copyright (C) 2017 AT&T Intellectual Property. All rights\r
-#                             reserved.\r
-# ================================================================================\r
-# Licensed under the Apache License, Version 2.0 (the "License"); \r
-# you may not use this file except in compliance with the License. \r
-# You may obtain a copy of the License at\r
-# \r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-# \r
-# Unless required by applicable law or agreed to in writing, software \r
-# distributed under the License is distributed on an "AS IS" BASIS, \r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \r
-# See the License for the specific language governing permissions and \r
-# limitations under the License.\r
-# ============LICENSE_END============================================\r
-# ===================================================================\r
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
-###\r
-\r
-globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","eventName":{"vCPEvGMUXPacketLoss":"vCPEvGMUXPacketLoss","vLoadBalancer":"vLoadBalancer","vFirewallBroadcastPackets":"vFirewallBroadcastPackets"},"fieldPathM":{"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated":"receivedBroadcastPacketsAccumulated","$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta":"receivedDiscardedPacketsDelta"},"operator":{">":"GREATER",">=":"GREATER_OR_EQUAL","=":"EQUAL","<=":"LESS_OR_EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"},"controlLoopSchemaType":{"":"","VM":"VM","VNF":"VNF"},"closedLoopEventStatus":{"":"","ONSET":"ONSET","ABATED":"ABATED"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}}
diff --git a/src/main/resources/clds/sdc-controllers-config.json b/src/main/resources/clds/sdc-controllers-config.json
new file mode 100644 (file)
index 0000000..df73a50
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "sdc-connections":{
+    "sdc-controller1":{
+        "user": "User1",
+        "consumerGroup": "consumerGroup1",
+        "consumerId": "consumerId1",
+        "environmentName": "environmentName1",
+        "sdcAddress": "hostname1",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30
+        
+    },
+     "sdc-controller2":{
+        "user": "User2",
+        "consumerGroup": "consumerGroup2",
+        "consumerId": "consumerId2",
+        "environmentName": "environmentName2",
+        "sdcAddress": "hostname2",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30
+        
+    }
+  }
+}
diff --git a/src/main/resources/clds/templates/dcae-decode-service_ids.json b/src/main/resources/clds/templates/dcae-decode-service_ids.json
new file mode 100644 (file)
index 0000000..619cac6
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "vUSP": [
+               "vUSP - vCTS"
+       ],
+       "Trinity": [
+               "ASBGv TLS VNF",
+               "ASBGv No TLS",
+               "ASBGv (NO TLS) VNF",
+               "ASBGv TLS",
+               "NSBGv VNF",
+               "NSBGv"
+       ],
+       "vSCP": [
+               "AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1",
+               "ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"
+       ],
+       "vProbes": [
+               "vProbes - FW"
+       ]
+}
diff --git a/src/main/resources/clds/templates/dcae-deployment-template.json b/src/main/resources/clds/templates/dcae-deployment-template.json
new file mode 100644 (file)
index 0000000..d489174
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "serviceTypeId": "???",
+       "inputs": {
+               "aaiEnrichmentHost": "10.0.1.1",
+               "enableAAIEnrichment": "true",
+               "subscriberHostName": "10.0.11.1",
+               "publisherHostName": "10.0.11.1"
+       }
+}
diff --git a/src/main/resources/clds/templates/dcae-template.json b/src/main/resources/clds/templates/dcae-template.json
new file mode 100644 (file)
index 0000000..b7cfb23
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "properties": {
+               "service_name": "",
+               "service_ids": [
+               ],
+               "vnf_ids": [
+               ],
+               "location_ids": [
+               ]
+       },
+       "template": {
+               "tca": {
+                       "dcae": {
+                               "inputTopic": "",
+                               "outputTopic": "",
+                               "closedLoopControlName": "",
+                               "closedLoopEventClient": "configuration.dcae.microservice.tca.xml",
+                               "policyName": "",
+                               "policyScope": "service=vSCP;resource=F5;type=configuration",
+                               "policyVersion": "v0.0.1",
+                               "serviceConfigurations": {
+                               }
+                       }
+               }
+       }
+}
diff --git a/src/main/resources/clds/templates/globalProperties.json b/src/main/resources/clds/templates/globalProperties.json
new file mode 100644 (file)
index 0000000..9ac9d94
--- /dev/null
@@ -0,0 +1,105 @@
+{
+       "tca": {
+               "tname": "New_Set",
+               "tcaInt": "1",
+               "tcaVio": "1",
+               "eventName": {
+                       "vCPEvGMUXPacketLoss": "vCPEvGMUXPacketLoss",
+                       "vLoadBalancer": "vLoadBalancer",
+                       "vFirewallBroadcastPackets": "vFirewallBroadcastPackets"
+               },
+               "fieldPathM": {
+                       "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated": "receivedBroadcastPacketsAccumulated",
+                       "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta": "receivedDiscardedPacketsDelta"
+               },
+               "operator": {
+                       ">": "GREATER",
+                       ">=": "GREATER_OR_EQUAL",
+                       "=": "EQUAL",
+                       "<=": "LESS_OR_EQUAL",
+                       "<": "LESS"
+               },
+               "opsPolicy": {
+                       "POLICY_test_X": "POLICY_test_X",
+                       "POLICY_test_Y": "POLICY_test_Y"
+               },
+               "controlLoopSchemaType": {
+                       "": "",
+                       "VM": "VM",
+                       "VNF": "VNF"
+               },
+               "closedLoopEventStatus": {
+                       "": "",
+                       "ONSET": "ONSET",
+                       "ABATED": "ABATED"
+               }
+       },
+       "global": {
+               "actionSet": {
+                       "vnfRecipe": "VNF",
+                       "enbRecipe": "eNodeB"
+               },
+               "location": {
+                       "DC1": "Data Center 1",
+                       "DC2": "Data Center 2",
+                       "DC3": "Data Center 3"
+               }
+       },
+       "policy": {
+               "pname": "0",
+               "timeout": 345,
+               "vnfRecipe": {
+                       "": "",
+                       "restart": "Restart",
+                       "rebuild": "Rebuild",
+                       "migrate": "Migrate",
+                       "healthCheck": "Health Check"
+               },
+               "enbRecipe": {
+                       "": "",
+                       "reset": "Reset"
+               },
+               "maxRetries": "3",
+               "retryTimeLimit": 180,
+               "resource": {
+                       "vCTS": "vCTS",
+                       "v3CDB": "v3CDB",
+                       "vUDR": "vUDR",
+                       "vCOM": "vCOM",
+                       "vRAR": "vRAR",
+                       "vLCS": "vLCS",
+                       "vUDR-BE": "vUDR-BE",
+                       "vDBE": "vDBE"
+               },
+               "parentPolicyConditions": {
+                       "Failure_Retries": "Failure: Max Retries Exceeded",
+                       "Failure_Timeout": "Failure: Time Limit Exceeded",
+                       "Failure_Guard": "Failure: Guard",
+                       "Failure_Exception": "Failure: Exception",
+                       "Failure": "Failure: Other",
+                       "Success": "Success"
+               }
+       },
+       "shared": {
+               "byService": {
+                       "": {
+                               "vf": {
+                                       "": ""
+                               },
+                               "location": {
+                                       "": ""
+                               },
+                               "alarmCondition": {
+                                       "": ""
+                               }
+                       }
+               },
+               "byVf": {
+                       "": {
+                               "vfc": {
+                                       "": ""
+                               }
+                       }
+               }
+       }
+}
diff --git a/src/main/resources/clds/templates/op-eNodeB-recipe.json b/src/main/resources/clds/templates/op-eNodeB-recipe.json
new file mode 100644 (file)
index 0000000..7098987
--- /dev/null
@@ -0,0 +1,44 @@
+{
+       "eNodeBRecipes": [
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkENodeBTicketHours",
+                       "ParentPolicy": "",
+                       "PPConditions": "",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkEquipmentStatus",
+                       "ParentPolicy": "checkENodeBTicketHours",
+                       "PPConditions": "Success",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkEimStatus",
+                       "ParentPolicy": "checkEquipmentStatus",
+                       "PPConditions": "Success",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkMaintenanceWindow",
+                       "ParentPolicy": "checkEimStatus",
+                       "PPConditions": "Success",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "SDNR",
+                       "Recipe": "Reset",
+                       "ParentPolicy": "checkMaintenanceWindow",
+                       "PPConditions": "Success",
+                       "Retry": "",
+                       "TimeLimit": ""
+               }
+       ]
+}
diff --git a/src/main/resources/clds/templates/sdc-decode-service_ids.json b/src/main/resources/clds/templates/sdc-decode-service_ids.json
new file mode 100644 (file)
index 0000000..9e26dfe
--- /dev/null
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/main/resources/clds/templates/sdc-template.json b/src/main/resources/clds/templates/sdc-template.json
new file mode 100644 (file)
index 0000000..9e26dfe
--- /dev/null
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/main/resources/clds/templates/tca-policy-template.json b/src/main/resources/clds/templates/tca-policy-template.json
new file mode 100644 (file)
index 0000000..eca4d46
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "service": "tca_policy",
+       "version": "1.0.0",
+       "location": "SampleServiceLocation",
+       "configName": "SampleConfigName",
+       "uuid": "test",
+       "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+       "templateVersion": "OpenSource.version.1",
+       "policyName": "MicroServicevCPE",
+       "description": "MicroService Policy",
+       "priority": "1",
+       "riskType": "SampleRiskType",
+       "riskLevel": "1",
+       "guard": "False",
+       "content": {
+               "tca_policy": {
+               }
+       }
+}
diff --git a/src/main/resources/clds/templates/tca-template.json b/src/main/resources/clds/templates/tca-template.json
new file mode 100644 (file)
index 0000000..892fc0d
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "domain": "measurementsForVfScaling",
+       "metricsPerEventName": [
+               {
+                       "eventName": "???",
+                       "controlLoopSchemaType": "VNF",
+                       "policyScope": "DCAE",
+                       "policyName": "???",
+                       "policyVersion": "v0.0.1",
+                       "thresholds": [
+                       ]
+               }
+       ]
+}
diff --git a/src/main/resources/clds/templates/tca-thresholds-template.json b/src/main/resources/clds/templates/tca-thresholds-template.json
new file mode 100644 (file)
index 0000000..b67e963
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "closedLoopControlName": "???",
+       "version": "1.0.2",
+       "fieldPath": "?????",
+       "thresholdValue": 0,
+       "direction": "???",
+       "severity": "MAJOR",
+       "closedLoopEventStatus": "???"
+}
diff --git a/src/main/resources/clds/templates/ui-alarm-default.json b/src/main/resources/clds/templates/ui-alarm-default.json
new file mode 100644 (file)
index 0000000..0d08359
--- /dev/null
@@ -0,0 +1,597 @@
+{
+       "Reports a transient alarm condition when an incoming CDR cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully",
+       "Reports a transient alarm condition when a CDR validation fails": "vCCF: Reports a transient alarm condition when a CDR validation fails",
+       "Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session": "vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session",
+       "Reports a transient alarm condition when an outgoing Ro message send fails": "vCCF: Reports a transient alarm condition when an outgoing Ro message send fails",
+       "Reports a transient alarm condition when an outgoing GTP' message send fails": "vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails",
+       "Reports a transient alarm condition when an outgoing Sh/Dh message send fails": "vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails",
+       "Reports an alarm when build or send Rf message fail": "vCCF: Reports an alarm when build or send Rf message fail",
+       "Reports a transient alarm condition when an abnormal incoming CCA message": "vCCF: Reports a transient alarm condition when an abnormal incoming CCA message",
+       "Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message": "vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message",
+       "For Rf interface, if IeCCF receives a message with incorrect value for session id.": "vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.",
+       "Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold",
+       "Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold": "vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold",
+       "Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold": "vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold",
+       "Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold",
+       "Reports an alarm when external DB usage exceeds the major threshold": "vCCF: Reports an alarm when external DB usage exceeds the major threshold",
+       "Reports a transient alarm condition when the workflow definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly",
+       "Reports a transient alarm condition when the Action Definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly",
+       "Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly",
+       "Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly",
+       "Reports a transient alarm condition when a specific dictionary or rule does not exist": "vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist",
+       "Reports a transient alarm condition when failure occurs when mapping Rf message to XDR": "vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR",
+       "Reports a transient alarm condition when failure occurs in aggregating process": "vCCF: Reports a transient alarm condition when failure occurs in aggregating process",
+       "Reports a transient alarm condition when failure happens in correlating process": "vCCF: Reports a transient alarm condition when failure happens in correlating process",
+       "Reports a transient alarm condition when failure occurs in generating CDR": "vCCF: Reports a transient alarm condition when failure occurs in generating CDR",
+       "Reports a transient alarm condition when failure occurs in constructing CCR message from XDR": "vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR",
+       "Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file": "vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file",
+       "Reports an alarm condition when aggregation or correlation central database connection is lost": "vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost",
+       "Reports an alarm condition when a specific failure happens in database operations": "vCCF: Reports an alarm condition when a specific failure happens in database operations",
+       "Reports an alarm condition when DB capacity has been consumed to critical threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold",
+       "Reports an alarm condition when DB capacity has been consumed to major threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold",
+       "Reports an alarm condition when DB capacity has been consumed to minor threshold.": "vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.",
+       "Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem": "vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem",
+       "Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further",
+       "Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further",
+       "Reports an alarm condition when the ACR file loses some ACR records": "vCCF: Reports an alarm condition when the ACR file loses some ACR records",
+       "Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further",
+       "Reports an alarm condition when error occurs in processing CDR/ACR files": "vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files",
+       "Reports an alarm condition when CDR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold",
+       "Reports an alarm condition when CDR partition has been consumed to major threshold.": "vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.",
+       "Reports an alarm condition when CDR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold",
+       "Reports an alarm condition when ACR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold",
+       "Reports an alarm condition when ACR partition has been consumed to major threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold",
+       "Reports an alarm condition when ACR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold",
+       "Reports an alarm condition when CPU consumption reaches critical threshold": "vCCF: Reports an alarm condition when CPU consumption reaches critical threshold",
+       "Reports an alarm condition when CPU consumption reaches major threshold": "vCCF: Reports an alarm condition when CPU consumption reaches major threshold",
+       "Reports an alarm condition when CPU consumption reaches minor threshold": "vCCF: Reports an alarm condition when CPU consumption reaches minor threshold",
+       "Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.": "vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.",
+       "CDR size exceed the platform capacity.": "vCCF: CDR size exceed the platform capacity.",
+       "Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.",
+       "Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.",
+       "External Node of this Cluster is overload": "vCCF: External Node of this Cluster is overload",
+       "bdb_high_latency": "vCCF-vDB: bdb_high_latency",
+       "bdb_high_throughput": "vCCF-vDB: bdb_high_throughput",
+       "bdb_size": "vCCF-vDB: bdb_size",
+       "cluster_inconsistent_rl_sw": "vCCF-vDB: cluster_inconsistent_rl_sw",
+       "cluster_node_remove_abort_failed": "vCCF-vDB: cluster_node_remove_abort_failed",
+       "cluster_node_remove_failed": "vCCF-vDB: cluster_node_remove_failed",
+       "cluster_ram_overcommit": "vCCF-vDB: cluster_ram_overcommit",
+       "cluster_rebalance_failed": "vCCF-vDB: cluster_rebalance_failed",
+       "cluster_too_few_nodes_for_replication": "vCCF-vDB: cluster_too_few_nodes_for_replication",
+       "node_cpu_utilization": "vCCF-vDB: node_cpu_utilization",
+       "node_ephemeral_storage": "vCCF-vDB: node_ephemeral_storage",
+       "node_failed": "vCCF-vDB: node_failed",
+       "node_memory": "vCCF-vDB: node_memory",
+       "node_net_throughput": "vCCF-vDB: node_net_throughput",
+       "node_offline_failed": "vCCF-vDB: node_offline_failed",
+       "node_offline_abort_failed": "vCCF-vDB: node_offline_abort_failed",
+       "node_online_failed": "vCCF-vDB: node_online_failed",
+       "OAM NODE-<OAME-hostname> IS NOT ACTIVE ": "vCCF-vDB: OAM NODE-<OAME-hostname> IS NOT ACTIVE ",
+       "LSS_asdaCommunicationFailure": "vCTS: LSS_asdaCommunicationFailure",
+       "LSS_ccdbCommunicationFailure": "vCTS: LSS_ccdbCommunicationFailure",
+       "LSS_cpiCTS3xxFailRate": "vCTS: LSS_cpiCTS3xxFailRate",
+       "LSS_cpiCTS4xxFailRate": "vCTS: LSS_cpiCTS4xxFailRate",
+       "LSS_cpiCTS5xxFailRate": "vCTS: LSS_cpiCTS5xxFailRate",
+       "LSS_cpiCTS6xxFailRate": "vCTS: LSS_cpiCTS6xxFailRate",
+       "LSS_cpiCTSSIPRetransmitInvite": "vCTS: LSS_cpiCTSSIPRetransmitInvite",
+       "LSS_cpiCTSSIPRetransmitNonInvite": "vCTS: LSS_cpiCTSSIPRetransmitNonInvite",
+       "LSS_glsInvalidCellId": "vCTS: LSS_glsInvalidCellId",
+       "LSS_glsServerUnavailable": "vCTS: LSS_glsServerUnavailable",
+       "LSS_hlrSyncConnection": "vCTS: LSS_hlrSyncConnection",
+       "LSS_hlrSyncQueue": "vCTS: LSS_hlrSyncQueue",
+       "LSS_lispBufferFullExternalLIG": "vCTS: LSS_lispBufferFullExternalLIG",
+       "LSS_prdbConnectWithAlternateFailure": "vCTS: LSS_prdbConnectWithAlternateFailure",
+       "LSS_prdbSyncDataToAlternateFailure": "vCTS: LSS_prdbSyncDataToAlternateFailure",
+       "LSS_preAllocatedResourceOverload": "vCTS: LSS_preAllocatedResourceOverload",
+       "LSS_prifSocketError": "vCTS: LSS_prifSocketError",
+       "LSS_prsCallInstanceExceeded": "vCTS: LSS_prsCallInstanceExceeded",
+       "LSS_prsCpuOverload": "vCTS: LSS_prsCpuOverload",
+       "LSS_prsDatabaseMigrationFailure": "vCTS: LSS_prsDatabaseMigrationFailure",
+       "LSS_prsFailureToConnectWithPRDB": "vCTS: LSS_prsFailureToConnectWithPRDB",
+       "LSS_prsQueueExceeded": "vCTS: LSS_prsQueueExceeded",
+       "LSS_smdiSocketError": "vCTS: LSS_smdiSocketError",
+       "LSS_socketError": "vCTS: LSS_socketError",
+       "LSS_softwareComponentDown": "vCTS: LSS_softwareComponentDown",
+       "LSS_tlsInitError": "vCTS: LSS_tlsInitError",
+       "LSS_usageOfSyncTable": "vCTS: LSS_usageOfSyncTable",
+       "LSS_utHttpProxyConnectionDown ": "vCTS: LSS_utHttpProxyConnectionDown ",
+       "LSS_wpifSocketError": "vCTS: LSS_wpifSocketError",
+       "LSS_acrTemporaryBufferOverload": "vCTS: LSS_acrTemporaryBufferOverload",
+       "LSS_adnsExtendedTTLcaching": "vCTS: LSS_adnsExtendedTTLcaching",
+       "LSS_adnsQueryFailureCaching": "vCTS: LSS_adnsQueryFailureCaching",
+       "LSS_adnsQueueCongestion": "vCTS: LSS_adnsQueueCongestion",
+       "LSS_asdaRequestQueue": "vCTS: LSS_asdaRequestQueue",
+       "LSS_capacityLicenseKeyExpiration": "vCTS: LSS_capacityLicenseKeyExpiration",
+       "LSS_capacityLicenseKeyNearExpiration": "vCTS: LSS_capacityLicenseKeyNearExpiration",
+       "LSS_capacityLicenseKeyValidationError": "vCTS: LSS_capacityLicenseKeyValidationError",
+       "LSS_cardConnectionLost": "vCTS: LSS_cardConnectionLost",
+       "LSS_cpiAlrmCritical": "vCTS: LSS_cpiAlrmCritical",
+       "LSS_cpiAlrmMajor": "vCTS: LSS_cpiAlrmMajor",
+       "LSS_cpiAlrmMinor": "vCTS: LSS_cpiAlrmMinor",
+       "LSS_cpiAlrmWarning": "vCTS: LSS_cpiAlrmWarning",
+       "LSS_cpiAsrtEsc": "vCTS: LSS_cpiAsrtEsc",
+       "LSS_cpiAsrtNonEsc": "vCTS: LSS_cpiAsrtNonEsc",
+       "LSS_cpiAsrtNonEscCritical": "vCTS: LSS_cpiAsrtNonEscCritical",
+       "LSS_cpiAsrtNonEscMajor": "vCTS: LSS_cpiAsrtNonEscMajor",
+       "LSS_cpiAsrtNonEscMinor": "vCTS: LSS_cpiAsrtNonEscMinor",
+       "LSS_cpiAudErrCount": "vCTS: LSS_cpiAudErrCount",
+       "LSS_cpiAudManAct": "vCTS: LSS_cpiAudManAct",
+       "LSS_cpiAudNewEvent": "vCTS: LSS_cpiAudNewEvent",
+       "LSS_cpiCompleteRateAlarm": "vCTS: LSS_cpiCompleteRateAlarm",
+       "LSS_cpiDropMGAllocConnReq": "vCTS: LSS_cpiDropMGAllocConnReq",
+       "LSS_cpiDropRateAlarm": "vCTS: LSS_cpiDropRateAlarm",
+       "LSS_cpiExceptionService": "vCTS: LSS_cpiExceptionService",
+       "LSS_cpiFailRateAlarm": "vCTS: LSS_cpiFailRateAlarm",
+       "LSS_cpiFailSCTPFastRetransIncr": "vCTS: LSS_cpiFailSCTPFastRetransIncr",
+       "LSS_cpiFailSCTPFastRetransRate": "vCTS: LSS_cpiFailSCTPFastRetransRate",
+       "LSS_cpiFailSCTPSRTT1Incr": "vCTS: LSS_cpiFailSCTPSRTT1Incr",
+       "LSS_cpiFailSCTPSRTT2Incr": "vCTS: LSS_cpiFailSCTPSRTT2Incr",
+       "LSS_cpiFailSCTPT3RetransIncr": "vCTS: LSS_cpiFailSCTPT3RetransIncr",
+       "LSS_cpiFailSCTPT3RetransRate": "vCTS: LSS_cpiFailSCTPT3RetransRate",
+       "LSS_cpiFileSysUsage": "vCTS: LSS_cpiFileSysUsage",
+       "LSS_cpiMemAllocFail": "vCTS: LSS_cpiMemAllocFail",
+       "LSS_cpiNumOfLICDRDel": "vCTS: LSS_cpiNumOfLICDRDel",
+       "LSS_cpiReinitServiceSelf": "vCTS: LSS_cpiReinitServiceSelf",
+       "LSS_cpiSIPRetransmitInvite": "vCTS: LSS_cpiSIPRetransmitInvite",
+       "LSS_cpiSIPRetransmitNonInvite": "vCTS: LSS_cpiSIPRetransmitNonInvite",
+       "LSS_cpiSS7DropSCTPPktsRcvd": "vCTS: LSS_cpiSS7DropSCTPPktsRcvd",
+       "LSS_cpiSS7FailSCTPFastRetransRate": "vCTS: LSS_cpiSS7FailSCTPFastRetransRate",
+       "LSS_cpiStabilityAlarm": "vCTS: LSS_cpiStabilityAlarm",
+       "LSS_cpuOverload": "vCTS: LSS_cpuOverload",
+       "LSS_databaseConnectionLost": "vCTS: LSS_databaseConnectionLost",
+       "LSS_databaseReplicationLinkDown": "vCTS: LSS_databaseReplicationLinkDown",
+       "LSS_databaseSizeExhausted": "vCTS: LSS_databaseSizeExhausted",
+       "LSS_dbHighCpuUtilization": "vCTS: LSS_dbHighCpuUtilization",
+       "LSS_dbOffline": "vCTS: LSS_dbOffline",
+       "LSS_dbStatusUnexpected": "vCTS: LSS_dbStatusUnexpected",
+       "LSS_degradedResource": "vCTS: LSS_degradedResource",
+       "LSS_degrow": "vCTS: LSS_degrow",
+       "LSS_deviceServerCxnLost": "vCTS: LSS_deviceServerCxnLost",
+       "LSS_diamLinkDown": "vCTS: LSS_diamLinkDown",
+       "LSS_diamMaxClientsExceeded": "vCTS: LSS_diamMaxClientsExceeded",
+       "LSS_dnsThreshold": "vCTS: LSS_dnsThreshold",
+       "LSS_ethernetError": "vCTS: LSS_ethernetError",
+       "LSS_ethernetLinkDown": "vCTS: LSS_ethernetLinkDown",
+       "LSS_externalConnectivity": "vCTS: LSS_externalConnectivity",
+       "LSS_featureLicenseExpiration": "vCTS: LSS_featureLicenseExpiration",
+       "LSS_featureLicenseKeyNearExpiration": "vCTS: LSS_featureLicenseKeyNearExpiration",
+       "LSS_featureLockValidationError": "vCTS: LSS_featureLockValidationError",
+       "LSS_fqdnError": "vCTS: LSS_fqdnError",
+       "LSS_fru": "vCTS: LSS_fru",
+       "LSS_gatewayCongestion": "vCTS: LSS_gatewayCongestion",
+       "LSS_gatewayForcedOOS": "vCTS: LSS_gatewayForcedOOS",
+       "LSS_gatewayProvisioningError": "vCTS: LSS_gatewayProvisioningError",
+       "LSS_gatewayUnreachable": "vCTS: LSS_gatewayUnreachable",
+       "LSS_gatewayUnregistered": "vCTS: LSS_gatewayUnregistered",
+       "LSS_globalParameterNotFound": "vCTS: LSS_globalParameterNotFound",
+       "LSS_grow": "vCTS: LSS_grow",
+       "LSS_h248MessageBufferDepletion": "vCTS: LSS_h248MessageBufferDepletion",
+       "LSS_hostDown": "vCTS: LSS_hostDown",
+       "LSS_hostReset": "vCTS: LSS_hostReset",
+       "LSS_invalidGateway": "vCTS: LSS_invalidGateway",
+       "LSS_iriLinkDown": "vCTS: LSS_iriLinkDown",
+       "LSS_ldapServerConnectionLost": "vCTS: LSS_ldapServerConnectionLost",
+       "LSS_llcDown": "vCTS: LSS_llcDown",
+       "LSS_logicalLinkDown": "vCTS: LSS_logicalLinkDown",
+       "LSS_logicalLinkNotFound": "vCTS: LSS_logicalLinkNotFound",
+       "LSS_logRotateThreshold": "vCTS: LSS_logRotateThreshold",
+       "LSS_memoryOverload": "vCTS: LSS_memoryOverload",
+       "LSS_nodeConfigFailure": "vCTS: LSS_nodeConfigFailure",
+       "LSS_nodeGroupOOS": "vCTS: LSS_nodeGroupOOS",
+       "LSS_nodeOOS": "vCTS: LSS_nodeOOS",
+       "LSS_nonCompliantFaultGroupMemberState": "vCTS: LSS_nonCompliantFaultGroupMemberState",
+       "LSS_nonCsAddrChannelDepletion": "vCTS: LSS_nonCsAddrChannelDepletion",
+       "LSS_numberOfTuplesInUse": "vCTS: LSS_numberOfTuplesInUse",
+       "LSS_osSecInfoModificationDetected": "vCTS: LSS_osSecInfoModificationDetected",
+       "LSS_osSecInformationMissing": "vCTS: LSS_osSecInformationMissing",
+       "LSS_osSecUnexpectedInformation": "vCTS: LSS_osSecUnexpectedInformation",
+       "LSS_pdnsMySqlReplication": "vCTS: LSS_pdnsMySqlReplication",
+       "LSS_pktCorruptionDetectedViaRCCLANCheck": "vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck",
+       "LSS_platformCommandFailure": "vCTS: LSS_platformCommandFailure",
+       "LSS_pmDataNotCollected": "vCTS: LSS_pmDataNotCollected",
+       "LSS_processDown": "vCTS: LSS_processDown",
+       "LSS_processNotStarted": "vCTS: LSS_processNotStarted",
+       "LSS_provisioningInhibitedMode": "vCTS: LSS_provisioningInhibitedMode",
+       "LSS_rccInhibitedMode": "vCTS: LSS_rccInhibitedMode",
+       "LSS_remotedbLinkDown": "vCTS: LSS_remotedbLinkDown",
+       "LSS_remoteQueryServerFailure": "vCTS: LSS_remoteQueryServerFailure",
+       "LSS_restore": "vCTS: LSS_restore",
+       "LSS_serviceCFGDataTimestampError": "vCTS: LSS_serviceCFGDataTimestampError",
+       "LSS_serviceCommCxnLost": "vCTS: LSS_serviceCommCxnLost",
+       "LSS_serviceOnewayCommunication": "vCTS: LSS_serviceOnewayCommunication",
+       "LSS_sheddingOverload": "vCTS: LSS_sheddingOverload",
+       "LSS_simxml": "vCTS: LSS_simxml",
+       "LSS_sipLinkSetMaxQuarantineList": "vCTS: LSS_sipLinkSetMaxQuarantineList",
+       "LSS_sipLinkSetUnavailable": "vCTS: LSS_sipLinkSetUnavailable",
+       "LSS_sipLinkUnavailable": "vCTS: LSS_sipLinkUnavailable",
+       "LSS_softwareAllocatedResourceOverload": "vCTS: LSS_softwareAllocatedResourceOverload",
+       "LSS_softwareComponentStandbyNotReady": "vCTS: LSS_softwareComponentStandbyNotReady",
+       "LSS_softwareLicense": "vCTS: LSS_softwareLicense",
+       "LSS_svcdegrow": "vCTS: LSS_svcdegrow",
+       "LSS_svcgrow": "vCTS: LSS_svcgrow",
+       "LSS_swVersionMismatch": "vCTS: LSS_swVersionMismatch",
+       "LSS_tftpDownloadCorrupt": "vCTS: LSS_tftpDownloadCorrupt",
+       "LSS_timeStampValueOutOfSystemRange": "vCTS: LSS_timeStampValueOutOfSystemRange",
+       "LSS_transactionHandlerBlockDepletion": "vCTS: LSS_transactionHandlerBlockDepletion",
+       "LSS_upgrade": "vCTS: LSS_upgrade",
+       "SYS_BackupFailure": "vCTS: SYS_BackupFailure",
+       "SYS_Configuration": "vCTS: SYS_Configuration",
+       "SYS_COTRecordTransferFailure": "vCTS: SYS_COTRecordTransferFailure",
+       "SYS_CPM_USERDATA_INCONSITENCY": "vCTS: SYS_CPM_USERDATA_INCONSITENCY",
+       "SYS_CPM_USERDATA_RESTORED": "vCTS: SYS_CPM_USERDATA_RESTORED",
+       "SYS_EventQueueCapacity": "vCTS: SYS_EventQueueCapacity",
+       "SYS_ICMPFailure": "vCTS: SYS_ICMPFailure",
+       "SYS_IPsecConfig": "vCTS: SYS_IPsecConfig",
+       "SYS_LinkDown": "vCTS: SYS_LinkDown",
+       "SYS_NotifyDisabled": "vCTS: SYS_NotifyDisabled",
+       "SYS_NotifyLocked": "vCTS: SYS_NotifyLocked",
+       "SYS_NumTL1MeasThresh": "vCTS: SYS_NumTL1MeasThresh",
+       "SYS_RADIUS_TO_LDAP_FAILURE": "vCTS: SYS_RADIUS_TO_LDAP_FAILURE",
+       "SYS_ROOT_ACCESS_DENIED": "vCTS: SYS_ROOT_ACCESS_DENIED",
+       "SYS_ROOT_FTP_VIOLATION": "vCTS: SYS_ROOT_FTP_VIOLATION",
+       "SYS_ROOT_LOGIN_VIOLATION": "vCTS: SYS_ROOT_LOGIN_VIOLATION",
+       "SYS_ROOT_SSH_LOGIN_VIOLATION": "vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION",
+       "SYS_SetupAAAFailure": "vCTS: SYS_SetupAAAFailure",
+       "SYS_SNETrapOverload": "vCTS: SYS_SNETrapOverload",
+       "SYS_SNMPAuthenticationFailure": "vCTS: SYS_SNMPAuthenticationFailure",
+       "SYS_SNMPFailure": "vCTS: SYS_SNMPFailure",
+       "SYS_SU_TO_ROOT_FAILURE": "vCTS: SYS_SU_TO_ROOT_FAILURE",
+       "SYS_SYSTEMTrapOverload": "vCTS: SYS_SYSTEMTrapOverload",
+       "SYS_ThresholdCrossed": "vCTS: SYS_ThresholdCrossed",
+       "SYS_UndiscoveredObject": "vCTS: SYS_UndiscoveredObject",
+       "SYS_WriteAAAFailure": "vCTS: SYS_WriteAAAFailure",
+       "jnxSpaceDiskUsageRising": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRising",
+       "jnxSpaceDiskUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared",
+       "jnxSpaceSwapUsageRising": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRising",
+       "jnxSpaceSwapUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared",
+       "jnxSpaceCPULARising": "vDBE-EMS-Juniper: jnxSpaceCPULARising",
+       "jnxSpaceCPULARisingCleared": "vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared",
+       "jnxSpaceWebpProxyProcessDown": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown",
+       "jnxSpaceWebpProxyProcessUp": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp",
+       "jnxSpaceNMAProcessDown": "vDBE-EMS-Juniper: jnxSpaceNMAProcessDown",
+       "jnxSpaceNMAProcessUp": "vDBE-EMS-Juniper: jnxSpaceNMAProcessUp",
+       "jnxSpaceJbossProcessDown": "vDBE-EMS-Juniper: jnxSpaceJbossProcessDown",
+       "jnxSpaceJbossProcessUp": "vDBE-EMS-Juniper: jnxSpaceJbossProcessUp",
+       "jnxSpaceMysqlProcessDown": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown",
+       "jnxSpaceMysqlProcessUp": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp",
+       "jnxSpacePostgresqlProcessDown": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown",
+       "jnxSpacePostgresqlProcessUp": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp",
+       "jnxSpaceWatchdogStopped": "vDBE-EMS-Juniper: jnxSpaceWatchdogStopped",
+       "jnxSpaceWatchdogStarted": "vDBE-EMS-Juniper: jnxSpaceWatchdogStarted",
+       "jnxSpaceSNAProcessDown": "vDBE-EMS-Juniper: jnxSpaceSNAProcessDown",
+       "jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp",
+       "jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown",
+       "jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp",
+       " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper:  jnxSpaceNodeRemoval",
+       "jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange",
+       "jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange",
+       "jnxEventTrap": "vDBE-Juniper: jnxEventTrap",
+       "jnxJsFwAuthFailure": "vDBE-Juniper: jnxJsFwAuthFailure",
+       "jnxJsFwAuthServiceUp": "vDBE-Juniper: jnxJsFwAuthServiceUp",
+       "jnxJsFwAuthServiceDown": "vDBE-Juniper: jnxJsFwAuthServiceDown",
+       "jnxJsFwAuthCapacityExceeded": "vDBE-Juniper: jnxJsFwAuthCapacityExceeded",
+       "jnxJsIdpSignatureUpdate": "vDBE-Juniper: jnxJsIdpSignatureUpdate",
+       "jnxJsIdpAttackLog": "vDBE-Juniper: jnxJsIdpAttackLog",
+       "jnxJsSrcNatPoolThresholdStatus": "vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus",
+       "jnxJsNatRuleThresholdStatus": "vDBE-Juniper: jnxJsNatRuleThresholdStatus",
+       "jnxJsScreenAttack": "vDBE-Juniper: jnxJsScreenAttack",
+       "jnxJsScreenCfgChange": "vDBE-Juniper: jnxJsScreenCfgChange",
+       "jnxJsAvPatternUpdateTrap": "vDBE-Juniper: jnxJsAvPatternUpdateTrap",
+       "jnxJsChassisClusterSwitchover": "vDBE-Juniper: jnxJsChassisClusterSwitchover",
+       "jnxJsChClusterIntfTrap": "vDBE-Juniper: jnxJsChClusterIntfTrap",
+       "jnxJsChClusterSpuMismatchTrap": "vDBE-Juniper: jnxJsChClusterSpuMismatchTrap",
+       "jnxJsChClusterWeightTrap": "vDBE-Juniper: jnxJsChClusterWeightTrap",
+       "jnxLicenseGraceExpired": "vDBE-Juniper: jnxLicenseGraceExpired",
+       "jnxLicenseGraceAboutToExpire": "vDBE-Juniper: jnxLicenseGraceAboutToExpire",
+       "jnxLicenseAboutToExpire": "vDBE-Juniper: jnxLicenseAboutToExpire",
+       "jnxLicenseInfringeCumulative": "vDBE-Juniper: jnxLicenseInfringeCumulative",
+       "jnxLicenseInfringeSingle": "vDBE-Juniper: jnxLicenseInfringeSingle",
+       "jnxNatAddrPoolThresholdStatus": "vDBE-Juniper: jnxNatAddrPoolThresholdStatus",
+       "jnxSyslogTrap": "vDBE-Juniper: jnxSyslogTrap",
+       "jnxAccessAuthServiceUp": "vDBE-Juniper: jnxAccessAuthServiceUp",
+       "jnxAccessAuthServiceDown": "vDBE-Juniper: jnxAccessAuthServiceDown",
+       "jnxAccessAuthServerDisabled": "vDBE-Juniper: jnxAccessAuthServerDisabled",
+       "jnxAccessAuthServerEnabled": "vDBE-Juniper: jnxAccessAuthServerEnabled",
+       "jnxAccessAuthAddressPoolHighThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold",
+       "jnxAccessAuthAddressPoolAbateThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold",
+       "jnxAccessAuthAddressPoolOutOfAddresses": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses",
+       "jnxAccessAuthAddressPoolOutOfMemory": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory",
+       "LEVEL_WARNING_CPU": "vMRF: LEVEL_WARNING_CPU",
+       "LEVEL_MAJOR_CPU": "vMRF: LEVEL_MAJOR_CPU",
+       "LEVEL_CRITICAL_CPU": "vMRF: LEVEL_CRITICAL_CPU",
+       "LEVEL_WARNING_MEM": "vMRF: LEVEL_WARNING_MEM",
+       "LEVEL_MAJOR_MEM": "vMRF: LEVEL_MAJOR_MEM",
+       "LEVEL_CRITICAL_MEM": "vMRF: LEVEL_CRITICAL_MEM",
+       "LEVEL_WARNING_DISK": "vMRF: LEVEL_WARNING_DISK",
+       "LEVEL_MAJOR_DISK": "vMRF: LEVEL_MAJOR_DISK",
+       "LEVEL_CRITICAL_DISK": "vMRF: LEVEL_CRITICAL_DISK",
+       "LEVEL_WARNING_RTPBANDWIDTH": "vMRF: LEVEL_WARNING_RTPBANDWIDTH",
+       "LEVEL_MAJOR_RTPBANDWIDTH": "vMRF: LEVEL_MAJOR_RTPBANDWIDTH",
+       "LEVEL_CRITICAL_RTPBANDWIDTH": "vMRF: LEVEL_CRITICAL_RTPBANDWIDTH",
+       "LEVEL_WARNING_RTPINPACKETLOSS": "vMRF: LEVEL_WARNING_RTPINPACKETLOSS",
+       "LEVEL_MAJOR_RTPINPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPINPACKETLOSS",
+       "LEVEL_CRITICAL_RTPINPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS",
+       "LEVEL_WARNING_RTPOUTPACKETLOSS": "vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS",
+       "LEVEL_MAJOR_RTPOUTPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS",
+       "LEVEL_CRITICAL_RTPOUTPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS",
+       "LEVEL_WARNING_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE",
+       "LEVEL_MAJOR_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE",
+       "LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE",
+       "LEVEL_WARNING_TCPLOSSFAILURERATE": "vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE",
+       "LEVEL_MAJOR_TCPLOSSFAILURERATE": "vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE",
+       "LEVEL_CRITICAL_TCPLOSSFAILURERATE": "vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE",
+       "LEVEL_CRITICAL_RTPLINKDOWN": "vMRF: LEVEL_CRITICAL_RTPLINKDOWN",
+       "TARGET_REACHABLE": "vMRF: TARGET_REACHABLE",
+       "PUBLICATION_ERROR": "vMRF: PUBLICATION_ERROR",
+       "REMOTE_SERVER_SYNCHRONIZATION_ERROR": "vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR",
+       "TRANSCODER_TOOL_EXEC_ERROR": "vMRF: TRANSCODER_TOOL_EXEC_ERROR",
+       "CLIENT_SYNCHRONIZATION_ERROR": "vMRF: CLIENT_SYNCHRONIZATION_ERROR",
+       "CLUSTER_UNREACHABLE": "vMRF: CLUSTER_UNREACHABLE",
+       "REMOTE_NODE_OFFLINE": "vMRF: REMOTE_NODE_OFFLINE",
+       "IPADDR_STOPPED": "vMRF: IPADDR_STOPPED",
+       "MRFC_STOPPED": "vMRF: MRFC_STOPPED",
+       "MNGT_STOPPED": "vMRF: MNGT_STOPPED",
+       "IPADDR_STARTED": "vMRF: IPADDR_STARTED",
+       "MRFC_STARTED": "vMRF: MRFC_STARTED",
+       "MNGT_STARTED": "vMRF: MNGT_STARTED",
+       "VOLATTACH_FAILED": "vMRF: VOLATTACH_FAILED",
+       "VOLDETACH_FAILED": "vMRF: VOLDETACH_FAILED",
+       "VOLDEL": "vMRF: VOLDEL",
+       "VOLCORRUPT": "vMRF: VOLCORRUPT",
+       "VOLFOREIGN": "vMRF: VOLFOREIGN",
+       "ACTIVE_ALARM_TABLE_PURGE": "vMRF: ACTIVE_ALARM_TABLE_PURGE",
+       "GENERIC_FORMER_STATELESS": "vMRF: GENERIC_FORMER_STATELESS",
+       "GENERIC_FORMER_STATEFUL": "vMRF: GENERIC_FORMER_STATEFUL",
+       "NO_MORE_ALARM_DESCRIPTION": "vMRF: NO_MORE_ALARM_DESCRIPTION",
+       "SERVICE_PROCESS_ENDS": "vMRF: SERVICE_PROCESS_ENDS",
+       "DEFENSE_STOPPED": "vMRF: DEFENSE_STOPPED",
+       "USER_ACCOUNT_LOCKED": "vMRF: USER_ACCOUNT_LOCKED",
+       "CONNECTION_SQL_NOT_ESTABLISHED": "vMRF: CONNECTION_SQL_NOT_ESTABLISHED",
+       "FALSE_ALARM": "vMRF: FALSE_ALARM",
+       "RADIUS SERVER HS": "vMRF: RADIUS SERVER HS",
+       "DRM_PACKAGER_IS_NOT_AVAILABLE": "vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE",
+       "DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE": "vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE",
+       "ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE": "vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE",
+       "ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION": "vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION",
+       "PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND": "vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND",
+       "COULD_NOT_CONNECT_TO_PVNS_SERVER": "vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER",
+       "HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED": "vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED",
+       "I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE": "vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE",
+       "ERROR_WHILE_REQUESTING_SDP_FILE": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE",
+       "ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION",
+       "NO_STREAMING_RESOURCES": "vMRF: NO_STREAMING_RESOURCES",
+       "NO_STREAMING_MODULES_REGISTERED": "vMRF: NO_STREAMING_MODULES_REGISTERED",
+       "SM_FAILURE": "vMRF: SM_FAILURE",
+       "MISSING_FILE_OR_ENCODER": "vMRF: MISSING_FILE_OR_ENCODER",
+       "INVALID_RANGE": "vMRF: INVALID_RANGE",
+       "THRESHOLD_VALUE_EXCEEDED": "vMRF: THRESHOLD_VALUE_EXCEEDED",
+       "TICKET_QUEUE_FULL": "vMRF: TICKET_QUEUE_FULL",
+       "PARSING_INITIALIZATION_EXCEPTION": "vMRF: PARSING_INITIALIZATION_EXCEPTION",
+       "CUSTOMERCARE_INTERNAL_EXCEPTION": "vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION",
+       "PARSING_EXCEPTION": "vMRF: PARSING_EXCEPTION",
+       "I/O_PROBLEM": "vMRF: I/O_PROBLEM",
+       "INEXISTENT_FILE_OR_FOLDER": "vMRF: INEXISTENT_FILE_OR_FOLDER",
+       "FILE_NOT_IN_XML_FORMAT": "vMRF: FILE_NOT_IN_XML_FORMAT",
+       "SERVICE_STATE_CHANGE": "vMRF: SERVICE_STATE_CHANGE",
+       "MONITORED_FILE_UPDATE_ERROR": "vMRF: MONITORED_FILE_UPDATE_ERROR",
+       "MONITORED_RPM_DELETED_ERROR": "vMRF: MONITORED_RPM_DELETED_ERROR",
+       "MONITORED_RPM_ADDED_ERROR": "vMRF: MONITORED_RPM_ADDED_ERROR",
+       "MONITORED_CHMOD_ERROR": "vMRF: MONITORED_CHMOD_ERROR",
+       "MONITORED_CHOWN_ERROR": "vMRF: MONITORED_CHOWN_ERROR",
+       "PASSWD_ROOT_ERROR": "vMRF: PASSWD_ROOT_ERROR",
+       "PASSWD_ERROR": "vMRF: PASSWD_ERROR",
+       "ROOTKIT_ERROR": "vMRF: ROOTKIT_ERROR",
+       "STARTUP_ERR_UNDEFINED_PORT": "vMRF: STARTUP_ERR_UNDEFINED_PORT",
+       "STARTUP_ERR_FAIL_FIND_HOSTNAME": "vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME",
+       "STARTUP_ERR_CF_MISSING": "vMRF: STARTUP_ERR_CF_MISSING",
+       "STARTUP_ERR_FAILED_TO_OPEN_CF": "vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF",
+       "STARTUP_ERR_FAILED_TO_BIND_PORT": "vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT",
+       "STARTUP_ERR_CFG_UNIT_MISSING": "vMRF: STARTUP_ERR_CFG_UNIT_MISSING",
+       "MCTR_INVALID_CODEC_NAME": "vMRF: MCTR_INVALID_CODEC_NAME",
+       "RTSP_SERVER_FAILURE": "vMRF: RTSP_SERVER_FAILURE",
+       "RTSP_SERVER_QUARANTINE": "vMRF: RTSP_SERVER_QUARANTINE",
+       "TRANSCODING_FAILURE": "vMRF: TRANSCODING_FAILURE",
+       "FILE_CACHE_FAILURE": "vMRF: FILE_CACHE_FAILURE",
+       "STARTUP_ERROR_INITIALIZATION_FAILED": "vMRF: STARTUP_ERROR_INITIALIZATION_FAILED",
+       "CONFERENCE_FAILURE": "vMRF: CONFERENCE_FAILURE",
+       "PLC_DEGRADATION_LOW": "vMRF: PLC_DEGRADATION_LOW",
+       "PLC_DEGRADATION_MEDIUM": "vMRF: PLC_DEGRADATION_MEDIUM",
+       "PLC_DEGRADATION_HIGH": "vMRF: PLC_DEGRADATION_HIGH",
+       "AUDIO_RESYNCH_LOW": "vMRF: AUDIO_RESYNCH_LOW",
+       "AUDIO_RESYNCH_MEDIUM": "vMRF: AUDIO_RESYNCH_MEDIUM",
+       "AUDIO_RESYNCH_HIGH": "vMRF: AUDIO_RESYNCH_HIGH",
+       "VIDEO_RESYNCH_LOW": "vMRF: VIDEO_RESYNCH_LOW",
+       "VIDEO_RESYNCH_MEDIUM": "vMRF: VIDEO_RESYNCH_MEDIUM",
+       "VIDEO_RESYNCH_HIGH": "vMRF: VIDEO_RESYNCH_HIGH",
+       "PLAY_FAILURES_LOW": "vMRF: PLAY_FAILURES_LOW",
+       "PLAY_FAILURES_MEDIUM": "vMRF: PLAY_FAILURES_MEDIUM",
+       "PLAY_FAILURES_HIGH": "vMRF: PLAY_FAILURES_HIGH",
+       "NOT_ENOUGH_FREE_CONFEREE": "vMRF: NOT_ENOUGH_FREE_CONFEREE",
+       "NO_LONGER_FREE_CONFERENCE_ROOM": "vMRF: NO_LONGER_FREE_CONFERENCE_ROOM",
+       "STARTUP_ERROR_FAIL_TO_READ_CF": "vMRF: STARTUP_ERROR_FAIL_TO_READ_CF",
+       "STARTUP_ERROR_SIP_ADAPTER_INIT": "vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT",
+       "STARTUP_ERROR_MONITORING_INIT": "vMRF: STARTUP_ERROR_MONITORING_INIT",
+       "REGISTER_ERROR_FAILURE": "vMRF: REGISTER_ERROR_FAILURE",
+       "DRI_ERROR_FAILURE": "vMRF: DRI_ERROR_FAILURE",
+       "STARTUP_ERROR_STACK_CONFIGURATION": "vMRF: STARTUP_ERROR_STACK_CONFIGURATION",
+       "STARTUP_ERROR_CONF": "vMRF: STARTUP_ERROR_CONF",
+       "STARTUP_ERROR_UNDEFINED_PORT": "vMRF: STARTUP_ERROR_UNDEFINED_PORT",
+       "HOST_REMOVED": "vMRF: HOST_REMOVED",
+       "INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED": "vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED",
+       "STARTUP_ERROR_STACK_CONF": "vMRF: STARTUP_ERROR_STACK_CONF",
+       "STARTUP_ERROR_CONFIGURATION": "vMRF: STARTUP_ERROR_CONFIGURATION",
+       "STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME": "vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME",
+       "LEVEL_WARNING_CALL": "vMRF: LEVEL_WARNING_CALL",
+       "LEVEL_ALARM_MINOR_CALL": "vMRF: LEVEL_ALARM_MINOR_CALL",
+       "LEVEL_ALARM_MAJOR_CALL": "vMRF: LEVEL_ALARM_MAJOR_CALL",
+       "LEVEL_ALARM_MRFPoutOfService": "vMRF: LEVEL_ALARM_MRFPoutOfService",
+       "MRFP_CALL_REJECTED_Threshold #1": "vMRF: MRFP_CALL_REJECTED_Threshold #1",
+       "MRFP_CALL_REJECTED_Threshold #2": "vMRF: MRFP_CALL_REJECTED_Threshold #2",
+       "MRFP_CALL_REJECTED_Threshold #3": "vMRF: MRFP_CALL_REJECTED_Threshold #3",
+       "MRFP_CALL_RETRIED_Threshold #1": "vMRF: MRFP_CALL_RETRIED_Threshold #1",
+       "MRFP_CALL_RETRIED_Threshold #2": "vMRF: MRFP_CALL_RETRIED_Threshold #2",
+       "MRFP_CALL_RETRIED_Threshold #3": "vMRF: MRFP_CALL_RETRIED_Threshold #3",
+       "STARTUP_PUB_FILE_NOT_PRESENT": "vMRF: STARTUP_PUB_FILE_NOT_PRESENT",
+       "STARTUP_INF_FILE_NOT_PRESENT": "vMRF: STARTUP_INF_FILE_NOT_PRESENT",
+       "STARTUP_LIC_FILE_NOT_PRESENT": "vMRF: STARTUP_LIC_FILE_NOT_PRESENT",
+       "GENERIC_HARDWARE_PROBLEM": "vMRF: GENERIC_HARDWARE_PROBLEM",
+       "HARD_DRIVE_PROBLEM": "vMRF: HARD_DRIVE_PROBLEM",
+       "NETWORK_LINK_PROBLEM": "vMRF: NETWORK_LINK_PROBLEM",
+       "POWER_SUPPLY_PROBLEM": "vMRF: POWER_SUPPLY_PROBLEM",
+       "SMART_HARD_DRIVE_PROBLEM": "vMRF: SMART_HARD_DRIVE_PROBLEM",
+       "STARTUP_ERROR": "vMRF: STARTUP_ERROR",
+       "RESOURCE_NOT_ACCESSIBLE": "vMRF: RESOURCE_NOT_ACCESSIBLE",
+       "RESOURCE_ACCESSIBLE": "vMRF: RESOURCE_ACCESSIBLE",
+       "RESOURCE_FULL": "vMRF: RESOURCE_FULL",
+       "DRI_ALARM": "vMRF: DRI_ALARM",
+       "REGISTER_ERROR_CCF": "vMRF: REGISTER_ERROR_CCF",
+       "REGISTER_ERROR_EXTERNAL": "vMRF: REGISTER_ERROR_EXTERNAL",
+       "TIMEOUT_ERROR": "vMRF: TIMEOUT_ERROR",
+       "VXML_ERROR": "vMRF: VXML_ERROR",
+       "A Network Element is no longer available due to a connection failure": "vMVM: A Network Element is no longer available due to a connection failure",
+       "A MetaSphere server is reporting a fault with the configuration of its connection to MetaView": "vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView",
+       "Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []": "vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []",
+       "Service Assurance Server <IP address> cannot be contacted": "vMVM: Service Assurance Server <IP address> cannot be contacted",
+       "The primary MetaView Director has lost contact with the backup MetaView Director": "vMVM: The primary MetaView Director has lost contact with the backup MetaView Director",
+       "The active server has lost connection to the standby": "vMVM: The active server has lost connection to the standby",
+       "CrashCounter": "vprobes-vBE-Processing: CrashCounter",
+       "IsAlive": "vprobes-vBE-Processing: IsAlive",
+       "SwRestart": "vprobes-vLB: SwRestart",
+       "Repeated exceptions have occurred.": "vSBC-Metaswitch: Repeated exceptions have occurred.",
+       "A licensing limit is close to capacity.": "vSBC-Metaswitch: A licensing limit is close to capacity.",
+       "One or more feature packs have been breached.": "vSBC-Metaswitch: One or more feature packs have been breached.",
+       "The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.",
+       "The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.",
+       "The license on this Perimeta system will expire in less than 4 weeks.": "vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.",
+       "A Perimeta blade has become unlicensed.": "vSBC-Metaswitch: A Perimeta blade has become unlicensed.",
+       "Perimeta is licensed with a bypass certificate, which is valid until the time displayed.": "vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.",
+       "The number of licensed instances exceeded a threshold of the licensed limit.": "vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.",
+       "The software token on the primary Distributed Capacity Manager will expire on the displayed date.": "vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.",
+       "A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.": "vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.",
+       "An adjacency has voice quality alerts.": "vSBC-Metaswitch: An adjacency has voice quality alerts.",
+       "The number of calls being audited is congested.": "vSBC-Metaswitch: The number of calls being audited is congested.",
+       "Session Controller is rejecting calls because there is no valid active call policy set configured.": "vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.",
+       "A call policy set is inactive because it has been misconfigured.": "vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.",
+       "Session Controller is inactive and rejecting calls.": "vSBC-Metaswitch: Session Controller is inactive and rejecting calls.",
+       "Sources have breached minor or major blacklist thresholds.": "vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.",
+       "Sources are blacklisted.": "vSBC-Metaswitch: Sources are blacklisted.",
+       "The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.": "vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.",
+       "A large number of downgrades and bans have been created as a result of blacklisting.": "vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.",
+       "Session Controller is unable to track further sources for blacklisting.": "vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.",
+       "A software protection switch was triggered.": "vSBC-Metaswitch: A software protection switch was triggered.",
+       "A disk area on a processor blade is nearly full.": "vSBC-Metaswitch: A disk area on a processor blade is nearly full.",
+       "Memory use is very high.": "vSBC-Metaswitch: Memory use is very high.",
+       "The primary processor-blade has lost contact with the backup.": "vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.",
+       "An efix or patch has been applied to this system containing diagnostic versions of some software libraries.": "vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.",
+       "A software protection switch (SPS) was triggered. Call and registration state was lost.": "vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.",
+       "The Ethernet Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.",
+       "The Backplane Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.",
+       "A disk area on a processor blade reported an error.": "vSBC-Metaswitch: A disk area on a processor blade reported an error.",
+       "The system is upgrading.": "vSBC-Metaswitch: The system is upgrading.",
+       "An error with NTP functionality has been detected.": "vSBC-Metaswitch: An error with NTP functionality has been detected.",
+       "One or more users are locked out of the system.": "vSBC-Metaswitch: One or more users are locked out of the system.",
+       "The Craft Terminal user FTP directory on a processor blade is nearly full.": "vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.",
+       "A scheduled configuration snapshot has failed.": "vSBC-Metaswitch: A scheduled configuration snapshot has failed.",
+       "The Session Controller is stopping as a result of administrator action.": "vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.",
+       "A Session Controller processor blade is stopping as a result of administrator action.": "vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.",
+       "An object could not be activated because its service address does not exist or is not fully specified.": "vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.",
+       "The hardware on a processor does not meet minimum requirements.": "vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.",
+       "The hardware expectations of the two processors are not the same.": "vSBC-Metaswitch: The hardware expectations of the two processors are not the same.",
+       "The read speed of the main hard disk on a processor blade is too slow.": "vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.",
+       "An error has occurred reading from the hard disk on a processor blade.": "vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.",
+       "Backup and primary processor-blades have an inconsistent system role.": "vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.",
+       "Event: The system encountered a critical error and had to restart.": "vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.",
+       "Event: A RADIUS server failed to respond to an authentication request.": "vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.",
+       "Event: All configured RADIUS servers failed to respond to authentication requests.": "vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.",
+       "Event: The number of CPUs has changed.": "vSBC-Metaswitch: Event: The number of CPUs has changed.",
+       "Event: A user has been automatically deleted": "vSBC-Metaswitch: Event: A user has been automatically deleted",
+       "The primary processor blade has lost management connectivity": "vSBC-Metaswitch: The primary processor blade has lost management connectivity",
+       "Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.": "vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.",
+       "Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.": "vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.",
+       "Perimeta is attempting to resend cached billing records.": "vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.",
+       "The Rf billing cache is full.": "vSBC-Metaswitch: The Rf billing cache is full.",
+       "The inbound call queue is congested.": "vSBC-Metaswitch: The inbound call queue is congested.",
+       "A configured realm group contains realms that are not available to the SBC.": "vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.",
+       "An allowed MSC configuration is not connected to any physical MSCs.": "vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.",
+       "An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.",
+       "No suitable DNS records were found for a peer group's DNS hostname.": "vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.",
+       "One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings": "vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings",
+       "An adjacency has failed as its service network does not match the service network on its associated peer group.": "vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.",
+       "An adjacency has failed as its configured TLS certificate could not be found.": "vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.",
+       "The caching function has not been initialized properly.": "vSBC-Metaswitch: The caching function has not been initialized properly.",
+       "An adjacency has failed as the listen socket could not be created.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.",
+       "An adjacency is congested and may be rejecting calls.": "vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.",
+       "There is an issue with a Diameter peer.": "vSBC-Metaswitch: There is an issue with a Diameter peer.",
+       "A realm is no longer reachable via any configured peers.": "vSBC-Metaswitch: A realm is no longer reachable via any configured peers.",
+       "An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.": "vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.",
+       "One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted": "vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted",
+       "An interface ARP or NDP probe has failed.": "vSBC-Metaswitch: An interface ARP or NDP probe has failed.",
+       "One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.",
+       "One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.",
+       "An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.": "vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.",
+       "An interface device is running above the expected speed.": "vSBC-Metaswitch: An interface device is running above the expected speed.",
+       "An IP address conflict has been detected on a management interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a management interface.",
+       "An interface ICMP probe has failed.": "vSBC-Metaswitch: An interface ICMP probe has failed.",
+       "A High-Availability link has detected a connectivity issue.": "vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.",
+       "An HA-link device is being reported as underspeed.": "vSBC-Metaswitch: An HA-link device is being reported as underspeed.",
+       "An IP address conflict has been detected on a replication interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.",
+       "The Session Controller has started.": "vSBC-Metaswitch: The Session Controller has started.",
+       "A statistic exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic exceeded its configured thresholds.",
+       "One or more statistic has not been retrieved at least 3 times in a row.": "vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.",
+       "A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.": "vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.",
+       "A statistic has exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic has exceeded its configured thresholds.",
+       "A Fallback Operation will soon be started": "vSBG: A Fallback Operation will soon be started",
+       "BRM, Auto Export Backup Failed": "vSBG: BRM, Auto Export Backup Failed",
+       "BRM, Scheduled Backup Failed": "vSBG: BRM, Scheduled Backup Failed",
+       "COM SA, AMF Component Cleanup Failed": "vSBG: COM SA, AMF Component Cleanup Failed",
+       "COM SA, AMF Component Instantiation Failed": "vSBG: COM SA, AMF Component Instantiation Failed",
+       "COM SA, AMF SI Unassigned": "vSBG: COM SA, AMF SI Unassigned",
+       "COM SA, CLM Cluster Node Unavailable": "vSBG: COM SA, CLM Cluster Node Unavailable",
+       "COM SA, MDF Detected Model Error": "vSBG: COM SA, MDF Detected Model Error",
+       "COM SA, Proxy Status of a Component Changed to Unproxied": "vSBG: COM SA, Proxy Status of a Component Changed to Unproxied",
+       "File Management, Number of Files in FileGroup Exceeded": "vSBG: File Management, Number of Files in FileGroup Exceeded",
+       "File Management, Max Size in FileGroup Exceeded": "vSBG: File Management, Max Size in FileGroup Exceeded",
+       "LOTC Disk Replication Communication": "vSBG: LOTC Disk Replication Communication",
+       "LOTC Disk Replication Consistency": "vSBG: LOTC Disk Replication Consistency",
+       "LOTC Disk Usage": "vSBG: LOTC Disk Usage",
+       "LOTC memory Usage": "vSBG: LOTC memory Usage",
+       "LOTC Time Synchronization": "vSBG: LOTC Time Synchronization",
+       "SBG, BGF Control Link Down": "vSBG: SBG, BGF Control Link Down",
+       "SBG, BGF Control Link Disabled": "vSBG: SBG, BGF Control Link Disabled",
+       "SBG, BGF Control Link Enabled": "vSBG: SBG, BGF Control Link Enabled",
+       "SBG, BGF Control Link Remote Locked": "vSBG: SBG, BGF Control Link Remote Locked",
+       "SBG, Charging Data Storage Maximum Records Reached": "vSBG: SBG, Charging Data Storage Maximum Records Reached",
+       "SBG, Charging Server Rejects Charging Data": "vSBG: SBG, Charging Server Rejects Charging Data",
+       "SBG, Excessive Packet Rate Detected ": "vSBG: SBG, Excessive Packet Rate Detected ",
+       "SBG, High Amount of Malformed Packets Received": "vSBG: SBG, High Amount of Malformed Packets Received",
+       "SBG, High Amount of STUN Packets Detected": "vSBG: SBG, High Amount of STUN Packets Detected",
+       "SBG, High Amount of TCP SYN Packets Received": "vSBG: SBG, High Amount of TCP SYN Packets Received",
+       "SBG, High Amount of UDP Packets Received ": "vSBG: SBG, High Amount of UDP Packets Received ",
+       "SBG, IP Address Blocked Due to Excessive Packet Rate": "vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate",
+       "SBG, Lost Connectivity to Diameter Server": "vSBG: SBG, Lost Connectivity to Diameter Server",
+       "SBG, Mated Pair out of Service": "vSBG: SBG, Mated Pair out of Service",
+       "SBG, Network Unavailable for Media Handling": "vSBG: SBG, Network Unavailable for Media Handling",
+       "SBG, Non-emergency Call Released to Free Resources for Emergency Call": "vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call",
+       "SBG, Not Enough Disk Space for Storing Charging Data": "vSBG: SBG, Not Enough Disk Space for Storing Charging Data",
+       "SBG, Payload Mated Pair Failure": "vSBG: SBG, Payload Mated Pair Failure",
+       "SBG, Payload Processor Failure": "vSBG: SBG, Payload Processor Failure",
+       "SBG, Processor Overloaded": "vSBG: SBG, Processor Overloaded",
+       "SBG, Registered User Set in Quarantine": "vSBG: SBG, Registered User Set in Quarantine",
+       "SBG, Registration Contacts Exceed Configured Threshold": "vSBG: SBG, Registration Contacts Exceed Configured Threshold",
+       "SBG, Sequential Restart Initiated": "vSBG: SBG, Sequential Restart Initiated",
+       "SBG, SIP Abuse Detected": "vSBG: SBG, SIP Abuse Detected",
+       "SBG, SIP Network Locked": "vSBG: SBG, SIP Network Locked",
+       "SBG, SIP Next Hop Reachable": "vSBG: SBG, SIP Next Hop Reachable",
+       "SBG, SIP Next Hop Unreachable": "vSBG: SBG, SIP Next Hop Unreachable",
+       "SBG, SIP Request Rejected by Network Throttling": "vSBG: SBG, SIP Request Rejected by Network Throttling",
+       "SBG, TLS Certificate Imported": "vSBG: SBG, TLS Certificate Imported",
+       "SBG, Trace Recording Session Number Limit Reached": "vSBG: SBG, Trace Recording Session Number Limit Reached",
+       "SBG, Trace Session Deactivated": "vSBG: SBG, Trace Session Deactivated",
+       "SBG, Trace Session Times Out": "vSBG: SBG, Trace Session Times Out",
+       "SBG, Unknown Media Type or Payload Type": "vSBG: SBG, Unknown Media Type or Payload Type"
+}
diff --git a/src/main/resources/clds/templates/ui-location-default.json b/src/main/resources/clds/templates/ui-location-default.json
new file mode 100644 (file)
index 0000000..c0043d9
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "DC1": "Data Center 1",
+       "DC2": "Data Center 2",
+       "DC3": "Data Center 3"
+}
diff --git a/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java b/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java
new file mode 100644 (file)
index 0000000..287bc17
--- /dev/null
@@ -0,0 +1,86 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * 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=========================================================
+ */
+
+package org.onap.clamp.clds.config.sdc;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+
+/**
+ * This class tests the SDC Controller config.
+ */
+public class SdcSingleControllerConfigurationTest {
+
+    public final SdcSingleControllerConfiguration loadControllerConfiguration(String fileName, String sdcControllerName)
+            throws JsonParseException, JsonMappingException, IOException {
+        JsonNode jsonNode = new ObjectMapper().readValue(ResourceFileUtil.getResourceAsStream(fileName),
+                JsonNode.class);
+        SdcSingleControllerConfiguration sdcSingleControllerConfiguration = new SdcSingleControllerConfiguration(
+                jsonNode, sdcControllerName);
+        return sdcSingleControllerConfiguration;
+    }
+
+    @Test
+    public final void testTheInit() throws SdcParametersException, IOException {
+        SdcSingleControllerConfiguration sdcConfig = loadControllerConfiguration("clds/sdc-controller-config-TLS.json",
+                "sdc-controller1");
+        assertEquals("User", sdcConfig.getUser());
+        assertEquals("ThePassword", sdcConfig.getPassword());
+        assertEquals("consumerGroup", sdcConfig.getConsumerGroup());
+        assertEquals("consumerId", sdcConfig.getConsumerID());
+        assertEquals("environmentName", sdcConfig.getEnvironmentName());
+        assertEquals("hostname", sdcConfig.getAsdcAddress());
+        assertEquals(10, sdcConfig.getPollingInterval());
+        assertEquals(30, sdcConfig.getPollingTimeout());
+        assertEquals(SdcSingleControllerConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST.size(),
+                sdcConfig.getRelevantArtifactTypes().size());
+        assertTrue(sdcConfig.activateServerTLSAuth());
+        assertEquals("ThePassword", sdcConfig.getKeyStorePassword());
+    }
+
+    @Test(expected = SdcParametersException.class)
+    public final void testAllRequiredParameters() throws JsonParseException, JsonMappingException, IOException {
+        SdcSingleControllerConfiguration sdcConfig = loadControllerConfiguration("clds/sdc-controller-config-TLS.json",
+                "sdc-controller1");
+        // No exception should be raised
+        sdcConfig.testAllRequiredParameters();
+        sdcConfig = loadControllerConfiguration("clds/sdc-controller-config-bad.json", "sdc-controller1");
+        fail("Should have raised an exception");
+    }
+
+    @Test
+    public final void testConsumerGroupWithNULL() throws JsonParseException, JsonMappingException, IOException {
+        SdcSingleControllerConfiguration sdcConfig = loadControllerConfiguration("clds/sdc-controller-config-NULL.json",
+                "sdc-controller1");
+        assertTrue(sdcConfig.getConsumerGroup() == null);
+    }
+}
index 1e9a9ed..861921c 100644 (file)
@@ -42,7 +42,6 @@ import org.apache.commons.codec.DecoderException;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.model.CLDSMonitoringDetails;
@@ -62,7 +61,7 @@ import org.springframework.test.context.junit4.SpringRunner;
  */
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class CldsDaoItCase extends AbstractItCase {
+public class CldsDaoItCase {
 
     protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDao.class);
     @Autowired
diff --git a/src/test/java/org/onap/clamp/clds/it/CldsReferencePropertiesItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsReferencePropertiesItCase.java
deleted file mode 100644 (file)
index 6c94fc1..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2017-2018 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.it;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import java.io.IOException;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * Test corg.onap.clamp.ClampDesigner.model.refprop package using RefProp.
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class CldsReferencePropertiesItCase extends AbstractItCase {
-
-    protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsReferencePropertiesItCase.class);
-
-    /**
-     * Test getting prop value as a JSON Node / template.
-     *
-     * @throws IOException
-     *             when JSON parsing fails
-     */
-    @Test
-    public void testJsonTemplate() throws IOException {
-        ObjectNode root = (ObjectNode) refProp.getJsonTemplate("tca.template");
-        root.put("closedLoopControlName", "ClosedLoop-FRWL-SIG-1582f840-2881-11e6-b4ec-005056a9d756");
-        ObjectMapper mapper = new ObjectMapper();
-        String jsonText = mapper.writeValueAsString(root);
-        logger.error("Exception caught IllegalArgumentException as expected");
-        // assertEquals(topicsJson, ref.getTopicsToJson());
-    }
-}
index 932434d..c2b6fb1 100644 (file)
@@ -45,7 +45,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.model.CldsHealthCheck;
 import org.onap.clamp.clds.model.CldsInfo;
@@ -65,7 +64,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  */
 @RunWith(SpringJUnit4ClassRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-public class CldsServiceItCase extends AbstractItCase {
+public class CldsServiceItCase {
 
     @Autowired
     private CldsService cldsService;
index 626cf95..1caa637 100644 (file)
@@ -41,7 +41,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.model.CldsTemplate;
 import org.onap.clamp.clds.model.ValueItem;
@@ -57,7 +56,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  */
 @RunWith(SpringJUnit4ClassRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-public class CldsTemplateServiceItCase extends AbstractItCase {
+public class CldsTemplateServiceItCase {
 
     protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsTemplateServiceItCase.class);
     @Autowired
index 2bdef97..7c4f46d 100644 (file)
@@ -44,7 +44,6 @@ import javax.ws.rs.BadRequestException;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.DcaeHttpConnectionManager;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -58,7 +57,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
 @TestPropertySource(locations = "classpath:https/https-test.properties")
-public class DcaeHttpConnectionManagerItCase extends AbstractItCase {
+public class DcaeHttpConnectionManagerItCase {
 
     @Value("${server.port}")
     private String httpsPort;
index c530a05..29b28a8 100644 (file)
@@ -29,7 +29,6 @@ import java.io.IOException;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.HolmesPolicyDelegate;
 import org.onap.clamp.clds.model.properties.Holmes;
 import org.onap.clamp.clds.model.properties.ModelProperties;
@@ -42,7 +41,7 @@ import org.springframework.test.context.junit4.SpringRunner;
  */
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class HolmesPolicyDelegateItCase extends AbstractItCase {
+public class HolmesPolicyDelegateItCase {
 
     @Test
     public void testCreatePolicyJson() throws IOException {
index 9befc40..73c447b 100644 (file)
@@ -38,7 +38,6 @@ import javax.net.ssl.X509TrustManager;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -55,11 +54,10 @@ import org.springframework.web.client.RestTemplate;
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
 @TestPropertySource(locations = "classpath:https/https-test.properties")
-public class HttpsItCase extends AbstractItCase {
+public class HttpsItCase {
 
     @Value("${server.port}")
     private String httpsPort;
-
     @Value("${server.http-to-https-redirection.port}")
     private String httpPort;
 
@@ -68,7 +66,6 @@ public class HttpsItCase extends AbstractItCase {
      */
     @BeforeClass
     public static void setUp() {
-
         try {
             // setup ssl context to ignore certificate errors
             SSLContext ctx = SSLContext.getInstance("TLS");
@@ -89,12 +86,13 @@ public class HttpsItCase extends AbstractItCase {
                     return null;
                 }
             };
-            ctx.init(null, new TrustManager[] { tm }, null);
+            ctx.init(null, new TrustManager[] {
+                    tm
+            }, null);
             SSLContext.setDefault(ctx);
         } catch (Exception ex) {
             ex.printStackTrace();
         }
-
     }
 
     @Test
@@ -108,16 +106,13 @@ public class HttpsItCase extends AbstractItCase {
             }
         });
         template.setRequestFactory(factory);
-
         ResponseEntity<String> entity = template
                 .getForEntity("http://localhost:" + this.httpPort + "/designer/index.html", String.class);
         assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND);
-
         ResponseEntity<String> httpsEntity = template
                 .getForEntity("https://localhost:" + this.httpsPort + "/designer/index.html", String.class);
         assertThat(httpsEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
         assertThat(httpsEntity.getBody()).contains("CLDS");
-
     }
 
     /**
@@ -141,5 +136,4 @@ public class HttpsItCase extends AbstractItCase {
             super.prepareConnection(connection, httpMethod);
         }
     }
-
 }
index 873b019..43f212c 100644 (file)
@@ -35,8 +35,8 @@ import java.util.Map;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.Policy;
@@ -44,12 +44,16 @@ import org.onap.clamp.clds.model.properties.PolicyChain;
 import org.onap.clamp.clds.util.ResourceFileUtil;
 import org.onap.policy.api.AttributeType;
 import org.onap.policy.controlloop.policy.builder.BuilderException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class OperationPolicyReqItCase extends AbstractItCase {
+public class OperationPolicyReqItCase {
+
+    @Autowired
+    private ClampProperties refProp;
 
     @Test
     public void formatAttributesTest() throws IOException, BuilderException {
index 0e8a217..71cd9f6 100644 (file)
@@ -33,9 +33,10 @@ import java.util.concurrent.TimeUnit;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq;
+import org.onap.clamp.clds.client.req.policy.PolicyClient;
 import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.Policy;
@@ -43,6 +44,7 @@ import org.onap.clamp.clds.model.properties.PolicyChain;
 import org.onap.clamp.clds.model.properties.Tca;
 import org.onap.clamp.clds.util.ResourceFileUtil;
 import org.onap.policy.api.AttributeType;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -52,8 +54,12 @@ import org.springframework.test.context.junit4.SpringRunner;
  */
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class PolicyClientItCase extends AbstractItCase {
+public class PolicyClientItCase {
 
+    @Autowired
+    private ClampProperties refProp;
+    @Autowired
+    protected PolicyClient policyClient;
     String modelProp;
     String modelBpmnProp;
     String modelName;
index 7f96221..7655c58 100644 (file)
@@ -32,8 +32,8 @@ import org.apache.commons.io.IOUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.CldsAlarmCondition;
 import org.onap.clamp.clds.model.CldsServiceData;
 import org.onap.clamp.clds.model.sdc.SdcResource;
@@ -48,8 +48,10 @@ import org.springframework.test.context.junit4.SpringRunner;
  */
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class SdcCatalogServicesItCase extends AbstractItCase {
+public class SdcCatalogServicesItCase {
 
+    @Autowired
+    private ClampProperties refProp;
     @Autowired
     private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices();
 
index 2efc528..ce9c15c 100644 (file)
@@ -35,7 +35,6 @@ import org.apache.commons.codec.DecoderException;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.sdc.SdcRequests;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.properties.ModelProperties;
@@ -47,7 +46,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class SdcReqItCase extends AbstractItCase {
+public class SdcReqItCase {
 
     @Autowired
     private SdcRequests sdcReq;
index c290a38..a46ecee 100644 (file)
@@ -32,12 +32,13 @@ import org.json.JSONException;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.util.ResourceFileUtil;
 import org.skyscreamer.jsonassert.JSONAssert;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -46,8 +47,10 @@ import org.springframework.test.context.junit4.SpringRunner;
  */
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class TcaRequestFormatterItCase extends AbstractItCase {
+public class TcaRequestFormatterItCase {
 
+    @Autowired
+    private ClampProperties refProp;
     private String modelProp;
     private String modelBpmn;
     private String modelName;
diff --git a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java
new file mode 100644 (file)
index 0000000..43fc959
--- /dev/null
@@ -0,0 +1,100 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017-2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.it.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.config.ClampProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test corg.onap.clamp.ClampDesigner.model.refprop package using RefProp.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class CldsReferencePropertiesItCase {
+
+    @Autowired
+    private ClampProperties refProp;
+
+    /**
+     * Test getting a value the properties in string.
+     * 
+     * @throws IOException
+     */
+    @Test
+    public void testGetStringValue() throws IOException {
+        assertEquals(refProp.getStringValue("policy.onap.name"), "DCAE");
+        assertEquals(refProp.getStringValue("policy.ms.policyNamePrefix", ""), "Config_MS_");
+        assertEquals(refProp.getStringValue("policy.ms.policyNamePrefix", "testos"), "Config_MS_");
+        assertEquals(refProp.getStringValue("policy.ms", "policyNamePrefix"), "Config_MS_");
+        assertNull(refProp.getStringValue("does.not.exist"));
+    }
+
+    /**
+     * Test getting prop value as a JSON Node / template.
+     *
+     * @throws IOException
+     *             when JSON parsing fails
+     */
+    @Test
+    public void testGetJsonTemplate() throws IOException {
+        // ui.location.default={"DC1":"Data Center 1","DC2":"Data Center
+        // 2","DC3":"Data Center 3"}
+        ObjectNode root = (ObjectNode) refProp.getJsonTemplate("ui.location.default");
+        assertNotNull(root);
+        assertEquals(root.get("DC1").asText(), "Data Center 1");
+        // Test composite key
+        root = (ObjectNode) refProp.getJsonTemplate("ui.location", "default");
+        assertNotNull(root);
+        assertEquals(root.get("DC1").asText(), "Data Center 1");
+        root = (ObjectNode) refProp.getJsonTemplate("ui.location", "");
+        assertNull(root);
+    }
+
+    /**
+     * Test getting prop value as a JSON Node / template.
+     *
+     * @throws IOException
+     *             when JSON parsing fails
+     */
+    @Test
+    public void testGetFileContent() throws IOException {
+        String content = refProp.getFileContent("sdc.decode.service_ids");
+        assertEquals("{}", content);
+        // Test composite key
+        content = refProp.getFileContent("sdc.decode", "service_ids");
+        assertEquals("{}", content);
+    }
+}
diff --git a/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java b/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java
new file mode 100644 (file)
index 0000000..4b63248
--- /dev/null
@@ -0,0 +1,86 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * 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=========================================================
+ */
+
+package org.onap.clamp.clds.it.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.config.sdc.SdcControllersConfiguration;
+import org.onap.clamp.clds.config.sdc.SdcSingleControllerConfiguration;
+import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.util.ReflectionTestUtils;
+
+/**
+ * This class tests the SDC Controller config.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SdcControllersConfigurationItCase {
+
+    @Autowired
+    private SdcControllersConfiguration sdcControllersConfiguration;
+
+    public final void loadFile(String fileName) throws IOException {
+        ReflectionTestUtils.setField(sdcControllersConfiguration, "sdcControllerFile", fileName);
+        sdcControllersConfiguration.loadConfiguration();
+    }
+
+    @Test
+    public void testGetAllDefinedControllers() throws IOException {
+        loadFile("classpath:/clds/sdc-controllers-config.json");
+        Map<String, SdcSingleControllerConfiguration> mapResult = sdcControllersConfiguration
+                .getAllDefinedControllers();
+        assertTrue(mapResult.size() == 2);
+        assertEquals("sdc-controller1", mapResult.get("sdc-controller1").getSdcControllerName());
+        assertEquals("sdc-controller2", mapResult.get("sdc-controller2").getSdcControllerName());
+    }
+
+    @Test
+    public void testGetSdcSingleControllerConfiguration() throws IOException {
+        loadFile("classpath:/clds/sdc-controllers-config.json");
+        assertEquals("sdc-controller1", sdcControllersConfiguration
+                .getSdcSingleControllerConfiguration("sdc-controller1").getSdcControllerName());
+        assertEquals("sdc-controller2", sdcControllersConfiguration
+                .getSdcSingleControllerConfiguration("sdc-controller2").getSdcControllerName());
+    }
+
+    @Test(expected = IOException.class)
+    public void testBadJsonLoading() throws IOException {
+        loadFile("classpath:/clds/sdc-controllers-config-bad.json");
+        fail("Should have raised an exception");
+    }
+
+    @Test(expected = SdcParametersException.class)
+    public void testMissingParamInJsonLoading() throws IOException {
+        loadFile("classpath:/clds/sdc-controllers-config-missing-param.json");
+        sdcControllersConfiguration.getAllDefinedControllers();
+        fail("Should have raised an exception");
+    }
+}
diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties
new file mode 100644 (file)
index 0000000..adcd4d9
--- /dev/null
@@ -0,0 +1,204 @@
+###\r
+# ============LICENSE_START=======================================================\r
+# ONAP CLAMP\r
+# ================================================================================\r
+# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights\r
+#                             reserved.\r
+# ================================================================================\r
+# Licensed under the Apache License, Version 2.0 (the "License");\r
+# you may not use this file except in compliance with the License.\r
+# You may obtain a copy of the License at\r
+#\r
+# http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+# See the License for the specific language governing permissions and\r
+# limitations under the License.\r
+# ============LICENSE_END============================================\r
+# ===================================================================\r
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+###\r
+\r
+info.build.artifact=@project.artifactId@\r
+info.build.name=@project.name@\r
+info.build.description=@project.description@\r
+info.build.version=@project.version@\r
+\r
+### Set the port for HTTP or HTTPS protocol (Controlled by Spring framework, only one at a time).\r
+### (See below for the parameter 'server.http.port' if you want to have both enabled)\r
+### To have only HTTP, keep the lines server.ssl.* commented\r
+### To have only HTTPS enabled, uncomment the server.ssl.* lines and specify a right keystore location\r
+server.port=8080\r
+### Settings for HTTPS (this automatically enables the HTTPS on the port 'server.port')\r
+#server.ssl.key-store=file:/tmp/mykey.jks\r
+#server.ssl.key-store-password=pass\r
+#server.ssl.key-password=pass\r
+\r
+### In order to be user friendly when HTTPS is enabled,\r
+### you can add another HTTP port that will be automatically redirected to HTTPS\r
+### by enabling this parameter (server.http.port) and set it to another port (80 or 8080, 8090, etc ...)\r
+#server.http-to-https-redirection.port=8090\r
+\r
+### HTTP Example:\r
+###--------------\r
+### server.port=8080\r
+\r
+### HTTPS Example:\r
+### --------------\r
+### server.port=8443\r
+### server.ssl.key-store=file:/tmp/mykey.jks\r
+### server.ssl.key-store-password=mypass\r
+### server.ssl.key-password=mypass\r
+\r
+### HTTP (Redirected to HTTPS) and HTTPS Example:\r
+### --------------------------------------------\r
+### server.port=8443           <-- The HTTPS port\r
+### server.ssl.key-store=file:/tmp/mykey.jks\r
+### server.ssl.key-store-password=mypass\r
+### server.ssl.key-password=mypass\r
+### server.http-to-https-redirection.port=8090  <-- The HTTP port\r
+\r
+server.contextPath=/\r
+#Modified engine-rest applicationpath\r
+spring.profiles.active=clamp-default,clamp-spring-authentication\r
+\r
+#The max number of active threads in this pool\r
+server.tomcat.max-threads=200\r
+#The minimum number of threads always kept alive\r
+server.tomcat.min-Spare-Threads=25\r
+#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads\r
+server.tomcat.max-idle-time=60000\r
+\r
+#Servlet context parameters\r
+server.context_parameters.p-name=value #context parameter with p-name as key and value as value.\r
+\r
+camel.springboot.consumer-template-cache-size=1000\r
+camel.springboot.producer-template-cache-size=1000\r
+camel.springboot.jmx-enabled=false\r
+camel.defaultthreadpool.poolsize=10\r
+camel.defaultthreadpool.maxpoolsize=20\r
+camel.defaultthreadpool.maxqueuesize=1000\r
+camel.defaultthreadpool.keepaliveTime=60\r
+camel.defaultthreadpool.rejectpolicy=CallerRuns\r
+#camel.springboot.xmlRoutes = false\r
+camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml\r
+#camel.springboot.typeConversion = false\r
+\r
+#clds datasource connection details\r
+spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver\r
+spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3\r
+spring.datasource.cldsdb.username=clds\r
+spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067\r
+spring.datasource.cldsdb.validationQuery=SELECT 1\r
+spring.datasource.cldsdb.validationQueryTimeout=20000\r
+spring.datasource.cldsdb.validationInterval=30000\r
+spring.datasource.cldsdb.testWhileIdle = true\r
+spring.datasource.cldsdb.minIdle = 0\r
+spring.datasource.cldsdb.initialSize=0\r
+# Automatically test whether a connection provided is good or not\r
+spring.datasource.cldsdb.testOnBorrow=true\r
+spring.datasource.cldsdb.ignoreExceptionOnPreLoad=true\r
+\r
+#Async Executor default Parameters\r
+async.core.pool.size=10\r
+async.max.pool.size=20\r
+async.queue.capacity=500\r
+\r
+clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties\r
+clamp.config.files.cldsUsers=classpath:/clds/clds-users.json\r
+clamp.config.files.globalProperties=classpath:/clds/templates/globalProperties.json\r
+clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json\r
+\r
+# Properties for Clamp\r
+# DCAE request build properties\r
+#\r
+clamp.config.dcae.template=classpath:/clds/templates/dcae-template.json\r
+clamp.config.dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json\r
+clamp.config.dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json\r
+#\r
+# SDC request blueprint properties\r
+#\r
+clamp.config.sdc.template=classpath:/clds/templates/sdc-template.json\r
+clamp.config.sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json\r
+#\r
+#\r
+# General Policy request properties\r
+#\r
+clamp.config.policy.onap.name=DCAE\r
+clamp.config.policy.pdp.group=default\r
+clamp.config.policy.ms.type=MicroService\r
+clamp.config.policy.ms.policyNamePrefix=Config_MS_\r
+clamp.config.policy.op.type=BRMS_Param\r
+clamp.config.policy.op.policyNamePrefix=Config_BRMS_Param_\r
+\r
+# TCA MicroService Policy request build properties\r
+#\r
+clamp.config.tca.policyid.prefix=DCAE.Config_\r
+clamp.config.tca.policy.template=classpath:/clds/templates/tca-policy-template.json\r
+clamp.config.tca.template=classpath:/clds/templates/tca-template.json\r
+clamp.config.tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json\r
+\r
+#\r
+#\r
+# Operational Policy request build properties\r
+#\r
+clamp.config.op.policyDescription=from clds\r
+# default\r
+clamp.config.op.templateName=ClosedLoopvUSP\r
+clamp.config.op.operationTopic=APPC-CL\r
+clamp.config.op.notificationTopic=POLICY-CL-MGT\r
+clamp.config.op.controller=amsterdam\r
+clamp.config.op.policy.appc=APPC\r
+# by service: vSCP\r
+clamp.config.op.templateName.vSCP=ClosedLoopTemplate\r
+clamp.config.op.controller.vSCP=1607-f5fw\r
+clamp.config.op.eNodeB.templateName=ClosedLoopControlName\r
+clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00\r
+clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL\r
+clamp.config.op.eNodeB.controller=amsterdam\r
+clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json\r
+clamp.config.op.eNodeB.timeWindow=35\r
+clamp.config.op.eNodeB.limit=2\r
+clamp.config.op.eNodeB.period=10s\r
+#\r
+# Sdc service properties\r
+clamp.config.sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/\r
+clamp.config.sdc.hostUrl=http://localhost:${docker.http-cache.port.host}\r
+clamp.config.sdc.serviceUrl=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/services\r
+clamp.config.sdc.serviceUsername=clamp\r
+clamp.config.sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981\r
+clamp.config.sdc.artifactLabel=blueprintclampcockpit\r
+clamp.config.sdc.sdcX-InstanceID=CLAMP\r
+clamp.config.sdc.artifactType=DCAE_INVENTORY_BLUEPRINT\r
+clamp.config.sdc.locationArtifactLabel=locationclampcockpit\r
+clamp.config.sdc.locationArtifactType=DCAE_INVENTORY_JSON\r
+clamp.config.sdc.InstanceID=X-ECOMP-InstanceID\r
+clamp.config.sdc.header.requestId = X-ECOMP-RequestID\r
+#\r
+#\r
+clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json\r
+clamp.config.ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json\r
+#\r
+# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request\r
+clamp.config.action.test.override=false\r
+# if action.insert.test.event is true, then insert event even if the action is set to test\r
+clamp.config.action.insert.test.event=false\r
+clamp.config.clds.service.cache.invalidate.after.seconds=120\r
+\r
+#DCAE Inventory Url Properties\r
+clamp.config.dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080\r
+\r
+#DCAE Dispatcher Url Properties\r
+clamp.config.dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080\r
+clamp.config.dcae.header.requestId = X-ECOMP-RequestID\r
+\r
+#Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case !\r
+clamp.config.security.permission.type.cl=permission-type-cl\r
+clamp.config.security.permission.type.cl.manage=permission-type-cl-manage\r
+clamp.config.security.permission.type.cl.event=permission-type-cl-event\r
+clamp.config.security.permission.type.filter.vf=permission-type-filter-vf\r
+clamp.config.security.permission.type.template=permission-type-template\r
+#This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties\r
+clamp.config.security.permission.instance=dev
\ No newline at end of file
diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties
deleted file mode 100644 (file)
index d6c8bc4..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-###\r
-# ============LICENSE_START=======================================================\r
-# ONAP CLAMP\r
-# ================================================================================\r
-# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights\r
-#                             reserved.\r
-# ================================================================================\r
-# Licensed under the Apache License, Version 2.0 (the "License"); \r
-# you may not use this file except in compliance with the License. \r
-# You may obtain a copy of the License at\r
-# \r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-# \r
-# Unless required by applicable law or agreed to in writing, software \r
-# distributed under the License is distributed on an "AS IS" BASIS, \r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \r
-# See the License for the specific language governing permissions and \r
-# limitations under the License.\r
-# ============LICENSE_END============================================\r
-# ===================================================================\r
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
-###\r
-\r
-#\r
-# Poperties for CLDS\r
-#\r
-#\r
-# DCAE request build properties\r
-#\r
-dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}}\r
-dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]}\r
-dcae.deployment.template={"serviceTypeId": "???", "inputs": {"aaiEnrichmentHost": "10.0.1.1", "enableAAIEnrichment": "true", "subscriberHostName" : "10.0.11.1", "publisherHostName" : "10.0.11.1"}}\r
-#\r
-# SDC request blueprint properties\r
-#\r
-sdc.template={}\r
-sdc.decode.service_ids={}\r
-#\r
-#\r
-# General Policy request properties\r
-#\r
-policy.onap.name=DCAE\r
-policy.pdp.group=default\r
-policy.ms.type=MicroService\r
-policy.ms.policyNamePrefix=Config_MS_\r
-policy.op.type=BRMS_Param\r
-policy.op.policyNamePrefix=Config_BRMS_Param_\r
-\r
-# TCA MicroService Policy request build properties\r
-#\r
-tca.policyid.prefix=DCAE.Config_\r
-tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}}\r
-tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}\r
-tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}\r
-\r
-#\r
-#\r
-# Operational Policy request build properties\r
-#\r
-op.policyDescription=from clds\r
-# default\r
-op.templateName=ClosedLoopvUSP\r
-op.operationTopic=APPC-CL\r
-op.notificationTopic=POLICY-CL-MGT\r
-op.controller=amsterdam\r
-op.policy.appc=APPC\r
-# by service: vSCP\r
-op.templateName.vSCP=ClosedLoopTemplate\r
-op.controller.vSCP=1607-f5fw\r
-op.eNodeB.templateName=ClosedLoopControlName\r
-op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00\r
-op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL\r
-op.eNodeB.controller=amsterdam\r
-op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]}\r
-op.eNodeB.timeWindow=35\r
-op.eNodeB.limit=2\r
-op.eNodeB.period=10s\r
-#\r
-# Sdc service properties\r
-sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/\r
-sdc.hostUrl=http://localhost:${docker.http-cache.port.host}\r
-sdc.serviceUrl=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/services\r
-sdc.serviceUsername=clamp\r
-sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981\r
-sdc.artifactLabel=blueprintclampcockpit\r
-sdc.sdcX-InstanceID=CLAMP\r
-sdc.artifactType=DCAE_INVENTORY_BLUEPRINT\r
-sdc.locationArtifactLabel=locationclampcockpit\r
-sdc.locationArtifactType=DCAE_INVENTORY_JSON\r
-sdc.InstanceID=X-ECOMP-InstanceID\r
-sdc.header.requestId=X-ECOMP-RequestID\r
-#\r
-#\r
-ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"}\r
-ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE-<OAME-hostname> IS NOT ACTIVE ":"vCCF-vDB: OAM NODE-<OAME-hostname> IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper:  jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []","Service Assurance Server <IP address> cannot be contacted":"vMVM: Service Assurance Server <IP address> cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings.  MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings.  MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"}\r
-#\r
-# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request\r
-action.test.override=false\r
-# if action.insert.test.event is true, then insert event even if the action is set to test\r
-action.insert.test.event=false\r
-clds.service.cache.invalidate.after.seconds=120\r
-\r
-#DCAE Inventory Url Properties\r
-DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080\r
-\r
-#DCAE Dispatcher Url Properties\r
-DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080\r
-dcae.header.requestId = X-ECOMP-RequestID\r
-\r
diff --git a/src/test/resources/clds/sdc-controller-config-NULL.json b/src/test/resources/clds/sdc-controller-config-NULL.json
new file mode 100644 (file)
index 0000000..5c8ec0c
--- /dev/null
@@ -0,0 +1,10 @@
+{
+        "user": "User",
+        "consumerGroup": "NULL",
+        "consumerId": "consumerId",
+        "environmentName": "environmentName",
+        "sdcAddress": "hostname",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30
+}
diff --git a/src/test/resources/clds/sdc-controller-config-TLS.json b/src/test/resources/clds/sdc-controller-config-TLS.json
new file mode 100644 (file)
index 0000000..d7642e6
--- /dev/null
@@ -0,0 +1,13 @@
+{
+        "user": "User",
+        "consumerGroup": "consumerGroup",
+        "consumerId": "consumerId",
+        "environmentName": "environmentName",
+        "sdcAddress": "hostname",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30,
+        "activateServerTLSAuth": true,
+        "keyStorePassword":"bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",    
+        "keyStorePath": "/test"
+}
diff --git a/src/test/resources/clds/sdc-controller-config-bad.json b/src/test/resources/clds/sdc-controller-config-bad.json
new file mode 100644 (file)
index 0000000..d99ed58
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "sdc-connections": {
+               "sdc-controller1": {
+                       "user": "testuser",
+                       "consumerGroup": "consumerGroup",
+                       "consumerId": "consumerId",
+                       "environmentName": "environmentName",
+                       "sdcAddress": "hostname1",
+                       "pollingInterval": 10,
+                       "pollingTimeout": 30
+               }
+       }
+}
diff --git a/src/test/resources/clds/sdc-controllers-config-bad.json b/src/test/resources/clds/sdc-controllers-config-bad.json
new file mode 100644 (file)
index 0000000..0b417b7
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "sdc-connections":{,
+    "sdc-controller1":{
+        "user": "User1",
+        "consumerGroup": "consumerGroup1",
+        "consumerId": "consumerId1",
+        "environmentName": "environmentName1",
+        "sdcAddress": "hostname1",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30
+        
+    },
+     "sdc-controller2":{
+        "user": "User2",
+        "consumerGroup": "consumerGroup2",
+        "consumerId": "consumerId2",
+        "environmentName": "environmentName2",
+        "sdcAddress": "hostname2",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30
+        
+    }
+  }
+}
diff --git a/src/test/resources/clds/sdc-controllers-config-missing-param.json b/src/test/resources/clds/sdc-controllers-config-missing-param.json
new file mode 100644 (file)
index 0000000..d99ed58
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "sdc-connections": {
+               "sdc-controller1": {
+                       "user": "testuser",
+                       "consumerGroup": "consumerGroup",
+                       "consumerId": "consumerId",
+                       "environmentName": "environmentName",
+                       "sdcAddress": "hostname1",
+                       "pollingInterval": 10,
+                       "pollingTimeout": 30
+               }
+       }
+}
diff --git a/src/test/resources/clds/sdc-controllers-config.json b/src/test/resources/clds/sdc-controllers-config.json
new file mode 100644 (file)
index 0000000..df73a50
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "sdc-connections":{
+    "sdc-controller1":{
+        "user": "User1",
+        "consumerGroup": "consumerGroup1",
+        "consumerId": "consumerId1",
+        "environmentName": "environmentName1",
+        "sdcAddress": "hostname1",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30
+        
+    },
+     "sdc-controller2":{
+        "user": "User2",
+        "consumerGroup": "consumerGroup2",
+        "consumerId": "consumerId2",
+        "environmentName": "environmentName2",
+        "sdcAddress": "hostname2",
+        "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6",
+        "pollingInterval":10,
+        "pollingTimeout":30
+        
+    }
+  }
+}
diff --git a/src/test/resources/clds/templates/dcae-decode-service_ids.json b/src/test/resources/clds/templates/dcae-decode-service_ids.json
new file mode 100644 (file)
index 0000000..619cac6
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "vUSP": [
+               "vUSP - vCTS"
+       ],
+       "Trinity": [
+               "ASBGv TLS VNF",
+               "ASBGv No TLS",
+               "ASBGv (NO TLS) VNF",
+               "ASBGv TLS",
+               "NSBGv VNF",
+               "NSBGv"
+       ],
+       "vSCP": [
+               "AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1",
+               "ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"
+       ],
+       "vProbes": [
+               "vProbes - FW"
+       ]
+}
diff --git a/src/test/resources/clds/templates/dcae-deployment-template.json b/src/test/resources/clds/templates/dcae-deployment-template.json
new file mode 100644 (file)
index 0000000..d489174
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "serviceTypeId": "???",
+       "inputs": {
+               "aaiEnrichmentHost": "10.0.1.1",
+               "enableAAIEnrichment": "true",
+               "subscriberHostName": "10.0.11.1",
+               "publisherHostName": "10.0.11.1"
+       }
+}
diff --git a/src/test/resources/clds/templates/dcae-template.json b/src/test/resources/clds/templates/dcae-template.json
new file mode 100644 (file)
index 0000000..b7cfb23
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "properties": {
+               "service_name": "",
+               "service_ids": [
+               ],
+               "vnf_ids": [
+               ],
+               "location_ids": [
+               ]
+       },
+       "template": {
+               "tca": {
+                       "dcae": {
+                               "inputTopic": "",
+                               "outputTopic": "",
+                               "closedLoopControlName": "",
+                               "closedLoopEventClient": "configuration.dcae.microservice.tca.xml",
+                               "policyName": "",
+                               "policyScope": "service=vSCP;resource=F5;type=configuration",
+                               "policyVersion": "v0.0.1",
+                               "serviceConfigurations": {
+                               }
+                       }
+               }
+       }
+}
diff --git a/src/test/resources/clds/templates/globalProperties.json b/src/test/resources/clds/templates/globalProperties.json
new file mode 100644 (file)
index 0000000..9ac9d94
--- /dev/null
@@ -0,0 +1,105 @@
+{
+       "tca": {
+               "tname": "New_Set",
+               "tcaInt": "1",
+               "tcaVio": "1",
+               "eventName": {
+                       "vCPEvGMUXPacketLoss": "vCPEvGMUXPacketLoss",
+                       "vLoadBalancer": "vLoadBalancer",
+                       "vFirewallBroadcastPackets": "vFirewallBroadcastPackets"
+               },
+               "fieldPathM": {
+                       "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated": "receivedBroadcastPacketsAccumulated",
+                       "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta": "receivedDiscardedPacketsDelta"
+               },
+               "operator": {
+                       ">": "GREATER",
+                       ">=": "GREATER_OR_EQUAL",
+                       "=": "EQUAL",
+                       "<=": "LESS_OR_EQUAL",
+                       "<": "LESS"
+               },
+               "opsPolicy": {
+                       "POLICY_test_X": "POLICY_test_X",
+                       "POLICY_test_Y": "POLICY_test_Y"
+               },
+               "controlLoopSchemaType": {
+                       "": "",
+                       "VM": "VM",
+                       "VNF": "VNF"
+               },
+               "closedLoopEventStatus": {
+                       "": "",
+                       "ONSET": "ONSET",
+                       "ABATED": "ABATED"
+               }
+       },
+       "global": {
+               "actionSet": {
+                       "vnfRecipe": "VNF",
+                       "enbRecipe": "eNodeB"
+               },
+               "location": {
+                       "DC1": "Data Center 1",
+                       "DC2": "Data Center 2",
+                       "DC3": "Data Center 3"
+               }
+       },
+       "policy": {
+               "pname": "0",
+               "timeout": 345,
+               "vnfRecipe": {
+                       "": "",
+                       "restart": "Restart",
+                       "rebuild": "Rebuild",
+                       "migrate": "Migrate",
+                       "healthCheck": "Health Check"
+               },
+               "enbRecipe": {
+                       "": "",
+                       "reset": "Reset"
+               },
+               "maxRetries": "3",
+               "retryTimeLimit": 180,
+               "resource": {
+                       "vCTS": "vCTS",
+                       "v3CDB": "v3CDB",
+                       "vUDR": "vUDR",
+                       "vCOM": "vCOM",
+                       "vRAR": "vRAR",
+                       "vLCS": "vLCS",
+                       "vUDR-BE": "vUDR-BE",
+                       "vDBE": "vDBE"
+               },
+               "parentPolicyConditions": {
+                       "Failure_Retries": "Failure: Max Retries Exceeded",
+                       "Failure_Timeout": "Failure: Time Limit Exceeded",
+                       "Failure_Guard": "Failure: Guard",
+                       "Failure_Exception": "Failure: Exception",
+                       "Failure": "Failure: Other",
+                       "Success": "Success"
+               }
+       },
+       "shared": {
+               "byService": {
+                       "": {
+                               "vf": {
+                                       "": ""
+                               },
+                               "location": {
+                                       "": ""
+                               },
+                               "alarmCondition": {
+                                       "": ""
+                               }
+                       }
+               },
+               "byVf": {
+                       "": {
+                               "vfc": {
+                                       "": ""
+                               }
+                       }
+               }
+       }
+}
diff --git a/src/test/resources/clds/templates/op-eNodeB-recipe.json b/src/test/resources/clds/templates/op-eNodeB-recipe.json
new file mode 100644 (file)
index 0000000..7098987
--- /dev/null
@@ -0,0 +1,44 @@
+{
+       "eNodeBRecipes": [
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkENodeBTicketHours",
+                       "ParentPolicy": "",
+                       "PPConditions": "",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkEquipmentStatus",
+                       "ParentPolicy": "checkENodeBTicketHours",
+                       "PPConditions": "Success",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkEimStatus",
+                       "ParentPolicy": "checkEquipmentStatus",
+                       "PPConditions": "Success",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "AOTS",
+                       "Recipe": "checkMaintenanceWindow",
+                       "ParentPolicy": "checkEimStatus",
+                       "PPConditions": "Success",
+                       "Retry": "0",
+                       "TimeLimit": "120"
+               },
+               {
+                       "Actor": "SDNR",
+                       "Recipe": "Reset",
+                       "ParentPolicy": "checkMaintenanceWindow",
+                       "PPConditions": "Success",
+                       "Retry": "",
+                       "TimeLimit": ""
+               }
+       ]
+}
diff --git a/src/test/resources/clds/templates/sdc-decode-service_ids.json b/src/test/resources/clds/templates/sdc-decode-service_ids.json
new file mode 100644 (file)
index 0000000..9e26dfe
--- /dev/null
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/test/resources/clds/templates/sdc-template.json b/src/test/resources/clds/templates/sdc-template.json
new file mode 100644 (file)
index 0000000..9e26dfe
--- /dev/null
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/test/resources/clds/templates/tca-policy-template.json b/src/test/resources/clds/templates/tca-policy-template.json
new file mode 100644 (file)
index 0000000..eca4d46
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "service": "tca_policy",
+       "version": "1.0.0",
+       "location": "SampleServiceLocation",
+       "configName": "SampleConfigName",
+       "uuid": "test",
+       "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+       "templateVersion": "OpenSource.version.1",
+       "policyName": "MicroServicevCPE",
+       "description": "MicroService Policy",
+       "priority": "1",
+       "riskType": "SampleRiskType",
+       "riskLevel": "1",
+       "guard": "False",
+       "content": {
+               "tca_policy": {
+               }
+       }
+}
diff --git a/src/test/resources/clds/templates/tca-template.json b/src/test/resources/clds/templates/tca-template.json
new file mode 100644 (file)
index 0000000..892fc0d
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "domain": "measurementsForVfScaling",
+       "metricsPerEventName": [
+               {
+                       "eventName": "???",
+                       "controlLoopSchemaType": "VNF",
+                       "policyScope": "DCAE",
+                       "policyName": "???",
+                       "policyVersion": "v0.0.1",
+                       "thresholds": [
+                       ]
+               }
+       ]
+}
diff --git a/src/test/resources/clds/templates/tca-thresholds-template.json b/src/test/resources/clds/templates/tca-thresholds-template.json
new file mode 100644 (file)
index 0000000..b67e963
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "closedLoopControlName": "???",
+       "version": "1.0.2",
+       "fieldPath": "?????",
+       "thresholdValue": 0,
+       "direction": "???",
+       "severity": "MAJOR",
+       "closedLoopEventStatus": "???"
+}
diff --git a/src/test/resources/clds/templates/ui-alarm-default.json b/src/test/resources/clds/templates/ui-alarm-default.json
new file mode 100644 (file)
index 0000000..0d08359
--- /dev/null
@@ -0,0 +1,597 @@
+{
+       "Reports a transient alarm condition when an incoming CDR cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully",
+       "Reports a transient alarm condition when a CDR validation fails": "vCCF: Reports a transient alarm condition when a CDR validation fails",
+       "Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully",
+       "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session": "vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session",
+       "Reports a transient alarm condition when an outgoing Ro message send fails": "vCCF: Reports a transient alarm condition when an outgoing Ro message send fails",
+       "Reports a transient alarm condition when an outgoing GTP' message send fails": "vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails",
+       "Reports a transient alarm condition when an outgoing Sh/Dh message send fails": "vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails",
+       "Reports an alarm when build or send Rf message fail": "vCCF: Reports an alarm when build or send Rf message fail",
+       "Reports a transient alarm condition when an abnormal incoming CCA message": "vCCF: Reports a transient alarm condition when an abnormal incoming CCA message",
+       "Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message": "vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message",
+       "For Rf interface, if IeCCF receives a message with incorrect value for session id.": "vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.",
+       "Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold",
+       "Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold": "vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold",
+       "Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold": "vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold",
+       "Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold",
+       "Reports an alarm when external DB usage exceeds the major threshold": "vCCF: Reports an alarm when external DB usage exceeds the major threshold",
+       "Reports a transient alarm condition when the workflow definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly",
+       "Reports a transient alarm condition when the Action Definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly",
+       "Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly",
+       "Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly",
+       "Reports a transient alarm condition when a specific dictionary or rule does not exist": "vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist",
+       "Reports a transient alarm condition when failure occurs when mapping Rf message to XDR": "vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR",
+       "Reports a transient alarm condition when failure occurs in aggregating process": "vCCF: Reports a transient alarm condition when failure occurs in aggregating process",
+       "Reports a transient alarm condition when failure happens in correlating process": "vCCF: Reports a transient alarm condition when failure happens in correlating process",
+       "Reports a transient alarm condition when failure occurs in generating CDR": "vCCF: Reports a transient alarm condition when failure occurs in generating CDR",
+       "Reports a transient alarm condition when failure occurs in constructing CCR message from XDR": "vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR",
+       "Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file": "vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file",
+       "Reports an alarm condition when aggregation or correlation central database connection is lost": "vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost",
+       "Reports an alarm condition when a specific failure happens in database operations": "vCCF: Reports an alarm condition when a specific failure happens in database operations",
+       "Reports an alarm condition when DB capacity has been consumed to critical threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold",
+       "Reports an alarm condition when DB capacity has been consumed to major threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold",
+       "Reports an alarm condition when DB capacity has been consumed to minor threshold.": "vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.",
+       "Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem": "vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem",
+       "Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further",
+       "Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further",
+       "Reports an alarm condition when the ACR file loses some ACR records": "vCCF: Reports an alarm condition when the ACR file loses some ACR records",
+       "Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further",
+       "Reports an alarm condition when error occurs in processing CDR/ACR files": "vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files",
+       "Reports an alarm condition when CDR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold",
+       "Reports an alarm condition when CDR partition has been consumed to major threshold.": "vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.",
+       "Reports an alarm condition when CDR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold",
+       "Reports an alarm condition when ACR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold",
+       "Reports an alarm condition when ACR partition has been consumed to major threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold",
+       "Reports an alarm condition when ACR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold",
+       "Reports an alarm condition when CPU consumption reaches critical threshold": "vCCF: Reports an alarm condition when CPU consumption reaches critical threshold",
+       "Reports an alarm condition when CPU consumption reaches major threshold": "vCCF: Reports an alarm condition when CPU consumption reaches major threshold",
+       "Reports an alarm condition when CPU consumption reaches minor threshold": "vCCF: Reports an alarm condition when CPU consumption reaches minor threshold",
+       "Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.": "vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.",
+       "CDR size exceed the platform capacity.": "vCCF: CDR size exceed the platform capacity.",
+       "Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.",
+       "Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.",
+       "External Node of this Cluster is overload": "vCCF: External Node of this Cluster is overload",
+       "bdb_high_latency": "vCCF-vDB: bdb_high_latency",
+       "bdb_high_throughput": "vCCF-vDB: bdb_high_throughput",
+       "bdb_size": "vCCF-vDB: bdb_size",
+       "cluster_inconsistent_rl_sw": "vCCF-vDB: cluster_inconsistent_rl_sw",
+       "cluster_node_remove_abort_failed": "vCCF-vDB: cluster_node_remove_abort_failed",
+       "cluster_node_remove_failed": "vCCF-vDB: cluster_node_remove_failed",
+       "cluster_ram_overcommit": "vCCF-vDB: cluster_ram_overcommit",
+       "cluster_rebalance_failed": "vCCF-vDB: cluster_rebalance_failed",
+       "cluster_too_few_nodes_for_replication": "vCCF-vDB: cluster_too_few_nodes_for_replication",
+       "node_cpu_utilization": "vCCF-vDB: node_cpu_utilization",
+       "node_ephemeral_storage": "vCCF-vDB: node_ephemeral_storage",
+       "node_failed": "vCCF-vDB: node_failed",
+       "node_memory": "vCCF-vDB: node_memory",
+       "node_net_throughput": "vCCF-vDB: node_net_throughput",
+       "node_offline_failed": "vCCF-vDB: node_offline_failed",
+       "node_offline_abort_failed": "vCCF-vDB: node_offline_abort_failed",
+       "node_online_failed": "vCCF-vDB: node_online_failed",
+       "OAM NODE-<OAME-hostname> IS NOT ACTIVE ": "vCCF-vDB: OAM NODE-<OAME-hostname> IS NOT ACTIVE ",
+       "LSS_asdaCommunicationFailure": "vCTS: LSS_asdaCommunicationFailure",
+       "LSS_ccdbCommunicationFailure": "vCTS: LSS_ccdbCommunicationFailure",
+       "LSS_cpiCTS3xxFailRate": "vCTS: LSS_cpiCTS3xxFailRate",
+       "LSS_cpiCTS4xxFailRate": "vCTS: LSS_cpiCTS4xxFailRate",
+       "LSS_cpiCTS5xxFailRate": "vCTS: LSS_cpiCTS5xxFailRate",
+       "LSS_cpiCTS6xxFailRate": "vCTS: LSS_cpiCTS6xxFailRate",
+       "LSS_cpiCTSSIPRetransmitInvite": "vCTS: LSS_cpiCTSSIPRetransmitInvite",
+       "LSS_cpiCTSSIPRetransmitNonInvite": "vCTS: LSS_cpiCTSSIPRetransmitNonInvite",
+       "LSS_glsInvalidCellId": "vCTS: LSS_glsInvalidCellId",
+       "LSS_glsServerUnavailable": "vCTS: LSS_glsServerUnavailable",
+       "LSS_hlrSyncConnection": "vCTS: LSS_hlrSyncConnection",
+       "LSS_hlrSyncQueue": "vCTS: LSS_hlrSyncQueue",
+       "LSS_lispBufferFullExternalLIG": "vCTS: LSS_lispBufferFullExternalLIG",
+       "LSS_prdbConnectWithAlternateFailure": "vCTS: LSS_prdbConnectWithAlternateFailure",
+       "LSS_prdbSyncDataToAlternateFailure": "vCTS: LSS_prdbSyncDataToAlternateFailure",
+       "LSS_preAllocatedResourceOverload": "vCTS: LSS_preAllocatedResourceOverload",
+       "LSS_prifSocketError": "vCTS: LSS_prifSocketError",
+       "LSS_prsCallInstanceExceeded": "vCTS: LSS_prsCallInstanceExceeded",
+       "LSS_prsCpuOverload": "vCTS: LSS_prsCpuOverload",
+       "LSS_prsDatabaseMigrationFailure": "vCTS: LSS_prsDatabaseMigrationFailure",
+       "LSS_prsFailureToConnectWithPRDB": "vCTS: LSS_prsFailureToConnectWithPRDB",
+       "LSS_prsQueueExceeded": "vCTS: LSS_prsQueueExceeded",
+       "LSS_smdiSocketError": "vCTS: LSS_smdiSocketError",
+       "LSS_socketError": "vCTS: LSS_socketError",
+       "LSS_softwareComponentDown": "vCTS: LSS_softwareComponentDown",
+       "LSS_tlsInitError": "vCTS: LSS_tlsInitError",
+       "LSS_usageOfSyncTable": "vCTS: LSS_usageOfSyncTable",
+       "LSS_utHttpProxyConnectionDown ": "vCTS: LSS_utHttpProxyConnectionDown ",
+       "LSS_wpifSocketError": "vCTS: LSS_wpifSocketError",
+       "LSS_acrTemporaryBufferOverload": "vCTS: LSS_acrTemporaryBufferOverload",
+       "LSS_adnsExtendedTTLcaching": "vCTS: LSS_adnsExtendedTTLcaching",
+       "LSS_adnsQueryFailureCaching": "vCTS: LSS_adnsQueryFailureCaching",
+       "LSS_adnsQueueCongestion": "vCTS: LSS_adnsQueueCongestion",
+       "LSS_asdaRequestQueue": "vCTS: LSS_asdaRequestQueue",
+       "LSS_capacityLicenseKeyExpiration": "vCTS: LSS_capacityLicenseKeyExpiration",
+       "LSS_capacityLicenseKeyNearExpiration": "vCTS: LSS_capacityLicenseKeyNearExpiration",
+       "LSS_capacityLicenseKeyValidationError": "vCTS: LSS_capacityLicenseKeyValidationError",
+       "LSS_cardConnectionLost": "vCTS: LSS_cardConnectionLost",
+       "LSS_cpiAlrmCritical": "vCTS: LSS_cpiAlrmCritical",
+       "LSS_cpiAlrmMajor": "vCTS: LSS_cpiAlrmMajor",
+       "LSS_cpiAlrmMinor": "vCTS: LSS_cpiAlrmMinor",
+       "LSS_cpiAlrmWarning": "vCTS: LSS_cpiAlrmWarning",
+       "LSS_cpiAsrtEsc": "vCTS: LSS_cpiAsrtEsc",
+       "LSS_cpiAsrtNonEsc": "vCTS: LSS_cpiAsrtNonEsc",
+       "LSS_cpiAsrtNonEscCritical": "vCTS: LSS_cpiAsrtNonEscCritical",
+       "LSS_cpiAsrtNonEscMajor": "vCTS: LSS_cpiAsrtNonEscMajor",
+       "LSS_cpiAsrtNonEscMinor": "vCTS: LSS_cpiAsrtNonEscMinor",
+       "LSS_cpiAudErrCount": "vCTS: LSS_cpiAudErrCount",
+       "LSS_cpiAudManAct": "vCTS: LSS_cpiAudManAct",
+       "LSS_cpiAudNewEvent": "vCTS: LSS_cpiAudNewEvent",
+       "LSS_cpiCompleteRateAlarm": "vCTS: LSS_cpiCompleteRateAlarm",
+       "LSS_cpiDropMGAllocConnReq": "vCTS: LSS_cpiDropMGAllocConnReq",
+       "LSS_cpiDropRateAlarm": "vCTS: LSS_cpiDropRateAlarm",
+       "LSS_cpiExceptionService": "vCTS: LSS_cpiExceptionService",
+       "LSS_cpiFailRateAlarm": "vCTS: LSS_cpiFailRateAlarm",
+       "LSS_cpiFailSCTPFastRetransIncr": "vCTS: LSS_cpiFailSCTPFastRetransIncr",
+       "LSS_cpiFailSCTPFastRetransRate": "vCTS: LSS_cpiFailSCTPFastRetransRate",
+       "LSS_cpiFailSCTPSRTT1Incr": "vCTS: LSS_cpiFailSCTPSRTT1Incr",
+       "LSS_cpiFailSCTPSRTT2Incr": "vCTS: LSS_cpiFailSCTPSRTT2Incr",
+       "LSS_cpiFailSCTPT3RetransIncr": "vCTS: LSS_cpiFailSCTPT3RetransIncr",
+       "LSS_cpiFailSCTPT3RetransRate": "vCTS: LSS_cpiFailSCTPT3RetransRate",
+       "LSS_cpiFileSysUsage": "vCTS: LSS_cpiFileSysUsage",
+       "LSS_cpiMemAllocFail": "vCTS: LSS_cpiMemAllocFail",
+       "LSS_cpiNumOfLICDRDel": "vCTS: LSS_cpiNumOfLICDRDel",
+       "LSS_cpiReinitServiceSelf": "vCTS: LSS_cpiReinitServiceSelf",
+       "LSS_cpiSIPRetransmitInvite": "vCTS: LSS_cpiSIPRetransmitInvite",
+       "LSS_cpiSIPRetransmitNonInvite": "vCTS: LSS_cpiSIPRetransmitNonInvite",
+       "LSS_cpiSS7DropSCTPPktsRcvd": "vCTS: LSS_cpiSS7DropSCTPPktsRcvd",
+       "LSS_cpiSS7FailSCTPFastRetransRate": "vCTS: LSS_cpiSS7FailSCTPFastRetransRate",
+       "LSS_cpiStabilityAlarm": "vCTS: LSS_cpiStabilityAlarm",
+       "LSS_cpuOverload": "vCTS: LSS_cpuOverload",
+       "LSS_databaseConnectionLost": "vCTS: LSS_databaseConnectionLost",
+       "LSS_databaseReplicationLinkDown": "vCTS: LSS_databaseReplicationLinkDown",
+       "LSS_databaseSizeExhausted": "vCTS: LSS_databaseSizeExhausted",
+       "LSS_dbHighCpuUtilization": "vCTS: LSS_dbHighCpuUtilization",
+       "LSS_dbOffline": "vCTS: LSS_dbOffline",
+       "LSS_dbStatusUnexpected": "vCTS: LSS_dbStatusUnexpected",
+       "LSS_degradedResource": "vCTS: LSS_degradedResource",
+       "LSS_degrow": "vCTS: LSS_degrow",
+       "LSS_deviceServerCxnLost": "vCTS: LSS_deviceServerCxnLost",
+       "LSS_diamLinkDown": "vCTS: LSS_diamLinkDown",
+       "LSS_diamMaxClientsExceeded": "vCTS: LSS_diamMaxClientsExceeded",
+       "LSS_dnsThreshold": "vCTS: LSS_dnsThreshold",
+       "LSS_ethernetError": "vCTS: LSS_ethernetError",
+       "LSS_ethernetLinkDown": "vCTS: LSS_ethernetLinkDown",
+       "LSS_externalConnectivity": "vCTS: LSS_externalConnectivity",
+       "LSS_featureLicenseExpiration": "vCTS: LSS_featureLicenseExpiration",
+       "LSS_featureLicenseKeyNearExpiration": "vCTS: LSS_featureLicenseKeyNearExpiration",
+       "LSS_featureLockValidationError": "vCTS: LSS_featureLockValidationError",
+       "LSS_fqdnError": "vCTS: LSS_fqdnError",
+       "LSS_fru": "vCTS: LSS_fru",
+       "LSS_gatewayCongestion": "vCTS: LSS_gatewayCongestion",
+       "LSS_gatewayForcedOOS": "vCTS: LSS_gatewayForcedOOS",
+       "LSS_gatewayProvisioningError": "vCTS: LSS_gatewayProvisioningError",
+       "LSS_gatewayUnreachable": "vCTS: LSS_gatewayUnreachable",
+       "LSS_gatewayUnregistered": "vCTS: LSS_gatewayUnregistered",
+       "LSS_globalParameterNotFound": "vCTS: LSS_globalParameterNotFound",
+       "LSS_grow": "vCTS: LSS_grow",
+       "LSS_h248MessageBufferDepletion": "vCTS: LSS_h248MessageBufferDepletion",
+       "LSS_hostDown": "vCTS: LSS_hostDown",
+       "LSS_hostReset": "vCTS: LSS_hostReset",
+       "LSS_invalidGateway": "vCTS: LSS_invalidGateway",
+       "LSS_iriLinkDown": "vCTS: LSS_iriLinkDown",
+       "LSS_ldapServerConnectionLost": "vCTS: LSS_ldapServerConnectionLost",
+       "LSS_llcDown": "vCTS: LSS_llcDown",
+       "LSS_logicalLinkDown": "vCTS: LSS_logicalLinkDown",
+       "LSS_logicalLinkNotFound": "vCTS: LSS_logicalLinkNotFound",
+       "LSS_logRotateThreshold": "vCTS: LSS_logRotateThreshold",
+       "LSS_memoryOverload": "vCTS: LSS_memoryOverload",
+       "LSS_nodeConfigFailure": "vCTS: LSS_nodeConfigFailure",
+       "LSS_nodeGroupOOS": "vCTS: LSS_nodeGroupOOS",
+       "LSS_nodeOOS": "vCTS: LSS_nodeOOS",
+       "LSS_nonCompliantFaultGroupMemberState": "vCTS: LSS_nonCompliantFaultGroupMemberState",
+       "LSS_nonCsAddrChannelDepletion": "vCTS: LSS_nonCsAddrChannelDepletion",
+       "LSS_numberOfTuplesInUse": "vCTS: LSS_numberOfTuplesInUse",
+       "LSS_osSecInfoModificationDetected": "vCTS: LSS_osSecInfoModificationDetected",
+       "LSS_osSecInformationMissing": "vCTS: LSS_osSecInformationMissing",
+       "LSS_osSecUnexpectedInformation": "vCTS: LSS_osSecUnexpectedInformation",
+       "LSS_pdnsMySqlReplication": "vCTS: LSS_pdnsMySqlReplication",
+       "LSS_pktCorruptionDetectedViaRCCLANCheck": "vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck",
+       "LSS_platformCommandFailure": "vCTS: LSS_platformCommandFailure",
+       "LSS_pmDataNotCollected": "vCTS: LSS_pmDataNotCollected",
+       "LSS_processDown": "vCTS: LSS_processDown",
+       "LSS_processNotStarted": "vCTS: LSS_processNotStarted",
+       "LSS_provisioningInhibitedMode": "vCTS: LSS_provisioningInhibitedMode",
+       "LSS_rccInhibitedMode": "vCTS: LSS_rccInhibitedMode",
+       "LSS_remotedbLinkDown": "vCTS: LSS_remotedbLinkDown",
+       "LSS_remoteQueryServerFailure": "vCTS: LSS_remoteQueryServerFailure",
+       "LSS_restore": "vCTS: LSS_restore",
+       "LSS_serviceCFGDataTimestampError": "vCTS: LSS_serviceCFGDataTimestampError",
+       "LSS_serviceCommCxnLost": "vCTS: LSS_serviceCommCxnLost",
+       "LSS_serviceOnewayCommunication": "vCTS: LSS_serviceOnewayCommunication",
+       "LSS_sheddingOverload": "vCTS: LSS_sheddingOverload",
+       "LSS_simxml": "vCTS: LSS_simxml",
+       "LSS_sipLinkSetMaxQuarantineList": "vCTS: LSS_sipLinkSetMaxQuarantineList",
+       "LSS_sipLinkSetUnavailable": "vCTS: LSS_sipLinkSetUnavailable",
+       "LSS_sipLinkUnavailable": "vCTS: LSS_sipLinkUnavailable",
+       "LSS_softwareAllocatedResourceOverload": "vCTS: LSS_softwareAllocatedResourceOverload",
+       "LSS_softwareComponentStandbyNotReady": "vCTS: LSS_softwareComponentStandbyNotReady",
+       "LSS_softwareLicense": "vCTS: LSS_softwareLicense",
+       "LSS_svcdegrow": "vCTS: LSS_svcdegrow",
+       "LSS_svcgrow": "vCTS: LSS_svcgrow",
+       "LSS_swVersionMismatch": "vCTS: LSS_swVersionMismatch",
+       "LSS_tftpDownloadCorrupt": "vCTS: LSS_tftpDownloadCorrupt",
+       "LSS_timeStampValueOutOfSystemRange": "vCTS: LSS_timeStampValueOutOfSystemRange",
+       "LSS_transactionHandlerBlockDepletion": "vCTS: LSS_transactionHandlerBlockDepletion",
+       "LSS_upgrade": "vCTS: LSS_upgrade",
+       "SYS_BackupFailure": "vCTS: SYS_BackupFailure",
+       "SYS_Configuration": "vCTS: SYS_Configuration",
+       "SYS_COTRecordTransferFailure": "vCTS: SYS_COTRecordTransferFailure",
+       "SYS_CPM_USERDATA_INCONSITENCY": "vCTS: SYS_CPM_USERDATA_INCONSITENCY",
+       "SYS_CPM_USERDATA_RESTORED": "vCTS: SYS_CPM_USERDATA_RESTORED",
+       "SYS_EventQueueCapacity": "vCTS: SYS_EventQueueCapacity",
+       "SYS_ICMPFailure": "vCTS: SYS_ICMPFailure",
+       "SYS_IPsecConfig": "vCTS: SYS_IPsecConfig",
+       "SYS_LinkDown": "vCTS: SYS_LinkDown",
+       "SYS_NotifyDisabled": "vCTS: SYS_NotifyDisabled",
+       "SYS_NotifyLocked": "vCTS: SYS_NotifyLocked",
+       "SYS_NumTL1MeasThresh": "vCTS: SYS_NumTL1MeasThresh",
+       "SYS_RADIUS_TO_LDAP_FAILURE": "vCTS: SYS_RADIUS_TO_LDAP_FAILURE",
+       "SYS_ROOT_ACCESS_DENIED": "vCTS: SYS_ROOT_ACCESS_DENIED",
+       "SYS_ROOT_FTP_VIOLATION": "vCTS: SYS_ROOT_FTP_VIOLATION",
+       "SYS_ROOT_LOGIN_VIOLATION": "vCTS: SYS_ROOT_LOGIN_VIOLATION",
+       "SYS_ROOT_SSH_LOGIN_VIOLATION": "vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION",
+       "SYS_SetupAAAFailure": "vCTS: SYS_SetupAAAFailure",
+       "SYS_SNETrapOverload": "vCTS: SYS_SNETrapOverload",
+       "SYS_SNMPAuthenticationFailure": "vCTS: SYS_SNMPAuthenticationFailure",
+       "SYS_SNMPFailure": "vCTS: SYS_SNMPFailure",
+       "SYS_SU_TO_ROOT_FAILURE": "vCTS: SYS_SU_TO_ROOT_FAILURE",
+       "SYS_SYSTEMTrapOverload": "vCTS: SYS_SYSTEMTrapOverload",
+       "SYS_ThresholdCrossed": "vCTS: SYS_ThresholdCrossed",
+       "SYS_UndiscoveredObject": "vCTS: SYS_UndiscoveredObject",
+       "SYS_WriteAAAFailure": "vCTS: SYS_WriteAAAFailure",
+       "jnxSpaceDiskUsageRising": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRising",
+       "jnxSpaceDiskUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared",
+       "jnxSpaceSwapUsageRising": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRising",
+       "jnxSpaceSwapUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared",
+       "jnxSpaceCPULARising": "vDBE-EMS-Juniper: jnxSpaceCPULARising",
+       "jnxSpaceCPULARisingCleared": "vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared",
+       "jnxSpaceWebpProxyProcessDown": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown",
+       "jnxSpaceWebpProxyProcessUp": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp",
+       "jnxSpaceNMAProcessDown": "vDBE-EMS-Juniper: jnxSpaceNMAProcessDown",
+       "jnxSpaceNMAProcessUp": "vDBE-EMS-Juniper: jnxSpaceNMAProcessUp",
+       "jnxSpaceJbossProcessDown": "vDBE-EMS-Juniper: jnxSpaceJbossProcessDown",
+       "jnxSpaceJbossProcessUp": "vDBE-EMS-Juniper: jnxSpaceJbossProcessUp",
+       "jnxSpaceMysqlProcessDown": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown",
+       "jnxSpaceMysqlProcessUp": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp",
+       "jnxSpacePostgresqlProcessDown": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown",
+       "jnxSpacePostgresqlProcessUp": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp",
+       "jnxSpaceWatchdogStopped": "vDBE-EMS-Juniper: jnxSpaceWatchdogStopped",
+       "jnxSpaceWatchdogStarted": "vDBE-EMS-Juniper: jnxSpaceWatchdogStarted",
+       "jnxSpaceSNAProcessDown": "vDBE-EMS-Juniper: jnxSpaceSNAProcessDown",
+       "jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp",
+       "jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown",
+       "jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp",
+       " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper:  jnxSpaceNodeRemoval",
+       "jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange",
+       "jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange",
+       "jnxEventTrap": "vDBE-Juniper: jnxEventTrap",
+       "jnxJsFwAuthFailure": "vDBE-Juniper: jnxJsFwAuthFailure",
+       "jnxJsFwAuthServiceUp": "vDBE-Juniper: jnxJsFwAuthServiceUp",
+       "jnxJsFwAuthServiceDown": "vDBE-Juniper: jnxJsFwAuthServiceDown",
+       "jnxJsFwAuthCapacityExceeded": "vDBE-Juniper: jnxJsFwAuthCapacityExceeded",
+       "jnxJsIdpSignatureUpdate": "vDBE-Juniper: jnxJsIdpSignatureUpdate",
+       "jnxJsIdpAttackLog": "vDBE-Juniper: jnxJsIdpAttackLog",
+       "jnxJsSrcNatPoolThresholdStatus": "vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus",
+       "jnxJsNatRuleThresholdStatus": "vDBE-Juniper: jnxJsNatRuleThresholdStatus",
+       "jnxJsScreenAttack": "vDBE-Juniper: jnxJsScreenAttack",
+       "jnxJsScreenCfgChange": "vDBE-Juniper: jnxJsScreenCfgChange",
+       "jnxJsAvPatternUpdateTrap": "vDBE-Juniper: jnxJsAvPatternUpdateTrap",
+       "jnxJsChassisClusterSwitchover": "vDBE-Juniper: jnxJsChassisClusterSwitchover",
+       "jnxJsChClusterIntfTrap": "vDBE-Juniper: jnxJsChClusterIntfTrap",
+       "jnxJsChClusterSpuMismatchTrap": "vDBE-Juniper: jnxJsChClusterSpuMismatchTrap",
+       "jnxJsChClusterWeightTrap": "vDBE-Juniper: jnxJsChClusterWeightTrap",
+       "jnxLicenseGraceExpired": "vDBE-Juniper: jnxLicenseGraceExpired",
+       "jnxLicenseGraceAboutToExpire": "vDBE-Juniper: jnxLicenseGraceAboutToExpire",
+       "jnxLicenseAboutToExpire": "vDBE-Juniper: jnxLicenseAboutToExpire",
+       "jnxLicenseInfringeCumulative": "vDBE-Juniper: jnxLicenseInfringeCumulative",
+       "jnxLicenseInfringeSingle": "vDBE-Juniper: jnxLicenseInfringeSingle",
+       "jnxNatAddrPoolThresholdStatus": "vDBE-Juniper: jnxNatAddrPoolThresholdStatus",
+       "jnxSyslogTrap": "vDBE-Juniper: jnxSyslogTrap",
+       "jnxAccessAuthServiceUp": "vDBE-Juniper: jnxAccessAuthServiceUp",
+       "jnxAccessAuthServiceDown": "vDBE-Juniper: jnxAccessAuthServiceDown",
+       "jnxAccessAuthServerDisabled": "vDBE-Juniper: jnxAccessAuthServerDisabled",
+       "jnxAccessAuthServerEnabled": "vDBE-Juniper: jnxAccessAuthServerEnabled",
+       "jnxAccessAuthAddressPoolHighThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold",
+       "jnxAccessAuthAddressPoolAbateThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold",
+       "jnxAccessAuthAddressPoolOutOfAddresses": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses",
+       "jnxAccessAuthAddressPoolOutOfMemory": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory",
+       "LEVEL_WARNING_CPU": "vMRF: LEVEL_WARNING_CPU",
+       "LEVEL_MAJOR_CPU": "vMRF: LEVEL_MAJOR_CPU",
+       "LEVEL_CRITICAL_CPU": "vMRF: LEVEL_CRITICAL_CPU",
+       "LEVEL_WARNING_MEM": "vMRF: LEVEL_WARNING_MEM",
+       "LEVEL_MAJOR_MEM": "vMRF: LEVEL_MAJOR_MEM",
+       "LEVEL_CRITICAL_MEM": "vMRF: LEVEL_CRITICAL_MEM",
+       "LEVEL_WARNING_DISK": "vMRF: LEVEL_WARNING_DISK",
+       "LEVEL_MAJOR_DISK": "vMRF: LEVEL_MAJOR_DISK",
+       "LEVEL_CRITICAL_DISK": "vMRF: LEVEL_CRITICAL_DISK",
+       "LEVEL_WARNING_RTPBANDWIDTH": "vMRF: LEVEL_WARNING_RTPBANDWIDTH",
+       "LEVEL_MAJOR_RTPBANDWIDTH": "vMRF: LEVEL_MAJOR_RTPBANDWIDTH",
+       "LEVEL_CRITICAL_RTPBANDWIDTH": "vMRF: LEVEL_CRITICAL_RTPBANDWIDTH",
+       "LEVEL_WARNING_RTPINPACKETLOSS": "vMRF: LEVEL_WARNING_RTPINPACKETLOSS",
+       "LEVEL_MAJOR_RTPINPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPINPACKETLOSS",
+       "LEVEL_CRITICAL_RTPINPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS",
+       "LEVEL_WARNING_RTPOUTPACKETLOSS": "vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS",
+       "LEVEL_MAJOR_RTPOUTPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS",
+       "LEVEL_CRITICAL_RTPOUTPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS",
+       "LEVEL_WARNING_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE",
+       "LEVEL_MAJOR_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE",
+       "LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE",
+       "LEVEL_WARNING_TCPLOSSFAILURERATE": "vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE",
+       "LEVEL_MAJOR_TCPLOSSFAILURERATE": "vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE",
+       "LEVEL_CRITICAL_TCPLOSSFAILURERATE": "vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE",
+       "LEVEL_CRITICAL_RTPLINKDOWN": "vMRF: LEVEL_CRITICAL_RTPLINKDOWN",
+       "TARGET_REACHABLE": "vMRF: TARGET_REACHABLE",
+       "PUBLICATION_ERROR": "vMRF: PUBLICATION_ERROR",
+       "REMOTE_SERVER_SYNCHRONIZATION_ERROR": "vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR",
+       "TRANSCODER_TOOL_EXEC_ERROR": "vMRF: TRANSCODER_TOOL_EXEC_ERROR",
+       "CLIENT_SYNCHRONIZATION_ERROR": "vMRF: CLIENT_SYNCHRONIZATION_ERROR",
+       "CLUSTER_UNREACHABLE": "vMRF: CLUSTER_UNREACHABLE",
+       "REMOTE_NODE_OFFLINE": "vMRF: REMOTE_NODE_OFFLINE",
+       "IPADDR_STOPPED": "vMRF: IPADDR_STOPPED",
+       "MRFC_STOPPED": "vMRF: MRFC_STOPPED",
+       "MNGT_STOPPED": "vMRF: MNGT_STOPPED",
+       "IPADDR_STARTED": "vMRF: IPADDR_STARTED",
+       "MRFC_STARTED": "vMRF: MRFC_STARTED",
+       "MNGT_STARTED": "vMRF: MNGT_STARTED",
+       "VOLATTACH_FAILED": "vMRF: VOLATTACH_FAILED",
+       "VOLDETACH_FAILED": "vMRF: VOLDETACH_FAILED",
+       "VOLDEL": "vMRF: VOLDEL",
+       "VOLCORRUPT": "vMRF: VOLCORRUPT",
+       "VOLFOREIGN": "vMRF: VOLFOREIGN",
+       "ACTIVE_ALARM_TABLE_PURGE": "vMRF: ACTIVE_ALARM_TABLE_PURGE",
+       "GENERIC_FORMER_STATELESS": "vMRF: GENERIC_FORMER_STATELESS",
+       "GENERIC_FORMER_STATEFUL": "vMRF: GENERIC_FORMER_STATEFUL",
+       "NO_MORE_ALARM_DESCRIPTION": "vMRF: NO_MORE_ALARM_DESCRIPTION",
+       "SERVICE_PROCESS_ENDS": "vMRF: SERVICE_PROCESS_ENDS",
+       "DEFENSE_STOPPED": "vMRF: DEFENSE_STOPPED",
+       "USER_ACCOUNT_LOCKED": "vMRF: USER_ACCOUNT_LOCKED",
+       "CONNECTION_SQL_NOT_ESTABLISHED": "vMRF: CONNECTION_SQL_NOT_ESTABLISHED",
+       "FALSE_ALARM": "vMRF: FALSE_ALARM",
+       "RADIUS SERVER HS": "vMRF: RADIUS SERVER HS",
+       "DRM_PACKAGER_IS_NOT_AVAILABLE": "vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE",
+       "DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE": "vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE",
+       "ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE": "vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE",
+       "ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION": "vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION",
+       "PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND": "vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND",
+       "COULD_NOT_CONNECT_TO_PVNS_SERVER": "vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER",
+       "HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED": "vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED",
+       "I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE": "vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE",
+       "ERROR_WHILE_REQUESTING_SDP_FILE": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE",
+       "ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION",
+       "NO_STREAMING_RESOURCES": "vMRF: NO_STREAMING_RESOURCES",
+       "NO_STREAMING_MODULES_REGISTERED": "vMRF: NO_STREAMING_MODULES_REGISTERED",
+       "SM_FAILURE": "vMRF: SM_FAILURE",
+       "MISSING_FILE_OR_ENCODER": "vMRF: MISSING_FILE_OR_ENCODER",
+       "INVALID_RANGE": "vMRF: INVALID_RANGE",
+       "THRESHOLD_VALUE_EXCEEDED": "vMRF: THRESHOLD_VALUE_EXCEEDED",
+       "TICKET_QUEUE_FULL": "vMRF: TICKET_QUEUE_FULL",
+       "PARSING_INITIALIZATION_EXCEPTION": "vMRF: PARSING_INITIALIZATION_EXCEPTION",
+       "CUSTOMERCARE_INTERNAL_EXCEPTION": "vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION",
+       "PARSING_EXCEPTION": "vMRF: PARSING_EXCEPTION",
+       "I/O_PROBLEM": "vMRF: I/O_PROBLEM",
+       "INEXISTENT_FILE_OR_FOLDER": "vMRF: INEXISTENT_FILE_OR_FOLDER",
+       "FILE_NOT_IN_XML_FORMAT": "vMRF: FILE_NOT_IN_XML_FORMAT",
+       "SERVICE_STATE_CHANGE": "vMRF: SERVICE_STATE_CHANGE",
+       "MONITORED_FILE_UPDATE_ERROR": "vMRF: MONITORED_FILE_UPDATE_ERROR",
+       "MONITORED_RPM_DELETED_ERROR": "vMRF: MONITORED_RPM_DELETED_ERROR",
+       "MONITORED_RPM_ADDED_ERROR": "vMRF: MONITORED_RPM_ADDED_ERROR",
+       "MONITORED_CHMOD_ERROR": "vMRF: MONITORED_CHMOD_ERROR",
+       "MONITORED_CHOWN_ERROR": "vMRF: MONITORED_CHOWN_ERROR",
+       "PASSWD_ROOT_ERROR": "vMRF: PASSWD_ROOT_ERROR",
+       "PASSWD_ERROR": "vMRF: PASSWD_ERROR",
+       "ROOTKIT_ERROR": "vMRF: ROOTKIT_ERROR",
+       "STARTUP_ERR_UNDEFINED_PORT": "vMRF: STARTUP_ERR_UNDEFINED_PORT",
+       "STARTUP_ERR_FAIL_FIND_HOSTNAME": "vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME",
+       "STARTUP_ERR_CF_MISSING": "vMRF: STARTUP_ERR_CF_MISSING",
+       "STARTUP_ERR_FAILED_TO_OPEN_CF": "vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF",
+       "STARTUP_ERR_FAILED_TO_BIND_PORT": "vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT",
+       "STARTUP_ERR_CFG_UNIT_MISSING": "vMRF: STARTUP_ERR_CFG_UNIT_MISSING",
+       "MCTR_INVALID_CODEC_NAME": "vMRF: MCTR_INVALID_CODEC_NAME",
+       "RTSP_SERVER_FAILURE": "vMRF: RTSP_SERVER_FAILURE",
+       "RTSP_SERVER_QUARANTINE": "vMRF: RTSP_SERVER_QUARANTINE",
+       "TRANSCODING_FAILURE": "vMRF: TRANSCODING_FAILURE",
+       "FILE_CACHE_FAILURE": "vMRF: FILE_CACHE_FAILURE",
+       "STARTUP_ERROR_INITIALIZATION_FAILED": "vMRF: STARTUP_ERROR_INITIALIZATION_FAILED",
+       "CONFERENCE_FAILURE": "vMRF: CONFERENCE_FAILURE",
+       "PLC_DEGRADATION_LOW": "vMRF: PLC_DEGRADATION_LOW",
+       "PLC_DEGRADATION_MEDIUM": "vMRF: PLC_DEGRADATION_MEDIUM",
+       "PLC_DEGRADATION_HIGH": "vMRF: PLC_DEGRADATION_HIGH",
+       "AUDIO_RESYNCH_LOW": "vMRF: AUDIO_RESYNCH_LOW",
+       "AUDIO_RESYNCH_MEDIUM": "vMRF: AUDIO_RESYNCH_MEDIUM",
+       "AUDIO_RESYNCH_HIGH": "vMRF: AUDIO_RESYNCH_HIGH",
+       "VIDEO_RESYNCH_LOW": "vMRF: VIDEO_RESYNCH_LOW",
+       "VIDEO_RESYNCH_MEDIUM": "vMRF: VIDEO_RESYNCH_MEDIUM",
+       "VIDEO_RESYNCH_HIGH": "vMRF: VIDEO_RESYNCH_HIGH",
+       "PLAY_FAILURES_LOW": "vMRF: PLAY_FAILURES_LOW",
+       "PLAY_FAILURES_MEDIUM": "vMRF: PLAY_FAILURES_MEDIUM",
+       "PLAY_FAILURES_HIGH": "vMRF: PLAY_FAILURES_HIGH",
+       "NOT_ENOUGH_FREE_CONFEREE": "vMRF: NOT_ENOUGH_FREE_CONFEREE",
+       "NO_LONGER_FREE_CONFERENCE_ROOM": "vMRF: NO_LONGER_FREE_CONFERENCE_ROOM",
+       "STARTUP_ERROR_FAIL_TO_READ_CF": "vMRF: STARTUP_ERROR_FAIL_TO_READ_CF",
+       "STARTUP_ERROR_SIP_ADAPTER_INIT": "vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT",
+       "STARTUP_ERROR_MONITORING_INIT": "vMRF: STARTUP_ERROR_MONITORING_INIT",
+       "REGISTER_ERROR_FAILURE": "vMRF: REGISTER_ERROR_FAILURE",
+       "DRI_ERROR_FAILURE": "vMRF: DRI_ERROR_FAILURE",
+       "STARTUP_ERROR_STACK_CONFIGURATION": "vMRF: STARTUP_ERROR_STACK_CONFIGURATION",
+       "STARTUP_ERROR_CONF": "vMRF: STARTUP_ERROR_CONF",
+       "STARTUP_ERROR_UNDEFINED_PORT": "vMRF: STARTUP_ERROR_UNDEFINED_PORT",
+       "HOST_REMOVED": "vMRF: HOST_REMOVED",
+       "INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED": "vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED",
+       "STARTUP_ERROR_STACK_CONF": "vMRF: STARTUP_ERROR_STACK_CONF",
+       "STARTUP_ERROR_CONFIGURATION": "vMRF: STARTUP_ERROR_CONFIGURATION",
+       "STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME": "vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME",
+       "LEVEL_WARNING_CALL": "vMRF: LEVEL_WARNING_CALL",
+       "LEVEL_ALARM_MINOR_CALL": "vMRF: LEVEL_ALARM_MINOR_CALL",
+       "LEVEL_ALARM_MAJOR_CALL": "vMRF: LEVEL_ALARM_MAJOR_CALL",
+       "LEVEL_ALARM_MRFPoutOfService": "vMRF: LEVEL_ALARM_MRFPoutOfService",
+       "MRFP_CALL_REJECTED_Threshold #1": "vMRF: MRFP_CALL_REJECTED_Threshold #1",
+       "MRFP_CALL_REJECTED_Threshold #2": "vMRF: MRFP_CALL_REJECTED_Threshold #2",
+       "MRFP_CALL_REJECTED_Threshold #3": "vMRF: MRFP_CALL_REJECTED_Threshold #3",
+       "MRFP_CALL_RETRIED_Threshold #1": "vMRF: MRFP_CALL_RETRIED_Threshold #1",
+       "MRFP_CALL_RETRIED_Threshold #2": "vMRF: MRFP_CALL_RETRIED_Threshold #2",
+       "MRFP_CALL_RETRIED_Threshold #3": "vMRF: MRFP_CALL_RETRIED_Threshold #3",
+       "STARTUP_PUB_FILE_NOT_PRESENT": "vMRF: STARTUP_PUB_FILE_NOT_PRESENT",
+       "STARTUP_INF_FILE_NOT_PRESENT": "vMRF: STARTUP_INF_FILE_NOT_PRESENT",
+       "STARTUP_LIC_FILE_NOT_PRESENT": "vMRF: STARTUP_LIC_FILE_NOT_PRESENT",
+       "GENERIC_HARDWARE_PROBLEM": "vMRF: GENERIC_HARDWARE_PROBLEM",
+       "HARD_DRIVE_PROBLEM": "vMRF: HARD_DRIVE_PROBLEM",
+       "NETWORK_LINK_PROBLEM": "vMRF: NETWORK_LINK_PROBLEM",
+       "POWER_SUPPLY_PROBLEM": "vMRF: POWER_SUPPLY_PROBLEM",
+       "SMART_HARD_DRIVE_PROBLEM": "vMRF: SMART_HARD_DRIVE_PROBLEM",
+       "STARTUP_ERROR": "vMRF: STARTUP_ERROR",
+       "RESOURCE_NOT_ACCESSIBLE": "vMRF: RESOURCE_NOT_ACCESSIBLE",
+       "RESOURCE_ACCESSIBLE": "vMRF: RESOURCE_ACCESSIBLE",
+       "RESOURCE_FULL": "vMRF: RESOURCE_FULL",
+       "DRI_ALARM": "vMRF: DRI_ALARM",
+       "REGISTER_ERROR_CCF": "vMRF: REGISTER_ERROR_CCF",
+       "REGISTER_ERROR_EXTERNAL": "vMRF: REGISTER_ERROR_EXTERNAL",
+       "TIMEOUT_ERROR": "vMRF: TIMEOUT_ERROR",
+       "VXML_ERROR": "vMRF: VXML_ERROR",
+       "A Network Element is no longer available due to a connection failure": "vMVM: A Network Element is no longer available due to a connection failure",
+       "A MetaSphere server is reporting a fault with the configuration of its connection to MetaView": "vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView",
+       "Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []": "vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: [<IP address>]. Real nodes not configured include: []",
+       "Service Assurance Server <IP address> cannot be contacted": "vMVM: Service Assurance Server <IP address> cannot be contacted",
+       "The primary MetaView Director has lost contact with the backup MetaView Director": "vMVM: The primary MetaView Director has lost contact with the backup MetaView Director",
+       "The active server has lost connection to the standby": "vMVM: The active server has lost connection to the standby",
+       "CrashCounter": "vprobes-vBE-Processing: CrashCounter",
+       "IsAlive": "vprobes-vBE-Processing: IsAlive",
+       "SwRestart": "vprobes-vLB: SwRestart",
+       "Repeated exceptions have occurred.": "vSBC-Metaswitch: Repeated exceptions have occurred.",
+       "A licensing limit is close to capacity.": "vSBC-Metaswitch: A licensing limit is close to capacity.",
+       "One or more feature packs have been breached.": "vSBC-Metaswitch: One or more feature packs have been breached.",
+       "The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.",
+       "The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.",
+       "The license on this Perimeta system will expire in less than 4 weeks.": "vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.",
+       "A Perimeta blade has become unlicensed.": "vSBC-Metaswitch: A Perimeta blade has become unlicensed.",
+       "Perimeta is licensed with a bypass certificate, which is valid until the time displayed.": "vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.",
+       "The number of licensed instances exceeded a threshold of the licensed limit.": "vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.",
+       "The software token on the primary Distributed Capacity Manager will expire on the displayed date.": "vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.",
+       "A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.": "vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.",
+       "An adjacency has voice quality alerts.": "vSBC-Metaswitch: An adjacency has voice quality alerts.",
+       "The number of calls being audited is congested.": "vSBC-Metaswitch: The number of calls being audited is congested.",
+       "Session Controller is rejecting calls because there is no valid active call policy set configured.": "vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.",
+       "A call policy set is inactive because it has been misconfigured.": "vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.",
+       "Session Controller is inactive and rejecting calls.": "vSBC-Metaswitch: Session Controller is inactive and rejecting calls.",
+       "Sources have breached minor or major blacklist thresholds.": "vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.",
+       "Sources are blacklisted.": "vSBC-Metaswitch: Sources are blacklisted.",
+       "The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.": "vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.",
+       "A large number of downgrades and bans have been created as a result of blacklisting.": "vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.",
+       "Session Controller is unable to track further sources for blacklisting.": "vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.",
+       "A software protection switch was triggered.": "vSBC-Metaswitch: A software protection switch was triggered.",
+       "A disk area on a processor blade is nearly full.": "vSBC-Metaswitch: A disk area on a processor blade is nearly full.",
+       "Memory use is very high.": "vSBC-Metaswitch: Memory use is very high.",
+       "The primary processor-blade has lost contact with the backup.": "vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.",
+       "An efix or patch has been applied to this system containing diagnostic versions of some software libraries.": "vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.",
+       "A software protection switch (SPS) was triggered. Call and registration state was lost.": "vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.",
+       "The Ethernet Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.",
+       "The Backplane Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.",
+       "A disk area on a processor blade reported an error.": "vSBC-Metaswitch: A disk area on a processor blade reported an error.",
+       "The system is upgrading.": "vSBC-Metaswitch: The system is upgrading.",
+       "An error with NTP functionality has been detected.": "vSBC-Metaswitch: An error with NTP functionality has been detected.",
+       "One or more users are locked out of the system.": "vSBC-Metaswitch: One or more users are locked out of the system.",
+       "The Craft Terminal user FTP directory on a processor blade is nearly full.": "vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.",
+       "A scheduled configuration snapshot has failed.": "vSBC-Metaswitch: A scheduled configuration snapshot has failed.",
+       "The Session Controller is stopping as a result of administrator action.": "vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.",
+       "A Session Controller processor blade is stopping as a result of administrator action.": "vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.",
+       "An object could not be activated because its service address does not exist or is not fully specified.": "vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.",
+       "The hardware on a processor does not meet minimum requirements.": "vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.",
+       "The hardware expectations of the two processors are not the same.": "vSBC-Metaswitch: The hardware expectations of the two processors are not the same.",
+       "The read speed of the main hard disk on a processor blade is too slow.": "vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.",
+       "An error has occurred reading from the hard disk on a processor blade.": "vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.",
+       "Backup and primary processor-blades have an inconsistent system role.": "vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.",
+       "Event: The system encountered a critical error and had to restart.": "vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.",
+       "Event: A RADIUS server failed to respond to an authentication request.": "vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.",
+       "Event: All configured RADIUS servers failed to respond to authentication requests.": "vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.",
+       "Event: The number of CPUs has changed.": "vSBC-Metaswitch: Event: The number of CPUs has changed.",
+       "Event: A user has been automatically deleted": "vSBC-Metaswitch: Event: A user has been automatically deleted",
+       "The primary processor blade has lost management connectivity": "vSBC-Metaswitch: The primary processor blade has lost management connectivity",
+       "Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.": "vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.",
+       "Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.": "vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.",
+       "Perimeta is attempting to resend cached billing records.": "vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.",
+       "The Rf billing cache is full.": "vSBC-Metaswitch: The Rf billing cache is full.",
+       "The inbound call queue is congested.": "vSBC-Metaswitch: The inbound call queue is congested.",
+       "A configured realm group contains realms that are not available to the SBC.": "vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.",
+       "An allowed MSC configuration is not connected to any physical MSCs.": "vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.",
+       "An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.",
+       "No suitable DNS records were found for a peer group's DNS hostname.": "vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.",
+       "One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings": "vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings",
+       "An adjacency has failed as its service network does not match the service network on its associated peer group.": "vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.",
+       "An adjacency has failed as its configured TLS certificate could not be found.": "vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.",
+       "The caching function has not been initialized properly.": "vSBC-Metaswitch: The caching function has not been initialized properly.",
+       "An adjacency has failed as the listen socket could not be created.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.",
+       "An adjacency is congested and may be rejecting calls.": "vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.",
+       "There is an issue with a Diameter peer.": "vSBC-Metaswitch: There is an issue with a Diameter peer.",
+       "A realm is no longer reachable via any configured peers.": "vSBC-Metaswitch: A realm is no longer reachable via any configured peers.",
+       "An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.": "vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.",
+       "One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted": "vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted",
+       "An interface ARP or NDP probe has failed.": "vSBC-Metaswitch: An interface ARP or NDP probe has failed.",
+       "One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.",
+       "One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.",
+       "An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.": "vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.",
+       "An interface device is running above the expected speed.": "vSBC-Metaswitch: An interface device is running above the expected speed.",
+       "An IP address conflict has been detected on a management interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a management interface.",
+       "An interface ICMP probe has failed.": "vSBC-Metaswitch: An interface ICMP probe has failed.",
+       "A High-Availability link has detected a connectivity issue.": "vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.",
+       "An HA-link device is being reported as underspeed.": "vSBC-Metaswitch: An HA-link device is being reported as underspeed.",
+       "An IP address conflict has been detected on a replication interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.",
+       "The Session Controller has started.": "vSBC-Metaswitch: The Session Controller has started.",
+       "A statistic exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic exceeded its configured thresholds.",
+       "One or more statistic has not been retrieved at least 3 times in a row.": "vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.",
+       "A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.": "vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.",
+       "A statistic has exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic has exceeded its configured thresholds.",
+       "A Fallback Operation will soon be started": "vSBG: A Fallback Operation will soon be started",
+       "BRM, Auto Export Backup Failed": "vSBG: BRM, Auto Export Backup Failed",
+       "BRM, Scheduled Backup Failed": "vSBG: BRM, Scheduled Backup Failed",
+       "COM SA, AMF Component Cleanup Failed": "vSBG: COM SA, AMF Component Cleanup Failed",
+       "COM SA, AMF Component Instantiation Failed": "vSBG: COM SA, AMF Component Instantiation Failed",
+       "COM SA, AMF SI Unassigned": "vSBG: COM SA, AMF SI Unassigned",
+       "COM SA, CLM Cluster Node Unavailable": "vSBG: COM SA, CLM Cluster Node Unavailable",
+       "COM SA, MDF Detected Model Error": "vSBG: COM SA, MDF Detected Model Error",
+       "COM SA, Proxy Status of a Component Changed to Unproxied": "vSBG: COM SA, Proxy Status of a Component Changed to Unproxied",
+       "File Management, Number of Files in FileGroup Exceeded": "vSBG: File Management, Number of Files in FileGroup Exceeded",
+       "File Management, Max Size in FileGroup Exceeded": "vSBG: File Management, Max Size in FileGroup Exceeded",
+       "LOTC Disk Replication Communication": "vSBG: LOTC Disk Replication Communication",
+       "LOTC Disk Replication Consistency": "vSBG: LOTC Disk Replication Consistency",
+       "LOTC Disk Usage": "vSBG: LOTC Disk Usage",
+       "LOTC memory Usage": "vSBG: LOTC memory Usage",
+       "LOTC Time Synchronization": "vSBG: LOTC Time Synchronization",
+       "SBG, BGF Control Link Down": "vSBG: SBG, BGF Control Link Down",
+       "SBG, BGF Control Link Disabled": "vSBG: SBG, BGF Control Link Disabled",
+       "SBG, BGF Control Link Enabled": "vSBG: SBG, BGF Control Link Enabled",
+       "SBG, BGF Control Link Remote Locked": "vSBG: SBG, BGF Control Link Remote Locked",
+       "SBG, Charging Data Storage Maximum Records Reached": "vSBG: SBG, Charging Data Storage Maximum Records Reached",
+       "SBG, Charging Server Rejects Charging Data": "vSBG: SBG, Charging Server Rejects Charging Data",
+       "SBG, Excessive Packet Rate Detected ": "vSBG: SBG, Excessive Packet Rate Detected ",
+       "SBG, High Amount of Malformed Packets Received": "vSBG: SBG, High Amount of Malformed Packets Received",
+       "SBG, High Amount of STUN Packets Detected": "vSBG: SBG, High Amount of STUN Packets Detected",
+       "SBG, High Amount of TCP SYN Packets Received": "vSBG: SBG, High Amount of TCP SYN Packets Received",
+       "SBG, High Amount of UDP Packets Received ": "vSBG: SBG, High Amount of UDP Packets Received ",
+       "SBG, IP Address Blocked Due to Excessive Packet Rate": "vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate",
+       "SBG, Lost Connectivity to Diameter Server": "vSBG: SBG, Lost Connectivity to Diameter Server",
+       "SBG, Mated Pair out of Service": "vSBG: SBG, Mated Pair out of Service",
+       "SBG, Network Unavailable for Media Handling": "vSBG: SBG, Network Unavailable for Media Handling",
+       "SBG, Non-emergency Call Released to Free Resources for Emergency Call": "vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call",
+       "SBG, Not Enough Disk Space for Storing Charging Data": "vSBG: SBG, Not Enough Disk Space for Storing Charging Data",
+       "SBG, Payload Mated Pair Failure": "vSBG: SBG, Payload Mated Pair Failure",
+       "SBG, Payload Processor Failure": "vSBG: SBG, Payload Processor Failure",
+       "SBG, Processor Overloaded": "vSBG: SBG, Processor Overloaded",
+       "SBG, Registered User Set in Quarantine": "vSBG: SBG, Registered User Set in Quarantine",
+       "SBG, Registration Contacts Exceed Configured Threshold": "vSBG: SBG, Registration Contacts Exceed Configured Threshold",
+       "SBG, Sequential Restart Initiated": "vSBG: SBG, Sequential Restart Initiated",
+       "SBG, SIP Abuse Detected": "vSBG: SBG, SIP Abuse Detected",
+       "SBG, SIP Network Locked": "vSBG: SBG, SIP Network Locked",
+       "SBG, SIP Next Hop Reachable": "vSBG: SBG, SIP Next Hop Reachable",
+       "SBG, SIP Next Hop Unreachable": "vSBG: SBG, SIP Next Hop Unreachable",
+       "SBG, SIP Request Rejected by Network Throttling": "vSBG: SBG, SIP Request Rejected by Network Throttling",
+       "SBG, TLS Certificate Imported": "vSBG: SBG, TLS Certificate Imported",
+       "SBG, Trace Recording Session Number Limit Reached": "vSBG: SBG, Trace Recording Session Number Limit Reached",
+       "SBG, Trace Session Deactivated": "vSBG: SBG, Trace Session Deactivated",
+       "SBG, Trace Session Times Out": "vSBG: SBG, Trace Session Times Out",
+       "SBG, Unknown Media Type or Payload Type": "vSBG: SBG, Unknown Media Type or Payload Type"
+}
diff --git a/src/test/resources/clds/templates/ui-location-default.json b/src/test/resources/clds/templates/ui-location-default.json
new file mode 100644 (file)
index 0000000..c0043d9
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "DC1": "Data Center 1",
+       "DC2": "Data Center 2",
+       "DC3": "Data Center 3"
+}
index 01b6ff1..4db8add 100644 (file)
 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ###
 
-info.build.artifact=@project.artifactId@
-info.build.name=@project.name@
-info.build.description=@project.description@
-info.build.version=@project.version@
-
 ### Set the port for HTTP or HTTPS protocol (Controlled by Spring framework, only one at a time).
 ### (See below for the parameter 'server.http.port' if you want to have both enabled) 
 ### To have only HTTP, keep the lines server.ssl.* commented
@@ -64,28 +59,6 @@ server.contextPath=/
 #Modified engine-rest applicationpath
 spring.profiles.active=clamp-default,clamp-spring-authentication
 
-#The max number of active threads in this pool
-server.tomcat.max-threads=200
-#The minimum number of threads always kept alive
-server.tomcat.min-Spare-Threads=25
-#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
-server.tomcat.max-idle-time=60000
-
-#Servlet context parameters
-server.context_parameters.p-name=value #context parameter with p-name as key and value as value.
-
-camel.springboot.consumer-template-cache-size=1000
-camel.springboot.producer-template-cache-size=1000
-camel.springboot.jmx-enabled=false
-camel.defaultthreadpool.poolsize=10
-camel.defaultthreadpool.maxpoolsize=20
-camel.defaultthreadpool.maxqueuesize=1000
-camel.defaultthreadpool.keepaliveTime=60
-camel.defaultthreadpool.rejectpolicy=CallerRuns
-#camel.springboot.xmlRoutes = false
-camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml
-#camel.springboot.typeConversion = false
-
 #clds datasource connection details
 spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver
 spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647\r
@@ -100,22 +73,3 @@ spring.datasource.cldsdb.initialSize=0
 # Automatically test whether a connection provided is good or not
 spring.datasource.cldsdb.testOnBorrow=true
 spring.datasource.cldsdb.ignoreExceptionOnPreLoad=true
-
-#Async Executor default Parameters
-async.core.pool.size=10
-async.max.pool.size=20
-async.queue.capacity=500
-
-org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.properties
-org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties
-org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json
-org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties
-
-#Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case !
-CLDS_PERMISSION_TYPE_CL=permission-type-cl
-CLDS_PERMISSION_TYPE_CL_MANAGE=permission-type-cl-manage
-CLDS_PERMISSION_TYPE_CL_EVENT=permission-type-cl-event
-CLDS_PERMISSION_TYPE_FILTER_VF=permission-type-filter-vf
-CLDS_PERMISSION_TYPE_TEMPLATE=permission-type-template
-#This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
-CLDS_PERMISSION_INSTANCE=dev
\ No newline at end of file