}
public static VFCRequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation,
- Policy policy) {
+ Policy policy, AAIGETVnfResponse vnfResponse) {
// Construct an VFC request
VFCRequest request = new VFCRequest();
- request.nsInstanceId = getAAIServiceInstance(onset);
- request.requestId = onset.requestID;
+ String serviceInstance = onset.AAI.get("service-instance.service-instance-id");
+ if (serviceInstance == null || "".equals(serviceInstance))
+ {
+ if(vnfResponse == null) //if the response is null, we haven't queried
+ {
+ vnfResponse = getAAIServiceInstance(onset); //This does the AAI query since we haven't already
+ if (vnfResponse == null)
+ return null;
+ }
+ serviceInstance = vnfResponse.serviceId;
+ }
+ request.nsInstanceId = serviceInstance;
+ request.requestId = onset.requestID;
request.healRequest = new VFCHealRequest();
request.healRequest.vnfInstanceId = onset.AAI.get("generic-vnf.vnf-id");
request.healRequest.cause = operation.message;
-
request.healRequest.additionalParams = new VFCHealAdditionalParams();
- if ("Restart".equalsIgnoreCase(policy.getRecipe())) {
- request.healRequest.additionalParams.action = "restartvm";
- request.healRequest.additionalParams.actionInfo = new VFCHealActionVmInfo();
- request.healRequest.additionalParams.actionInfo.vmid = onset.AAI.get("vserver.vserver-id");
- request.healRequest.additionalParams.actionInfo.vmname = onset.AAI.get("vserver.vserver-name");
- } else {
- request = null;
+
+ switch (policy.getRecipe().toLowerCase()) {
+ case "restart":
+ request.healRequest.additionalParams.action = "restartvm";
+ request.healRequest.additionalParams.actionInfo = new VFCHealActionVmInfo();
+ request.healRequest.additionalParams.actionInfo.vmid = onset.AAI.get("vserver.vserver-id");
+ request.healRequest.additionalParams.actionInfo.vmname = onset.AAI.get("vserver.vserver-name");
+ break;
+ default:
+ return null;
}
return request;
}
- private static String getAAIServiceInstance(VirtualControlLoopEvent event) {
- AAIGETVnfResponse response;
+
+ private static AAIGETVnfResponse getAAIServiceInstance(VirtualControlLoopEvent event) {
+ AAIGETVnfResponse response = null;
UUID requestID = event.requestID;
- String serviceInstance = event.AAI.get("service-instance.service-instance-id");
String vnfName = event.AAI.get("generic-vnf.vnf-name");
String vnfID = event.AAI.get("generic-vnf.vnf-id");
-
- if (serviceInstance == null) {
- String aaiUrl = PolicyEngine.manager.getEnvironmentProperty("aai.url");
- String aaiUsername = PolicyEngine.manager.getEnvironmentProperty("aai.username");
- String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
- try {
- if (vnfName != null) {
- String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=";
- response = AAIManager.getQueryByVnfName(url, aaiUsername, aaiPassword, requestID, vnfName);
- if (response != null) {
- serviceInstance = response.serviceId;
- }
- } else if (vnfID != null) {
- String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf/";
- response = AAIManager.getQueryByVnfID(url, aaiUsername, aaiPassword, requestID, vnfID);
- if (response != null) {
- serviceInstance = response.serviceId;
- }
- } else {
- logger.error("getAAIServiceInstance failed");
-
- }
- } catch (Exception e) {
- logger.error("getAAIServiceInstance exception: ", e);
+ String aaiUrl = PolicyEngine.manager.getEnvironmentProperty("aai.url");
+ String aaiUsername = PolicyEngine.manager.getEnvironmentProperty("aai.username");
+ String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
+ try {
+ if (vnfName != null) {
+ String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=";
+ response = AAIManager.getQueryByVnfName(url, aaiUsername, aaiPassword, requestID, vnfName);
+ } else if (vnfID != null) {
+ String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf/";
+ response = AAIManager.getQueryByVnfID(url, aaiUsername, aaiPassword, requestID, vnfID);
+ } else {
+ logger.error("getAAIServiceInstance failed");
}
+ } catch (Exception e) {
+ logger.error("getAAIServiceInstance exception: ", e);
}
- return serviceInstance;
+ return response;
}
}
private LinkedList<ControlLoopOperation> controlLoopHistory = new LinkedList<>();
private ControlLoopOperationManager currentOperation = null;
private transient TargetLock targetLock = null;
- private static AAIGETVnfResponse vnfResponse = null;
- private static AAIGETVserverResponse vserverResponse = null;
+ private AAIGETVnfResponse vnfResponse = null;
+ private AAIGETVserverResponse vserverResponse = null;
private static String aaiHostURL;
private static String aaiUser;
private static String aaiPassword;
- private static String aaiGetQueryByVserver;
- private static String aaiGetQueryByVnfID;
- private static String aaiGetQueryByVnfName;
private static Collection<String> requiredAAIKeys = new ArrayList<>();
static {
public NEW_EVENT_STATUS onNewEvent(VirtualControlLoopEvent event) {
try {
- ControlLoopEventManager.checkEventSyntax(event);
+ this.checkEventSyntax(event);
if (event.closedLoopEventStatus == ControlLoopEventStatus.ONSET) {
//
// Check if this is our original ONSET
return vserverResponse;
}
- public static void checkEventSyntax(VirtualControlLoopEvent event) throws ControlLoopException {
+ public void checkEventSyntax(VirtualControlLoopEvent event) throws ControlLoopException {
if (event.closedLoopEventStatus == null ||
(event.closedLoopEventStatus != ControlLoopEventStatus.ONSET &&
event.closedLoopEventStatus != ControlLoopEventStatus.ABATED)) {