<groupId>org.onap.dcaegen2.services.components</groupId>
<artifactId>slice-analysis-ms</artifactId>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.0.2-SNAPSHOT</version>
<name>dcaegen2-services-slice-analysis-ms</name>
<description>Network slice PM analyser</description>
<packaging>jar</packaging>
minPercentageChange = jsonObject.get("sliceanalysisms.minPercentageChange").getAsInt();
initialDelaySeconds = jsonObject.get("sliceanalysisms.initialDelaySeconds").getAsLong();
- aafUsername = jsonObject.get("aafUsername").getAsString();
- aafPassword = jsonObject.get("aafPassword").getAsString();
-
+ if(jsonObject.get("aafUsername") == null) {
+ aafUsername = null;
+ }
+ else {
+ aafUsername = jsonObject.get("aafUsername").getAsString();
+ }
+ if(jsonObject.get("aafPassword") == null) {
+ aafPassword = null;
+ }
+ else {
+ aafPassword = jsonObject.get("aafPassword").getAsString();
+ }
log.info("configuration from CBS {}", this);
}
}
import org.onap.slice.analysis.ms.configdb.IConfigDbService;
import org.onap.slice.analysis.ms.models.Configuration;
+import org.onap.slice.analysis.ms.models.SubCounter;
import org.onap.slice.analysis.ms.utils.BeanUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private IConfigDbService configDbService;
private SnssaiSamplesProcessor snssaiSamplesProcessor;
private long initialDelaySec;
+ private int samples;
/**
* Default constructor.
super();
this.pmDataQueue = BeanUtil.getBean(PmDataQueue.class);
this.configDbService = BeanUtil.getBean(IConfigDbService.class);
- this.snssaiSamplesProcessor = BeanUtil.getBean(SnssaiSamplesProcessor.class);
this.initialDelaySec = Configuration.getInstance().getInitialDelaySeconds();
+ this.samples = Configuration.getInstance().getSamples();
}
/**
@Override
public void run() {
boolean done = false;
- String snssai = "";
boolean result = false;
+ String snssai = "";
List<String> nfs = null;
while (!done) {
try {
Thread.sleep(initialDelaySec);
+ log.info("Starting Consumer Thread");
snssai = pmDataQueue.getSnnsaiFromQueue();
if (!snssai.equals("")) {
log.info("Consumer thread processing data for s-nssai {}",snssai);
pmDataQueue.putSnssaiToQueue(snssai);
log.error("Exception caught while fetching nfs of snssai {}, {}", snssai, e.getMessage());
}
- if(nfs != null) {
+ if(nfs != null && checkForEnoughSamples(nfs, snssai)) {
+ this.snssaiSamplesProcessor = BeanUtil.getBean(SnssaiSamplesProcessor.class);
result = snssaiSamplesProcessor.processSamplesOfSnnsai(snssai, nfs);
if(!result) {
log.info("Not enough samples to process for {}",snssai);
}
}
}
+
+ /**
+ * Checks whether enough samples are available for the network functions
+ */
+ public boolean checkForEnoughSamples(List<String> nfs, String snssai) {
+ for(String nf : nfs) {
+ if(! pmDataQueue.checkSamplesInQueue(new SubCounter(nf, snssai), samples)) {
+ log.info("Not enough samples to process for network function {} of snssai {}", nf, snssai);
+ pmDataQueue.putSnssaiToQueue(snssai);
+ return false;
+ }
+ }
+ return true;
+ }
}