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.resmanagement.service.dao.impl.aai;
19 import java.util.ArrayList;
20 import java.util.List;
23 import org.apache.commons.lang.StringUtils;
24 import org.onap.vfc.nfvo.resmanagement.common.conf.Config;
25 import org.onap.vfc.nfvo.resmanagement.common.constant.UrlConstant;
26 import org.onap.vfc.nfvo.resmanagement.common.util.RestfulUtil;
27 import org.onap.vfc.nfvo.resmanagement.common.util.request.RequestUtil;
28 import org.onap.vfc.nfvo.resmanagement.common.util.restclient.RestfulParametes;
29 import org.onap.vfc.nfvo.resmanagement.common.util.restclient.RestfulResponse;
30 import org.onap.vfc.nfvo.resmanagement.service.dao.inf.VnfDao;
31 import org.onap.vfc.nfvo.resmanagement.service.entity.VnfEntity;
33 import net.sf.json.JSONArray;
34 import net.sf.json.JSONObject;
36 public class VnfAaiDaoImpl implements VnfDao {
38 private static int VNF_AAI_DAO_SUCCESS = 1;
40 private static int VNF_AAI_DAO_FAIL = -1;
43 public List<VnfEntity> getVnfs(Map<String, Object> condition) {
44 ArrayList<VnfEntity> vnfList = new ArrayList<>();
46 if (condition.containsKey("id")) {
47 VnfEntity vnf = getVnf((String)condition.get("id"));
52 RestfulParametes restfulParametes = new RestfulParametes();
53 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
55 RestfulResponse response = RestfulUtil.getRestfulResponse(
56 Config.getHost() +":" + Config.getPort() + UrlConstant.GENERIC_VNFS_URL, restfulParametes, "get");
58 if(response.isSuccess()) {
59 JSONObject jsonObject = JSONObject.fromObject(response.getResponseContent());
60 JSONArray jsonArray = jsonObject.getJSONArray("generic-vnf");
62 for(int i = 0; i < jsonArray.size(); i++) {
63 JSONObject genericVnf = jsonArray.getJSONObject(i);
64 VnfEntity entityFromAai = VnfEntity.toEntityFromAai(genericVnf);
65 vnfList.add(updateVnfInfo(entityFromAai, genericVnf));
72 private VnfEntity updateVnfInfo(VnfEntity vnfEntity, JSONObject jsonObject) {
73 updateVnfmInfo(vnfEntity, jsonObject);
74 updateNsInfo(vnfEntity, jsonObject);
78 private VnfEntity updateVnfmInfo(VnfEntity vnfEntity, JSONObject jsonObject) {
79 if(!jsonObject.has("relationship-list")) {
83 JSONArray relList = (JSONArray)((JSONObject)jsonObject.get("relationship-list")).get("relationship");
84 for(int i = 0; i < relList.size(); i++) {
85 JSONObject obj = relList.getJSONObject(i);
86 if("esr-vnfm".equals(obj.getString("related-to"))) {
87 String relatedLink = obj.getString("related-link");
89 RestfulParametes restfulParametes = new RestfulParametes();
90 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
91 RestfulResponse restfulResponse = RestfulUtil
92 .getRestfulResponse(Config.getHost() +":" + Config.getPort() + relatedLink, restfulParametes, "get");
94 if(restfulResponse.isSuccess()) {
95 VnfEntity.updateEntityWithVnfmInfo(vnfEntity,
96 JSONObject.fromObject(restfulResponse.getResponseContent()));
104 private VnfEntity updateNsInfo(VnfEntity vnfEntity, JSONObject jsonObject) {
105 if(!jsonObject.has("relationship-list")) {
109 JSONArray relList = (JSONArray)((JSONObject)jsonObject.get("relationship-list")).get("relationship");
110 for(int i = 0; i < relList.size(); i++) {
111 JSONObject obj = relList.getJSONObject(i);
112 if("service-instance".equals(obj.getString("related-to"))) {
113 String relatedLink = obj.getString("related-link");
115 RestfulParametes restfulParametes = new RestfulParametes();
116 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
117 RestfulResponse restfulResponse = RestfulUtil
118 .getRestfulResponse(Config.getHost() +":" + Config.getPort() + relatedLink, restfulParametes, "get");
120 if(restfulResponse.isSuccess()) {
121 VnfEntity.updateEntityWithNsInfo(vnfEntity,
122 JSONObject.fromObject(restfulResponse.getResponseContent()));
131 public VnfEntity getVnf(String id) {
132 VnfEntity vnfEntity = null;
133 RestfulParametes restfulParametes = new RestfulParametes();
134 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
136 RestfulResponse response = RestfulUtil.getRestfulResponse(
137 Config.getHost() +":" + Config.getPort() + UrlConstant.GENERIC_VNF_URL + id, restfulParametes, "get");
139 if(response.isSuccess()) {
140 JSONObject jsonObject = JSONObject.fromObject(response.getResponseContent());
141 vnfEntity = VnfEntity.toEntityFromAai(jsonObject);
142 updateVnfInfo(vnfEntity, jsonObject);
147 private int checkVnfmEntity(VnfEntity vnfEntity) {
148 RestfulParametes restfulParametes = new RestfulParametes();
150 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
151 // restfulParametes.setRawData(vnfEntity.toEsrVnfmStringForAai());
152 RestfulResponse response = RestfulUtil.getRestfulResponse(
153 Config.getHost() +":" + Config.getPort() + UrlConstant.ESR_VNFM_URL + vnfEntity.getVnfmId(),
154 restfulParametes, "get");
155 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
158 private int checkServiceInstanceEntity(VnfEntity vnfEntity) {
159 RestfulParametes restfulParametes = new RestfulParametes();
161 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
162 RestfulResponse response = RestfulUtil.getRestfulResponse(
163 Config.getHost() +":" + Config.getPort() + UrlConstant.CUSTOMER_URL + Config.getGlobalCustomerId() + UrlConstant.SERVICE_SUBSCRIPTION_URL
164 + Config.getServiceType() + UrlConstant.SERVICE_INSTANCE_URL + vnfEntity.getNsId(), restfulParametes, "get");
165 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
169 private int addVnfToAAI(VnfEntity vnfEntity) {
170 RestfulParametes restfulParametes = new RestfulParametes();
172 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
173 restfulParametes.setRawData(vnfEntity.toStringForAai());
175 RestfulResponse response = RestfulUtil.getRestfulResponse(
176 Config.getHost() +":" + Config.getPort() + UrlConstant.GENERIC_VNF_URL + vnfEntity.getId(),
177 restfulParametes, "put");
178 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
182 public int addVnf(VnfEntity vnfEntity) {
184 if(checkVnfmEntity(vnfEntity) == VNF_AAI_DAO_SUCCESS) {
185 if(checkServiceInstanceEntity(vnfEntity) == VNF_AAI_DAO_SUCCESS){
186 if(addVnfToAAI(vnfEntity) == VNF_AAI_DAO_SUCCESS) {
187 return VNF_AAI_DAO_SUCCESS;
193 return VNF_AAI_DAO_FAIL;
196 private int deteletVnfm(VnfEntity vnfEntity) {
197 if(!StringUtils.isEmpty(vnfEntity.getVnfmResourceVersion())) {
198 RestfulParametes restfulParametes = new RestfulParametes();
199 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
200 restfulParametes.put("resource-version", vnfEntity.getVnfmResourceVersion());
202 RestfulResponse response = RestfulUtil
203 .getRestfulResponse(Config.getHost() +":" + Config.getPort() + UrlConstant.ESR_VNFM_URL
204 + vnfEntity.getVnfmId(), restfulParametes, "delete");
205 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
207 return VNF_AAI_DAO_FAIL;
211 public int deleteVnfById(String id) {
212 VnfEntity vnfEntity = getVnf(id);
214 if(vnfEntity != null) {
215 RestfulParametes restfulParametes = new RestfulParametes();
216 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
217 restfulParametes.put("resource-version", vnfEntity.getVnfResourceVersion());
218 RestfulResponse response = RestfulUtil
219 .getRestfulResponse(Config.getHost() +":" + Config.getPort() + UrlConstant.GENERIC_VNF_URL
220 + vnfEntity.getVnfInstanceId(), restfulParametes, "delete");
222 if(response.isSuccess()) {
223 deteletVnfm(vnfEntity);
224 return VNF_AAI_DAO_SUCCESS;
227 return VNF_AAI_DAO_FAIL;