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.openo.baseservice.remoteservice.exception.ServiceException;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
32 import net.sf.json.JSONException;
33 import net.sf.json.JSONObject;
36 * Provide function for instantiate or terminate VNF
40 * @version NFVO 0.5 Aug 24, 2016
44 private static final Logger LOG = LoggerFactory.getLogger(VnfMgr.class);
46 private VnfmDao vnfmDao;
48 public void setVnfmDao(VnfmDao vnfmDao) {
49 this.vnfmDao = vnfmDao;
57 * "vnfInstanceId":"5",
60 * "numberOfSteps":"1",
61 * "additionalParam":{}
64 * @param vnfInstanceId
67 public JSONObject scaleVNF(JSONObject vnfObject, String vnfmId, String vnfInstanceId) {
68 JSONObject restJson = new JSONObject();
69 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
72 if(vnfObject.isNullObject() || vnfObject.isEmpty()) {
76 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
77 LOG.info("vnfm info:"+vnfmObjcet);
78 if(vnfmObjcet.isNullObject()) {
79 LOG.error("function=scaleVNF,can't find vnfm from db by vnfmId="+vnfmId);
82 restJson = (new VnfMgrVnfm()).scaleVnf(vnfObject, vnfmObjcet, vnfmId, vnfInstanceId);
83 } catch(JSONException e) {
84 LOG.error("function=scaleVNF, msg=JSONException occurs, e={}.", e);
91 * Provide function for instantiate VNF
99 public JSONObject addVnf(JSONObject vnfObject, String vnfmId) {
100 JSONObject restJson = new JSONObject();
101 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
104 if(vnfObject.isNullObject() || vnfObject.isEmpty()) {
108 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
110 if(vnfmObjcet.isNullObject()) {
114 Map<String, String> conMap = new ConcurrentHashMap<>(Constant.DEFAULT_COLLECTION_SIZE);
115 conMap.put("csarid", vnfObject.getString("vnfPackageId"));
116 conMap.put("vnfmid", vnfmId);
117 conMap.put("vnfDescriptorId",vnfObject.getString("vnfDescriptorId"));
119 JSONObject resObjcet = (new AdapterResourceManager()).uploadVNFPackage(null, conMap);
121 if(resObjcet.getInt(Constant.RETCODE) == Constant.REST_FAIL) {
125 JSONObject csmBody = transferVnfBody(vnfObject, resObjcet, vnfmId);
126 restJson = (new VnfMgrVnfm()).createVnf(csmBody, vnfmObjcet);
127 saveVnfInfo(restJson, resObjcet);
128 } catch(JSONException e) {
129 LOG.error("function=addVnf, msg=JSONException occurs, e={}.", e);
136 * Provide function for terminate VNF
145 public JSONObject deleteVnf(String vnfId, String vnfmId, JSONObject vnfObject) {
146 LOG.warn("function=deleteVnf ,msg=enter to delete a vnf, vnfId:{}, vnfmId:{}", vnfId, vnfmId);
147 JSONObject restJson = new JSONObject();
148 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
150 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
151 if(vnfmObjcet.isNullObject()) {
152 LOG.error("function=deleteVnf, msg=vnfm not exists, vnfmId: {}", vnfmId);
156 restJson = (new VnfMgrVnfm()).removeVnf(vnfmObjcet, vnfId, vnfObject);
157 } catch(JSONException e) {
158 LOG.error("function=deleteVnf, msg=JSONException occurs, e={}.", e);
164 * Provide function for get VNF
172 public JSONObject getVnf(String vnfId, String vnfmId) {
173 LOG.warn("function=getVnf ,msg=enter to get a vnf, vnfId:{}, vnfmId:{}", vnfId, vnfmId);
174 JSONObject restJson = new JSONObject();
175 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
177 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
178 if(vnfmObjcet.isNullObject()) {
179 LOG.error("function=getVnf, msg=vnfm not exists, vnfmId: {}", vnfmId);
183 restJson = (new VnfMgrVnfm()).getVnf(vnfmObjcet, vnfId);
185 return restJson.getInt(Constant.RETCODE) == Constant.REST_FAIL ? restJson : getVnfBody(restJson);
187 } catch(JSONException e) {
188 LOG.error("function=getVnf, msg=JSONException occurs, e={}.", e);
189 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
194 private JSONObject getVnfBody(JSONObject restJson) {
196 JSONObject vnfInfoJson = new JSONObject();
197 JSONObject basicInfoJson = new JSONObject();
199 JSONObject retJson = restJson.getJSONArray("data").getJSONObject(0);
201 basicInfoJson.put("vnfInstanceId", retJson.getString("id"));
202 basicInfoJson.put("vnfInstanceName", retJson.getString("vapp_name"));
203 basicInfoJson.put("vnfInstanceDescription", "vFW");
205 Vnfm vnfm = vnfmDao.getVnfmById(retJson.getString("id"));
206 basicInfoJson.put("vnfdId", vnfm == null ? "" : vnfm.getVnfdId());
207 basicInfoJson.put("vnfdPackageId", vnfm == null ? "" : vnfm.getVnfPackageId());
208 basicInfoJson.put("version", vnfm == null ? "" : vnfm.getVersion());
209 basicInfoJson.put("vnfProvider", "hw");
210 basicInfoJson.put("vnfType", retJson.get("vapp_type"));
211 basicInfoJson.put("vnfStatus", retJson.getString(Constant.STATUS));
213 vnfInfoJson.put("vnfInfo", basicInfoJson);
214 vnfInfoJson.put(Constant.RETCODE, Constant.REST_SUCCESS);
216 } catch(JSONException e) {
217 LOG.error("function=getVnf, msg=JSONException occurs, e={}.", e);
218 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
220 } catch(IndexOutOfBoundsException e) {
221 LOG.error("function=getVnf, msg=IndexOutOfBoundsException occurs, e={}.", e);
222 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
227 @SuppressWarnings("unchecked")
228 private JSONObject transferVnfBody(JSONObject vnfObject, JSONObject resObject, String vnfmId) {
229 JSONObject restJson = new JSONObject();
230 JSONObject vappIfno = new JSONObject();
231 restJson.put("vnfd_id", resObject.getString("vnfdId"));
232 restJson.put("plan_id", resObject.getOrDefault("planId", ""));
233 restJson.put("plan_name", resObject.getOrDefault("planName", ""));
234 restJson.put("vapp_name", vnfObject.get("vnfInstanceName"));
235 restJson.put("project_id", vnfmId);
236 restJson.put("parameters", resObject.getJSONObject("parameters"));
237 restJson.put("nfvo_id", "");
238 restJson.put("location", "");
239 restJson.put("vnfm_id", vnfmId);
240 vappIfno.put("vapp_info", restJson);
245 * Provide function for get job
253 public JSONObject getJob(String jobId, String vnfmId) {
254 LOG.warn("function=getJob ,msg=enter to get a job, vnfId:{}", jobId);
255 JSONObject restJson = new JSONObject();
256 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
258 JSONObject vnfmObjcet = VnfmUtil.getVnfmById(vnfmId);
259 if(vnfmObjcet.isNullObject()) {
260 LOG.error("function=getJob, msg=vnfm not exists, vnfmId: {}", vnfmId);
264 restJson = (new VnfMgrVnfm()).getJob(vnfmObjcet, jobId);
266 } catch(JSONException e) {
267 LOG.error("function=getJob, msg=JSONException occurs, e={}.", e);
268 restJson.put(Constant.RETCODE, Constant.REST_FAIL);
274 * Provide function for save vnfInfo
281 public void saveVnfInfo(JSONObject vnfObject, JSONObject resObject) {
282 LOG.warn("function=saveVnfInfo , vnfObject:{}", vnfObject);
283 if(vnfObject.getInt(Constant.RETCODE) == Constant.REST_SUCCESS) {
284 Vnfm info = new Vnfm();
285 info.setId(vnfObject.getJSONObject("data").getString("vnfInstanceId"));
286 info.setVersion(resObject.getString("vnfdVersion"));
287 info.setVnfdId(resObject.getString("vnfdId"));
288 info.setVnfPackageId("");
290 vnfmDao.insertVnfm(info);
291 } catch(Exception e) {
292 LOG.error("function=saveVnfInfo, msg=ServiceException occurs, e={}.", e);