2 * Copyright 2016-2017, Nokia Corporation.
3 * Modifications Copyright (C) 2019 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package org.onap.vfc.nfvo.driver.vnfm.svnfm.adaptor;
20 import java.util.ArrayList;
21 import java.util.List;
23 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMHealVnfRequest;
24 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMHealVnfResponse;
25 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.inf.CbamMgmrInf;
26 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants;
27 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonEnum;
28 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonEnum.LifecycleOperation;
29 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.bean.VnfmJobExecutionInfo;
30 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.mapper.VnfmJobExecutionMapper;
31 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.NslcmGrantVnfRequest;
32 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.entity.AddResource;
33 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.entity.ResourceDefinition;
34 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.inf.NslcmMgmrInf;
35 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.HealVnfRequest;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38 import org.springframework.beans.factory.annotation.Autowired;
40 public class HealVnfContinueRunnable implements Runnable {
41 private static final Logger logger = LoggerFactory.getLogger(HealVnfContinueRunnable.class);
44 private CbamMgmrInf cbamMgmr;
46 private NslcmMgmrInf nslcmMgmr;
48 private HealVnfRequest driverRequest;
49 private String vnfInstanceId;
51 private String vnfmId;
53 private VnfmJobExecutionMapper jobDbMgmr;
55 private Driver2CbamRequestConverter requestConverter;
59 public static class HealVnfContinueRunnableBuilder {
60 private String inVnfmId;
61 private HealVnfRequest driverRequest;
62 private String vnfInstanceId;
64 private NslcmMgmrInf nslcmMgmr;
65 private CbamMgmrInf cbamMgmr;
66 private Driver2CbamRequestConverter requestConverter;
67 private VnfmJobExecutionMapper dbManager;
69 public HealVnfContinueRunnableBuilder setInVnfmId(String inVnfmId) {
70 this.inVnfmId = inVnfmId;
74 public HealVnfContinueRunnableBuilder setDriverRequest(HealVnfRequest driverRequest) {
75 this.driverRequest = driverRequest;
79 public HealVnfContinueRunnableBuilder setVnfInstanceId(String vnfInstanceId) {
80 this.vnfInstanceId = vnfInstanceId;
84 public HealVnfContinueRunnableBuilder setJobId(String jobId) {
89 public HealVnfContinueRunnableBuilder setNslcmMgmr(NslcmMgmrInf nslcmMgmr) {
90 this.nslcmMgmr = nslcmMgmr;
94 public HealVnfContinueRunnableBuilder setCbamMgmr(CbamMgmrInf cbamMgmr) {
95 this.cbamMgmr = cbamMgmr;
99 public HealVnfContinueRunnableBuilder setRequestConverter(Driver2CbamRequestConverter requestConverter) {
100 this.requestConverter = requestConverter;
104 public HealVnfContinueRunnableBuilder setDbManager(VnfmJobExecutionMapper dbManager) {
105 this.dbManager = dbManager;
109 public HealVnfContinueRunnable build() {
110 return new HealVnfContinueRunnable(this);
117 public HealVnfContinueRunnable(HealVnfContinueRunnableBuilder builder) {
118 this.driverRequest = builder.driverRequest;
119 this.vnfInstanceId = builder.vnfInstanceId;
120 this.nslcmMgmr = builder.nslcmMgmr;
121 this.cbamMgmr = builder.cbamMgmr;
122 this.requestConverter = builder.requestConverter;
123 this.jobId = builder.jobId;
124 this.jobDbMgmr = builder.dbManager;
125 this.vnfmId = builder.inVnfmId;
128 private void handleGrant(){
130 NslcmGrantVnfRequest grantRequest = buildNslcmGrantVnfRequest();
131 nslcmMgmr.grantVnf(grantRequest);
132 } catch (Exception e) {
133 logger.error("HealVnfContinueRunnable --> handleGrant error.", e);
144 private CBAMHealVnfResponse handleHeal() {
145 CBAMHealVnfResponse cbamResponse = null;
147 CBAMHealVnfRequest modifyReq = requestConverter.healReqConvert();
148 cbamResponse = cbamMgmr.healVnf(modifyReq, vnfInstanceId);
149 handleCbamHealResponse(cbamResponse, jobId);
150 } catch (Exception e) {
151 logger.error("HealVnfContinueRunnable --> handleHeal error.", e);
157 private void handleCbamHealResponse(CBAMHealVnfResponse cbamResponse, String jobId) {
158 VnfmJobExecutionInfo jobInfo = jobDbMgmr.findOne(Long.parseLong(jobId));
160 jobInfo.setVnfmExecutionId(cbamResponse.getId());
161 if(CommonEnum.OperationStatus.FAILED == cbamResponse.getStatus()) {
162 jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_ERROR);
165 jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_PROCESSING);
167 jobDbMgmr.update(jobInfo);
170 private NslcmGrantVnfRequest buildNslcmGrantVnfRequest() {
171 NslcmGrantVnfRequest request = new NslcmGrantVnfRequest();
173 request.setVnfInstanceId(vnfInstanceId);
174 request.setLifecycleOperation(LifecycleOperation.Heal);
175 request.setJobId(jobId);
177 ResourceDefinition resource = getFreeVnfResource();
178 List<ResourceDefinition> resourceList = new ArrayList<>();
179 resourceList.add(resource);
180 request.setRemoveResource(resourceList);
185 private ResourceDefinition getFreeVnfResource() {
186 ResourceDefinition def = new ResourceDefinition();
187 def.setVnfInstanceId(vnfInstanceId);
189 List<AddResource> resources = new ArrayList<>();
190 AddResource res = new AddResource();
193 res.setResourceDefinitionId(2);
195 def.setAddResource(resources);
199 public void setDriverRequest(HealVnfRequest driverRequest) {
200 this.driverRequest = driverRequest;
203 public void setVnfInstanceId(String vnfInstanceId) {
204 this.vnfInstanceId = vnfInstanceId;
207 public void setJobId(String jobId) {
211 public void setRequestConverter(Driver2CbamRequestConverter requestConverter) {
212 this.requestConverter = requestConverter;
215 public void setVnfmId(String inVnfmId) {
216 this.vnfmId = inVnfmId;