diff options
author | victor.gao <victor.gao@huawei.com> | 2017-08-17 22:39:16 +0800 |
---|---|---|
committer | victor.gao <victor.gao@huawei.com> | 2017-08-17 22:39:16 +0800 |
commit | 0523050a87a5f0a1801c9cd9dcf8b67b5818b4e1 (patch) | |
tree | 512f6d0c54babc79f14ecbdd7675551530f798c7 /huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java | |
parent | b2509c2e4a1dae7722c7b91703400e79269bdca5 (diff) |
Update vfc svnfm driver pom
Update groupid and re-trigger vnfm driver build job
Change-Id: Ib5d52c98eb03d357636a2ba7b9fa5121ed1d0525
Issue-Id:VFC-81
Signed-off-by: victor.gao <victor.gao@huawei.com>
Diffstat (limited to 'huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java')
-rw-r--r-- | huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java new file mode 100644 index 00000000..18de1c02 --- /dev/null +++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/vnf/VnfMgrVnfm.java @@ -0,0 +1,224 @@ +/* + * Copyright 2016-2017 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.csm.vnf; + +import net.sf.json.JSONArray; + +import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.ResultRequestUtil; +import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant; +import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.ParamConstants; +import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.csm.inf.InterfaceVnfMgr; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import net.sf.json.JSONException; +import net.sf.json.JSONObject; + +import javax.print.attribute.standard.ReferenceUriSchemesSupported; + +/** + * create or terminate VNF to M + * <br/> + * + * @author + * @version NFVO 0.5 Aug 24, 2016 + */ +public class VnfMgrVnfm implements InterfaceVnfMgr { + + private static final Logger LOG = LoggerFactory.getLogger(VnfMgrVnfm.class); + + @Override + public JSONObject scaleVnf(JSONObject vnfObject, JSONObject vnfmObject, String vnfmId, String vnfInstanceId) { + LOG.warn("function=scaleVnf, msg=enter to scale a vnf"); + JSONObject restJson = new JSONObject(); + restJson.put(Constant.RETCODE, Constant.REST_FAIL); + String path = String.format(ParamConstants.VNF_SCALE, vnfInstanceId); + + int scaleType = getScaleType(vnfObject.getString("type")); + //build request json object + JSONObject paramJson = new JSONObject(); + JSONObject scaleInfo = new JSONObject(); + JSONArray vduList = new JSONArray(); + JSONObject vdu = new JSONObject(); + vdu.put("vdu_type",this.getVduType(vnfmObject,vnfInstanceId));//TODO:set vdu_type + vdu.put("h_steps",vnfObject.get("numberOfSteps")); + vduList.add(vdu); + scaleInfo.put("vnf_id",vnfInstanceId); + scaleInfo.put("scale_type",0); + scaleInfo.put("scale_action",scaleType); + scaleInfo.put("vdu_list",vduList); + if(scaleType == 0){//scale_in + JSONArray vmList = new JSONArray(); + try { + JSONObject additionalParam = vnfObject.getJSONObject("additionalParam"); + vmList = additionalParam.getJSONArray("vm_list"); + }catch (JSONException e) { + LOG.error("the param 'additionalParam' or 'vm_list' not found,please check it",e); + } + scaleInfo.put("vm_list",vmList); + } + paramJson.put("scale_info",scaleInfo); + JSONObject queryResult = ResultRequestUtil.call(vnfmObject, path, Constant.PUT, paramJson.toString(),Constant.CERTIFICATE); + LOG.info("SCALE execute result:"+queryResult.toString()); + try { + int statusCode = queryResult.getInt(Constant.RETCODE); + + if(statusCode == Constant.HTTP_CREATED || statusCode == Constant.HTTP_OK) { + restJson.put(Constant.RETCODE, Constant.REST_SUCCESS); + JSONObject resultObj = new JSONObject(); + resultObj.put("jobId", vnfInstanceId + "_" + Constant.PUT); + restJson.put("data", resultObj); + } else { + LOG.error("function=scaleVnf, msg=send create vnf msg to csm get wrong status: " + statusCode); + } + + } catch(JSONException e) { + LOG.error("function=scaleVnf, msg=parse scale vnf return data occoured JSONException, e={}.", e); + } + + return restJson; + } + + + private String getVduType(JSONObject vnfmObject, String vnfInstanceId){ + String vduType = ""; + try { + JSONObject queryResult = ResultRequestUtil.call(vnfmObject, String.format(ParamConstants.VNF_GET_VMINFO, vnfInstanceId), Constant.GET, null,Constant.CERTIFICATE); + LOG.info("getVduType result="+queryResult); + vduType = queryResult.getJSONObject("data").getJSONArray("vms").getJSONObject(0).getString("vdu_type"); + } catch (Exception e) { + LOG.error("get vdu_type failed.",e); + } + LOG.info("vdu_type="+vduType); + return vduType; + } + private int getScaleType(String type){ + if("SCALE_OUT".equalsIgnoreCase(type)){ + return 1; + }else if("SCALE_IN".equalsIgnoreCase(type)){ + return 0; + } + return -1; + } + @Override + public JSONObject createVnf(JSONObject subJsonObject, JSONObject vnfmObject) { + LOG.info("function=createVnf, msg=enter to create a vnf"); + LOG.info("createVnf csm request body :"+subJsonObject); + JSONObject restJson = new JSONObject(); + restJson.put(Constant.RETCODE, Constant.REST_FAIL); + String path = ParamConstants.VNF_INSTANCE + Constant.ROARAND; + + JSONObject queryResult = ResultRequestUtil.call(vnfmObject, path, Constant.POST, subJsonObject.toString(),Constant.CERTIFICATE); + LOG.info("createVnf csm response content:"+queryResult); + try { + int statusCode = queryResult.getInt(Constant.RETCODE); + + if(statusCode == Constant.HTTP_CREATED) { + restJson.put(Constant.RETCODE, Constant.REST_SUCCESS); + JSONObject appInfo = JSONObject.fromObject(queryResult.getString("data")).getJSONObject("app_info"); + JSONObject resultObj = new JSONObject(); + resultObj.put("vnfInstanceId", appInfo.getString("id")); + resultObj.put("jobId", appInfo.getString("id") + "_" + Constant.POST); + restJson.put("data", resultObj); + } else { + LOG.error("function=createVnf, msg=send create vnf msg to csm get wrong status: " + statusCode); + } + + } catch(JSONException e) { + LOG.error("function=createVnf, msg=parse create vnf return data occoured JSONException, e={}.", e); + } + + return restJson; + } + + @Override + public JSONObject removeVnf(JSONObject vnfmObject, String vnfId, JSONObject vnfObject) { + LOG.warn("function=removeVnf, msg=enter to remove a vnf: {}", vnfId); + JSONObject restJson = new JSONObject(); + restJson.put(Constant.RETCODE, Constant.REST_FAIL); + + JSONObject queryResult = ResultRequestUtil.call(vnfmObject, + String.format(ParamConstants.VNF_INSTANCE_DEL, vnfId) + Constant.ROARAND, Constant.DELETE, null,Constant.CERTIFICATE); + + int statusCode = queryResult.getInt(Constant.RETCODE); + + if(statusCode == Constant.HTTP_NOCONTENT) { + restJson.put(Constant.RETCODE, Constant.REST_SUCCESS); + JSONObject resultObj = new JSONObject(); + resultObj.put("jobId", vnfId + "_" + Constant.DELETE); + restJson.put("data", resultObj); + } else { + LOG.error("function=removeVnf, msg=send remove vnf msg to csm get wrong status: {}", statusCode); + } + + return restJson; + } + + @Override + public JSONObject getVnf(JSONObject vnfmObject, String vnfId) { + LOG.warn("function=getVnf, msg=enter to get a vnf: {}", vnfId); + JSONObject restJson = new JSONObject(); + restJson.put(Constant.RETCODE, Constant.REST_FAIL); + + JSONObject queryResult = ResultRequestUtil.call(vnfmObject, + String.format(ParamConstants.VNF_INSTANCE_GET, vnfId) + Constant.ROARAND + "&type=status", Constant.GET, + null,Constant.CERTIFICATE); + + int statusCode = queryResult.getInt("retCode"); + + if(statusCode == Constant.HTTP_OK || statusCode == Constant.HTTP_CREATED) { + if(null == (queryResult.get("data"))) { + LOG.warn("function=getVnf, msg=query is null {}", queryResult.get("data")); + return restJson; + } + restJson.put(Constant.RETCODE, Constant.REST_SUCCESS); + restJson.put("data", JSONObject.fromObject(queryResult.getString("data")).getJSONArray("basic")); + } else { + LOG.error("function=getVnf, msg=send get vnf msg to csm get wrong status: {}", statusCode); + } + + return restJson; + } + + @Override + public JSONObject getJob(JSONObject vnfmObject, String jobId) { + LOG.warn("function=getJob, msg=enter to get a job: {}", jobId); + JSONObject restJson = new JSONObject(); + restJson.put(Constant.RETCODE, Constant.REST_FAIL); + + String vnfId = jobId.split("_")[0]; + JSONObject queryResult = ResultRequestUtil.call(vnfmObject, + String.format(ParamConstants.VNF_INSTANCE_GET, vnfId) + Constant.ROARAND + "&type=status", Constant.GET, + null,Constant.CERTIFICATE); + + int statusCode = queryResult.getInt("retCode"); + + if(statusCode == Constant.HTTP_OK || statusCode == Constant.HTTP_CREATED) { + + if((queryResult.get("data")) == null) { + LOG.warn("function=getJob, msg=query is null {}", queryResult.get("data")); + return restJson; + } + restJson.put(Constant.RETCODE, Constant.REST_SUCCESS); + restJson.put("data", JSONObject.fromObject(queryResult.getString("data")).getJSONArray("basic")); + } else { + LOG.error("function=getJob, msg=send get vnf msg to csm get wrong status: {}", statusCode); + } + + return restJson; + } +} |