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.util.RestfulUtil;
25 import org.onap.vfc.nfvo.resmanagement.common.util.request.RequestUtil;
26 import org.onap.vfc.nfvo.resmanagement.common.util.restclient.RestfulParametes;
27 import org.onap.vfc.nfvo.resmanagement.common.util.restclient.RestfulResponse;
28 import org.onap.vfc.nfvo.resmanagement.service.dao.inf.VnfDao;
29 import org.onap.vfc.nfvo.resmanagement.service.entity.VnfEntity;
31 import net.sf.json.JSONArray;
32 import net.sf.json.JSONObject;
34 public class VnfAaiDaoImpl implements VnfDao {
36 private static int VNF_AAI_DAO_SUCCESS = 1;
38 private static int VNF_AAI_DAO_FAIL = -1;
41 public List<VnfEntity> getVnfs(Map<String, Object> condition) {
42 ArrayList<VnfEntity> vnfList = new ArrayList<>();
44 if (condition.containsKey("id")) {
45 VnfEntity vnf = getVnf((String)condition.get("id"));
50 RestfulParametes restfulParametes = new RestfulParametes();
51 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
53 RestfulResponse response = RestfulUtil.getRestfulResponse(
54 "https://192.168.17.24:8443/aai/v11/network/generic-vnfs", restfulParametes, "get");
56 if(response.isSuccess()) {
57 JSONObject jsonObject = JSONObject.fromObject(response.getResponseContent());
58 JSONArray jsonArray = jsonObject.getJSONArray("generic-vnf");
60 for(int i = 0; i < jsonArray.size(); i++) {
61 JSONObject genericVnf = jsonArray.getJSONObject(i);
62 VnfEntity entityFromAai = VnfEntity.toEntityFromAai(genericVnf);
63 vnfList.add(updateVnfInfo(entityFromAai, genericVnf));
70 private VnfEntity updateVnfInfo(VnfEntity vnfEntity, JSONObject jsonObject) {
71 updateVnfInfo(vnfEntity, jsonObject);
72 updateNsInfo(vnfEntity, jsonObject);
76 private VnfEntity updateVnfmInfo(VnfEntity vnfEntity, JSONObject jsonObject) {
77 if(!jsonObject.has("relationship-list")) {
81 JSONArray relList = (JSONArray)((JSONObject)jsonObject.get("relationship-list")).get("relationship");
82 for(int i = 0; i < relList.size(); i++) {
83 JSONObject obj = relList.getJSONObject(i);
84 if("esr-vnfm".equals(obj.getString("related-to"))) {
85 String relatedLink = obj.getString("related-link");
87 RestfulParametes restfulParametes = new RestfulParametes();
88 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
89 RestfulResponse restfulResponse = RestfulUtil
90 .getRestfulResponse("https://192.168.17.24:8443" + relatedLink, restfulParametes, "get");
92 if(restfulResponse.isSuccess()) {
93 VnfEntity.updateEntityWithVnfmInfo(vnfEntity,
94 JSONObject.fromObject(restfulResponse.getResponseContent()));
102 private VnfEntity updateNsInfo(VnfEntity vnfEntity, JSONObject jsonObject) {
103 if(!jsonObject.has("relationship-list")) {
107 JSONArray relList = (JSONArray)((JSONObject)jsonObject.get("relationship-list")).get("relationship");
108 for(int i = 0; i < relList.size(); i++) {
109 JSONObject obj = relList.getJSONObject(i);
110 if("service-instance".equals(obj.getString("related-to"))) {
111 String relatedLink = obj.getString("related-link");
113 RestfulParametes restfulParametes = new RestfulParametes();
114 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
115 RestfulResponse restfulResponse = RestfulUtil
116 .getRestfulResponse("https://192.168.17.24:8443" + relatedLink, restfulParametes, "get");
118 if(restfulResponse.isSuccess()) {
119 VnfEntity.updateEntityWithNsInfo(vnfEntity,
120 JSONObject.fromObject(restfulResponse.getResponseContent()));
129 public VnfEntity getVnf(String id) {
130 VnfEntity vnfEntity = null;
131 RestfulParametes restfulParametes = new RestfulParametes();
132 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
134 RestfulResponse response = RestfulUtil.getRestfulResponse(
135 "https://192.168.17.24:8443/aai/v11/network/generic-vnfs/generic-vnf/" + id, restfulParametes, "get");
137 if(response.isSuccess()) {
138 JSONObject jsonObject = JSONObject.fromObject(response.getResponseContent());
139 vnfEntity = VnfEntity.toEntityFromAai(jsonObject);
140 updateVnfInfo(vnfEntity, jsonObject);
145 private int checkVnfmEntity(VnfEntity vnfEntity) {
146 RestfulParametes restfulParametes = new RestfulParametes();
148 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
149 // restfulParametes.setRawData(vnfEntity.toEsrVnfmStringForAai());
150 RestfulResponse response = RestfulUtil.getRestfulResponse(
151 "https://192.168.17.24:8443/aai/v11/external-system/esr-vnfm-list/esr-vnfm/" + vnfEntity.getVnfmId(),
152 restfulParametes, "get");
153 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
156 private int checkServiceInstanceEntity(VnfEntity vnfEntity) {
157 RestfulParametes restfulParametes = new RestfulParametes();
159 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
160 RestfulResponse response = RestfulUtil.getRestfulResponse(
161 "https://192.168.17.24:8443/aai/v11/business/customers/customer/vfc/service-subscriptions/service-subscription"
162 + "/vfc-service/service-instances/service-instance/" + vnfEntity.getNsId(), restfulParametes, "get");
163 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
167 private int addVnfToAAI(VnfEntity vnfEntity) {
168 RestfulParametes restfulParametes = new RestfulParametes();
170 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
171 restfulParametes.setRawData(vnfEntity.toStringForAai());
173 RestfulResponse response = RestfulUtil.getRestfulResponse(
174 "https://192.168.17.24:8443/aai/v11/network/generic-vnfs/generic-vnf/" + vnfEntity.getId(),
175 restfulParametes, "put");
176 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
180 public int addVnf(VnfEntity vnfEntity) {
182 if(checkVnfmEntity(vnfEntity) == VNF_AAI_DAO_SUCCESS) {
183 if(checkServiceInstanceEntity(vnfEntity) == VNF_AAI_DAO_SUCCESS){
184 if(addVnfToAAI(vnfEntity) == VNF_AAI_DAO_SUCCESS) {
185 return VNF_AAI_DAO_SUCCESS;
191 return VNF_AAI_DAO_FAIL;
194 private int deteletVnfm(VnfEntity vnfEntity) {
195 if(!StringUtils.isEmpty(vnfEntity.getVnfmResourceVersion())) {
196 RestfulParametes restfulParametes = new RestfulParametes();
197 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
198 restfulParametes.put("resource-version", vnfEntity.getVnfmResourceVersion());
200 RestfulResponse response = RestfulUtil
201 .getRestfulResponse("https://192.168.17.24:8443/aai/v11/external-system/esr-vnfm-list/esr-vnfm/"
202 + vnfEntity.getVnfmId(), restfulParametes, "delete");
203 return response == null || !response.isSuccess() ? VNF_AAI_DAO_FAIL : VNF_AAI_DAO_SUCCESS;
205 return VNF_AAI_DAO_FAIL;
209 public int deleteVnfById(String id) {
210 VnfEntity vnfEntity = getVnf(id);
212 if(vnfEntity != null) {
213 RestfulParametes restfulParametes = new RestfulParametes();
214 restfulParametes.setHeaderMap(RequestUtil.getAAIHeaderMap());
215 restfulParametes.put("resource-version", vnfEntity.getVnfResourceVersion());
216 RestfulResponse response = RestfulUtil
217 .getRestfulResponse("https://192.168.17.24:8443/aai/v11/network/generic-vnfs/generic-vnf/"
218 + vnfEntity.getVnfInstanceId(), restfulParametes, "delete");
220 if(response.isSuccess()) {
221 deteletVnfm(vnfEntity);
222 return VNF_AAI_DAO_SUCCESS;
225 return VNF_AAI_DAO_FAIL;