2 * Copyright 2017 ZTE Corporation.
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.
16 package org.onap.aai.esr.wrapper;
18 import java.util.ArrayList;
20 import javax.ws.rs.core.Response;
22 import org.onap.aai.esr.entity.aai.CloudRegionDetail;
23 import org.onap.aai.esr.entity.aai.CloudRegionList;
24 import org.onap.aai.esr.entity.aai.EsrSystemInfo;
25 import org.onap.aai.esr.entity.rest.VimRegisterInfo;
26 import org.onap.aai.esr.entity.rest.VimRegisterResponse;
27 import org.onap.aai.esr.externalservice.aai.CloudRegionProxy;
28 import org.onap.aai.esr.externalservice.cloud.Tenant;
29 import org.onap.aai.esr.externalservice.cloud.VimManagerProxy;
30 import org.onap.aai.esr.util.ExtsysUtil;
31 import org.onap.aai.esr.util.VimManagerUtil;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
35 import com.google.gson.Gson;
38 public class VimManagerWrapper {
40 private static VimManagerWrapper vimManagerWrapper;
41 private static final Logger LOG = LoggerFactory.getLogger(VimManagerWrapper.class);
42 private static VimManagerUtil vimManagerUtil = new VimManagerUtil();
45 * get VimManagerWrapper instance.
47 * @return vim manager wrapper instance
49 public static VimManagerWrapper getInstance() {
50 if (vimManagerWrapper == null) {
51 vimManagerWrapper = new VimManagerWrapper();
53 return vimManagerWrapper;
57 public Response registerVim(VimRegisterInfo vimRegisterInfo) {
59 "Start register VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo));
60 CloudRegionDetail cloudRegion = new CloudRegionDetail();
61 VimRegisterResponse result = new VimRegisterResponse();
62 cloudRegion = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
63 String cloudOwner = vimRegisterInfo.getCloudOwner();
64 String cloudRegionId = vimRegisterInfo.getCloudRegionId();
66 CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegion);
67 result.setCloudOwner(cloudOwner);
68 result.setCloudRegionId(cloudRegionId);
69 Tenant tenant = new Tenant();
70 tenant.setDefaultTenant(cloudRegion.getEsrSystemInfoList().getEsrSystemInfo().get(0).getDefaultTenant());
72 VimManagerProxy.updateVim(cloudOwner, cloudRegionId, tenant);
73 } catch (Exception e) {
75 LOG.error("Update VIM by Multi-cloud failed !" + e.getMessage());
77 return Response.ok(result).build();
78 } catch (Exception error) {
79 error.printStackTrace();
80 LOG.error("Register VIM failed !" + error.getMessage());
81 return Response.serverError().build();
85 public Response updateVim(String cloudOwner, String cloudRegionId,VimRegisterInfo vimRegisterInfo) {
86 LOG.info("Start update VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo));
87 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
88 VimRegisterResponse result = new VimRegisterResponse();
90 cloudRegionDetail = getVimUpdateInfo(vimRegisterInfo);
92 CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegionDetail);
93 result.setCloudOwner(cloudOwner);
94 result.setCloudRegionId(cloudRegionId);
95 return Response.ok(result).build();
96 } catch (Exception e) {
98 LOG.error("Update VIM failed !" + e.getMessage());
99 return Response.serverError().build();
103 public Response queryVimListDetails() {
104 ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
105 CloudRegionList cloudRegionList = new CloudRegionList();
107 String aaiVimList = CloudRegionProxy.qureyVimList();
108 cloudRegionList = new Gson().fromJson(aaiVimList, CloudRegionList.class);
109 vimRegisterInfos = getVimDetailList(cloudRegionList);
110 return Response.ok(vimRegisterInfos).build();
111 } catch (Exception error) {
112 error.printStackTrace();
113 LOG.error("Query vim list details failed !" + error.getMessage());
114 return Response.ok(vimRegisterInfos).build();
119 public Response queryVimById(String cloudOwner, String cloudRegionId) {
120 VimRegisterInfo vim = new VimRegisterInfo();
121 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
123 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
124 LOG.info("Response from AAI by query VIM: " + cloudRegionstr);
125 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
126 vim = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
127 return Response.ok(vim).build();
128 } catch (Exception e) {
130 return Response.ok(vim).build();
135 private ArrayList<VimRegisterInfo> getVimDetailList(CloudRegionList cloudRegionList) {
136 ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
137 VimRegisterInfo vimRegisterInfo = new VimRegisterInfo();
138 int cloudRegionNum = cloudRegionList.getCloudRegion().size();
139 for (int i = 0; i < cloudRegionNum; i++) {
140 String cloudOwner = cloudRegionList.getCloudRegion().get(i).getCloudOwner();
141 String cloudRegionId = cloudRegionList.getCloudRegion().get(i).getCloudRegionId();
142 vimRegisterInfo = getVimDetail(cloudOwner, cloudRegionId);
143 vimRegisterInfos.add(vimRegisterInfo);
145 return vimRegisterInfos;
148 private VimRegisterInfo getVimDetail(String cloudOwner, String cloudRegionId) {
149 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
150 VimRegisterInfo registeredVimInfo = new VimRegisterInfo();
152 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
153 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
154 registeredVimInfo = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
155 } catch (Exception error) {
156 error.printStackTrace();
157 LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = "
158 + cloudRegionId + error.getMessage());
160 return registeredVimInfo;
163 private CloudRegionDetail getOriginalCloudRegion(String cloudOwner, String cloudRegionId) {
164 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
166 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
167 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
168 return cloudRegionDetail;
169 } catch (Exception error) {
170 error.printStackTrace();
171 LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = "
172 + cloudRegionId + error.getMessage());
177 private CloudRegionDetail getVimUpdateInfo(VimRegisterInfo vimRegisterInfo) {
178 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
179 CloudRegionDetail originalCloudRegionDetail = new CloudRegionDetail();
180 EsrSystemInfo originalSystemInfo = new EsrSystemInfo();
181 String cloudOwner = vimRegisterInfo.getCloudOwner();
182 String cloudRegionId = vimRegisterInfo.getCloudRegionId();
183 originalCloudRegionDetail = getOriginalCloudRegion(cloudOwner, cloudRegionId);
184 String resourceVersion = originalCloudRegionDetail.getResourceVersion();
185 cloudRegionDetail = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
186 if(resourceVersion != null) {
187 cloudRegionDetail.setResourceVersion(resourceVersion);
188 originalSystemInfo = originalCloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0);
189 cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0).setEsrSystemInfoId(originalSystemInfo.getEsrSystemInfoId());
190 cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0).setResouceVersion(originalSystemInfo.getResouceVersion());
192 return cloudRegionDetail;
195 public Response delVim(String cloudOwner, String cloudRegionId) {
196 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
197 cloudRegionDetail = queryCloudRegionDetail(cloudOwner, cloudRegionId);
198 String resourceVersion = cloudRegionDetail.getResourceVersion();
199 if (resourceVersion != null) {
201 CloudRegionProxy.deleteVim(cloudOwner, cloudRegionId, resourceVersion);
202 return Response.noContent().build();
203 } catch (Exception e) {
206 "Delete cloud region from A&AI failed! cloud-owner = " + cloudOwner
207 + ", cloud-region-id = " + cloudRegionId + "resouce-version:" + resourceVersion,
209 return Response.serverError().build();
212 LOG.error("resouce-version is null ! Can not delete resouce from A&AI. ");
213 return Response.serverError().build();
217 private CloudRegionDetail queryCloudRegionDetail (String cloudOwner, String cloudRegionId) {
218 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
220 String cloudRegionStr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
221 LOG.info("Response from AAI by query cloud region: " + cloudRegionStr);
222 cloudRegionDetail = new Gson().fromJson(cloudRegionStr, CloudRegionDetail.class);
223 } catch (Exception e) {
225 LOG.error("Query EMS detail failed! cloud-owner = " + cloudOwner
226 + ", cloud-region-id = " + cloudRegionId , e.getMessage());
228 return cloudRegionDetail;