2 * Copyright 2017 Huawei Technologies Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.vnfsdk.marketplace.onboarding.hooks.validatelifecycle;
19 import java.util.ArrayList;
20 import java.util.List;
22 import org.onap.vnfsdk.marketplace.common.CommonConstant;
23 import org.onap.vnfsdk.marketplace.common.FileUtil;
24 import org.onap.vnfsdk.marketplace.common.ToolUtil;
25 import org.onap.vnfsdk.marketplace.db.entity.PackageData;
26 import org.onap.vnfsdk.marketplace.entity.EnumOperationStatus;
27 import org.onap.vnfsdk.marketplace.entity.EnumResult;
28 import org.onap.vnfsdk.marketplace.onboarding.entity.OnBoardingOperResult;
29 import org.onap.vnfsdk.marketplace.onboarding.entity.OnBoardingResult;
30 import org.onap.vnfsdk.marketplace.onboarding.entity.OnBoradingRequest;
31 import org.onap.vnfsdk.marketplace.onboarding.entity.ResultKey;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
35 public class LifecycleTestHook
37 private static final Logger logger = LoggerFactory.getLogger(LifecycleTestHook.class);
40 * Start Executing Function test
41 * @param onBoradingReq
44 public int exec(OnBoradingRequest onBoradingReq)
46 logger.info("OnboradingRequest Lifecycle Request received for Package:" + onBoradingReq.getCsarId() + " Path:"+ onBoradingReq.getPackagePath());
48 buildResultPath(onBoradingReq);
50 OnBoardingResult olifecycleTestResult = new OnBoardingResult();
51 buildlifecycleTestResponse(onBoradingReq,olifecycleTestResult);
52 updateResult(olifecycleTestResult);
54 if(null == onBoradingReq.getCsarIdCatalouge() || onBoradingReq.getCsarIdCatalouge().isEmpty())
56 olifecycleTestResult.setOperFinished(true);
57 olifecycleTestResult.setOperStatus(EnumResult.FAIL.getIndex());
58 buildFuncTestResponse(olifecycleTestResult,CommonConstant.LifeCycleTest.LIFECYCLE_TEST_EXEC,EnumOperationStatus.FAILED.getIndex());
59 updateResult(olifecycleTestResult);
60 return EnumResult.FAIL.getIndex();
63 LifeCycleTestReq oLifeCycleTestReq = new LifeCycleTestReq();
64 populateLifeCycleReq(onBoradingReq,oLifeCycleTestReq);
67 //STEP 2: Execute Life Cycle Test and Get Result Back !!!!
68 //---------------------------------------------------------
69 String lifecycleTestResultKey = LifecycleTestExceutor.execlifecycleTest(onBoradingReq,oLifeCycleTestReq);
70 if(null == lifecycleTestResultKey)
72 olifecycleTestResult.setOperFinished(true);
73 olifecycleTestResult.setOperStatus(EnumResult.FAIL.getIndex());
74 buildFuncTestResponse(olifecycleTestResult,CommonConstant.LifeCycleTest.LIFECYCLE_TEST_EXEC,EnumOperationStatus.FAILED.getIndex());
75 updateResult(olifecycleTestResult);
76 return EnumResult.FAIL.getIndex();
79 olifecycleTestResult.setOperFinished(true);
80 olifecycleTestResult.setOperStatus(EnumResult.SUCCESS.getIndex());
81 buildFuncTestResponse(olifecycleTestResult,CommonConstant.LifeCycleTest.LIFECYCLE_TEST_EXEC,EnumOperationStatus.SUCCESS.getIndex());
82 updateResult(olifecycleTestResult);
84 //STEP 3: Store FuncTest key to get FuncTest Results
85 //-------------------------------------------------
86 storelifecycleResultKey(onBoradingReq,lifecycleTestResultKey);
88 return (olifecycleTestResult.getOperStatus() == EnumResult.SUCCESS.getIndex())
89 ? EnumResult.SUCCESS.getIndex() : EnumResult.FAIL.getIndex();
92 private void populateLifeCycleReq(OnBoradingRequest onBoradingReq, LifeCycleTestReq oLifeCycleTestReq)
94 oLifeCycleTestReq.setCsarId(onBoradingReq.getCsarId());
95 oLifeCycleTestReq.setLabVimId(oLifeCycleTestReq.getLabVimId());
97 List<String> vimIds = new ArrayList<String>();
98 oLifeCycleTestReq.setVimIds(vimIds);
103 * @param onBoradingReq
105 private void buildResultPath(OnBoradingRequest onBoradingReq)
107 String filePath = getResultStorePath() + File.separator + onBoradingReq.getCsarId();
108 if(!FileUtil.checkFileExists(filePath))
110 FileUtil.createDirectory(filePath);
115 * Store Function test Execution Results
116 * @param oFuncTestResult
118 private void updateResult(OnBoardingResult oFuncTestResult)
120 //STore Results to DB(Currently we will make JSON and Store JSON to Package Path)
121 //-------------------------------------------------------------------------------
122 logger.info("Lifecycle test Status for Package Id:" + oFuncTestResult.getCsarId() + ", Result:" + ToolUtil.objectToString(oFuncTestResult));
123 String filePath = getResultStorePath() + File.separator + oFuncTestResult.getCsarId() + File.separator + "lifecycleTest.json";
124 FileUtil.writeJsonDatatoFile(filePath,oFuncTestResult);
128 * Build Function Test Response
129 * @param onBoradingReq
130 * @param oFuncTestResult
132 private void buildlifecycleTestResponse(OnBoradingRequest onBoradingReq, OnBoardingResult oTestResult)
134 oTestResult.setOperFinished(false);
135 oTestResult.setCsarId(onBoradingReq.getCsarId());
136 oTestResult.setOperTypeId(CommonConstant.LifeCycleTest.LIFECYCLE_TEST_OPERTYPE_ID);
138 OnBoardingOperResult lifecycleTestExec = new OnBoardingOperResult();
139 lifecycleTestExec.setOperId(CommonConstant.LifeCycleTest.LIFECYCLE_TEST_EXEC);
140 lifecycleTestExec.setStatus(EnumOperationStatus.NOTSTARTED.getIndex());
142 List<OnBoardingOperResult> operResult = new ArrayList<OnBoardingOperResult>();
143 operResult.add(lifecycleTestExec);
144 oTestResult.setOperResult(operResult);
147 public static OnBoardingResult getOnBoardingResult(PackageData packageData)
149 String filePath = getResultStorePath() + File.separator + packageData.getCsarId() +File.separator + "lifecycleTest.json";
150 logger.info("On Boarding Status for Package Id:" + packageData.getCsarId() + ", Result Path:" + filePath);
152 return (OnBoardingResult)FileUtil.readJsonDatafFromFile(filePath,OnBoardingResult.class);
156 * Store Function Test Result key
157 * @param onBoradingReq
160 private void storelifecycleResultKey(OnBoradingRequest onBoradingReq,String resultKey)
162 //Currently we will make JSON and Store JSON to Package Path)
163 //-------------------------------------------------------------------------------
164 String filePath = getResultStorePath() + File.separator + onBoradingReq.getCsarId() + File.separator + "lifecycleTestResultKey.json";
166 logger.info("Function test Results Key for Package Id:" + onBoradingReq.getCsarId() + ", Key:" + resultKey + " Path" + filePath);
168 ResultKey oResultKey = new ResultKey();
169 oResultKey.setCsarId(onBoradingReq.getCsarId());
170 oResultKey.setOperTypeId(CommonConstant.LifeCycleTest.LIFECYCLE_TEST_OPERTYPE_ID);
171 oResultKey.setKey(resultKey);
173 FileUtil.writeJsonDatatoFile(filePath,oResultKey);
176 private static String getResultStorePath()
178 return org.onap.vnfsdk.marketplace.filemanage.http.ToolUtil.getHttpServerAbsolutePath();
181 private void buildFuncTestResponse(OnBoardingResult oFuncTestResult, String opreKey, int operStatusVal)
183 List<OnBoardingOperResult> operStatusList = oFuncTestResult.getOperResult();
184 for(OnBoardingOperResult operObj: operStatusList)
186 if(operObj.getOperId().equalsIgnoreCase(opreKey))
188 operObj.setStatus(operStatusVal);