2 * Copyright 2016-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.
17 package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.process;
20 import java.util.concurrent.ConcurrentHashMap;
22 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.VnfmUtil;
23 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.adapter.impl.AdapterResourceManager;
24 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant;
25 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.csm.vnf.VnfMgrVnfm;
26 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.dao.inf.VnfmDao;
27 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.entity.Vnfm;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
31 import net.sf.json.JSONException;
32 import net.sf.json.JSONObject;
35 * Provide function for instantiate or terminate VNF
39 * @version NFVO 0.5 Aug 24, 2016
43 private static final Logger LOG = LoggerFactory.getLogger(VnfMgr.class);
45 private VnfmDao vnfmDao;
47 public void setVnfmDao(VnfmDao vnfmDao) {
48 this.vnfmDao = vnfmDao;
56 * "vnfInstanceId":"5",
59 * "numberOfSteps":"1",
60 * "additionalParam":{}
63 * @param vnfInstanceId
66 public JSONObject scaleVNF(JSONObject vnfObject, String vnfmId, String vnfInstanceId) {
67 JSONObject restJson = new JSONObject();
68 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
71 if(vnfObject.isNullObject() || vnfObject.isEmpty()) {
75 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
76 LOG.info("vnfm info:" + vnfmObjcet);
77 if(vnfmObjcet.isNullObject()) {
78 LOG.error("function=scaleVNF,can't find vnfm from db by vnfmId=" + vnfmId);
81 restJson = (new VnfMgrVnfm()).scaleVnf(vnfObject, vnfmObjcet, vnfmId, vnfInstanceId);
82 } catch(JSONException e) {
83 LOG.error("function=scaleVNF, msg=JSONException occurs, e={}.", e);
90 * Provide function for instantiate VNF
98 public JSONObject addVnf(JSONObject vnfObject, String vnfmId) {
99 JSONObject restJson = new JSONObject();
100 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
103 if(vnfObject.isNullObject() || vnfObject.isEmpty()) {
107 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
109 if(vnfmObjcet.isNullObject()) {
113 Map<String, String> conMap = new ConcurrentHashMap<>(Constant.DEFAULT_COLLECTION_SIZE);
114 conMap.put("csarid", vnfObject.getString("vnfPackageId"));
115 conMap.put("vnfmid", vnfmId);
116 conMap.put("vnfDescriptorId", vnfObject.getString("vnfDescriptorId"));
118 JSONObject resObjcet = (new AdapterResourceManager()).uploadVNFPackage(null, conMap);
120 if(resObjcet.getInt(Constant.RETCODE) == Constant.REST_FAIL) {
124 JSONObject csmBody = transferVnfBody(vnfObject, resObjcet, vnfmId);
125 restJson = (new VnfMgrVnfm()).createVnf(csmBody, vnfmObjcet);
126 saveVnfInfo(restJson, resObjcet);
127 } catch(JSONException e) {
128 LOG.error("function=addVnf, msg=JSONException occurs, e={}.", e);
135 * Provide function for terminate VNF
144 public JSONObject deleteVnf(String vnfId, String vnfmId, JSONObject vnfObject) {
145 LOG.warn("function=deleteVnf ,msg=enter to delete a vnf, vnfId:{}, vnfmId:{}", vnfId, vnfmId);
146 JSONObject restJson = new JSONObject();
147 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
149 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
150 if(vnfmObjcet.isNullObject()) {
151 LOG.error("function=deleteVnf, msg=vnfm not exists, vnfmId: {}", vnfmId);
155 restJson = (new VnfMgrVnfm()).removeVnf(vnfmObjcet, vnfId, vnfObject);
156 } catch(JSONException e) {
157 LOG.error("function=deleteVnf, msg=JSONException occurs, e={}.", e);
163 * Provide function for get VNF
171 public JSONObject getVnf(String vnfId, String vnfmId) {
172 LOG.warn("function=getVnf ,msg=enter to get a vnf, vnfId:{}, vnfmId:{}", vnfId, vnfmId);
173 JSONObject restJson = new JSONObject();
174 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
176 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
177 if(vnfmObjcet.isNullObject()) {
178 LOG.error("function=getVnf, msg=vnfm not exists, vnfmId: {}", vnfmId);
182 restJson = (new VnfMgrVnfm()).getVnf(vnfmObjcet, vnfId);
184 return restJson.getInt(Constant.RETCODE) == Constant.REST_FAIL ? restJson : getVnfBody(restJson);
186 } catch(JSONException e) {
187 LOG.error("function=getVnf, msg=JSONException occurs, e={}.", e);
188 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
193 private JSONObject getVnfBody(JSONObject restJson) {
195 JSONObject vnfInfoJson = new JSONObject();
196 JSONObject basicInfoJson = new JSONObject();
198 JSONObject retJson = restJson.getJSONArray("data").getJSONObject(0);
200 basicInfoJson.put("vnfInstanceId", retJson.getString("id"));
201 basicInfoJson.put("vnfInstanceName", retJson.getString("vapp_name"));
202 basicInfoJson.put("vnfInstanceDescription", "vFW");
204 Vnfm vnfm = vnfmDao.getVnfmById(retJson.getString("id"));
205 basicInfoJson.put("vnfdId", vnfm == null ? "" : vnfm.getVnfdId());
206 basicInfoJson.put("vnfdPackageId", vnfm == null ? "" : vnfm.getVnfPackageId());
207 basicInfoJson.put("version", vnfm == null ? "" : vnfm.getVersion());
208 basicInfoJson.put("vnfProvider", "hw");
209 basicInfoJson.put("vnfType", retJson.get("vapp_type"));
210 basicInfoJson.put("vnfStatus", retJson.getString(Constant.STATUS));
212 vnfInfoJson.put("vnfInfo", basicInfoJson);
213 vnfInfoJson.put(Constant.RETCODE, Constant.REST_SUCCESS);
215 } catch(JSONException e) {
216 LOG.error("function=getVnf, msg=JSONException occurs, e={}.", e);
217 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
219 } catch(IndexOutOfBoundsException e) {
220 LOG.error("function=getVnf, msg=IndexOutOfBoundsException occurs, e={}.", e);
221 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
226 @SuppressWarnings("unchecked")
227 private JSONObject transferVnfBody(JSONObject vnfObject, JSONObject resObject, String vnfmId) {
228 JSONObject restJson = new JSONObject();
229 JSONObject vappIfno = new JSONObject();
230 restJson.put("vnfd_id", resObject.getString("vnfdId"));
231 restJson.put("plan_id", resObject.getOrDefault("planId", ""));
232 restJson.put("plan_name", resObject.getOrDefault("planName", ""));
233 restJson.put("vapp_name", vnfObject.get("vnfInstanceName"));
234 restJson.put("project_id", vnfmId);
235 restJson.put("parameters", resObject.getJSONObject("parameters"));
236 restJson.put("nfvo_id", "");
237 restJson.put("location", "");
238 restJson.put("vnfm_id", vnfmId);
239 vappIfno.put("vapp_info", restJson);
244 * Provide function for get job
252 public JSONObject getJob(String jobId, String vnfmId) {
253 LOG.warn("function=getJob ,msg=enter to get a job, vnfId:{}", jobId);
254 JSONObject restJson = new JSONObject();
255 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
257 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
258 if(vnfmObjcet.isNullObject()) {
259 LOG.error("function=getJob, msg=vnfm not exists, vnfmId: {}", vnfmId);
263 restJson = (new VnfMgrVnfm()).getJob(vnfmObjcet, jobId);
265 } catch(JSONException e) {
266 LOG.error("function=getJob, msg=JSONException occurs, e={}.", e);
267 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
273 * Provide function for save vnfInfo
280 public void saveVnfInfo(JSONObject vnfObject, JSONObject resObject) {
281 LOG.warn("function=saveVnfInfo , vnfObject:{}", vnfObject);
282 if(vnfObject.getInt(Constant.RETCODE) == Constant.REST_SUCCESS) {
283 Vnfm info = new Vnfm();
284 info.setId(vnfObject.getJSONObject("data").getString("vnfInstanceId"));
285 info.setVersion(resObject.getString("vnfdVersion"));
286 info.setVnfdId(resObject.getString("vnfdId"));
287 info.setVnfPackageId("");
289 vnfmDao.insertVnfm(info);
290 } catch(Exception e) {
291 LOG.error("function=saveVnfInfo, msg=ServiceException occurs, e={}.", e);
300 * @param vnfInstanceId
305 public JSONObject healVnf(JSONObject jsonObject, String vnfInstanceId, String vnfmId) {
306 JSONObject restJson = new JSONObject();
307 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
309 if(jsonObject.isNullObject() || jsonObject.isEmpty()) {
313 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
314 LOG.info("vnfm info:" + vnfmObjcet);
315 if(vnfmObjcet.isNullObject()) {
316 LOG.error("function=scaleVNF,can't find vnfm from db by vnfmId=" + vnfmId);
319 restJson = (new VnfMgrVnfm()).healVnf(jsonObject, vnfmObjcet, vnfmId, vnfInstanceId);