Fix the java code style issue.
[aai/esr-server.git] / esr-mgr / src / main / java / org / onap / aai / esr / wrapper / VimManagerWrapper.java
1 /**
2  * Copyright 2017 ZTE Corporation.
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.onap.aai.esr.wrapper;
17
18 import java.util.ArrayList;
19 import java.util.List;
20 import javax.ws.rs.core.Response;
21 import org.onap.aai.esr.entity.aai.CloudRegionDetail;
22 import org.onap.aai.esr.entity.aai.CloudRegionList;
23 import org.onap.aai.esr.entity.aai.EsrSystemInfo;
24 import org.onap.aai.esr.entity.rest.VimRegisterInfo;
25 import org.onap.aai.esr.entity.rest.VimRegisterResponse;
26 import org.onap.aai.esr.exception.ExceptionUtil;
27 import org.onap.aai.esr.exception.ExtsysException;
28 import org.onap.aai.esr.externalservice.aai.CloudRegionProxy;
29 import org.onap.aai.esr.externalservice.cloud.Tenant;
30 import org.onap.aai.esr.externalservice.cloud.VimManagerProxy;
31 import org.onap.aai.esr.util.ExtsysUtil;
32 import org.onap.aai.esr.util.VimManagerUtil;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35 import com.google.gson.Gson;
36
37 public class VimManagerWrapper {
38
39     private static VimManagerWrapper vimManagerWrapper;
40     private static final Logger LOG = LoggerFactory.getLogger(VimManagerWrapper.class);
41
42     private static VimManagerUtil vimManagerUtil = new VimManagerUtil();
43
44     private static CloudRegionProxy cloudRegionProxy = new CloudRegionProxy();
45
46     private static ExtsysUtil extsysUtil = new ExtsysUtil();
47
48     /**
49      * get VimManagerWrapper instance.
50      * 
51      * @return vim manager wrapper instance
52      */
53     public static VimManagerWrapper getInstance() {
54         if (vimManagerWrapper == null) {
55             vimManagerWrapper = new VimManagerWrapper();
56         }
57         return vimManagerWrapper;
58
59     }
60
61     public Response registerVim(VimRegisterInfo vimRegisterInfo) {
62         LOG.info("Start register VIM, input VIM info is: " + extsysUtil.objectToString(vimRegisterInfo));
63         CloudRegionDetail cloudRegion = new CloudRegionDetail();
64         VimRegisterResponse result = new VimRegisterResponse();
65         cloudRegion = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
66         String cloudOwner = vimRegisterInfo.getCloudOwner();
67         String cloudRegionId = vimRegisterInfo.getCloudRegionId();
68         try {
69             cloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegion);
70             result.setCloudOwner(cloudOwner);
71             result.setCloudRegionId(cloudRegionId);
72             Tenant tenant = new Tenant();
73             tenant.setDefaultTenant(cloudRegion.getEsrSystemInfoList().getEsrSystemInfo().get(0).getDefaultTenant());
74             try {
75                 VimManagerProxy.updateVim(cloudOwner, cloudRegionId, tenant);
76             } catch (ExtsysException e) {
77                 LOG.error("Update VIM by Multi-cloud failed !", e);
78             }
79             return Response.ok(result).build();
80         } catch (ExtsysException error) {
81             LOG.error("Register VIM failed !", error);
82             throw ExceptionUtil.buildExceptionResponse(error.getMessage());
83         }
84     }
85
86     public Response updateVim(String cloudOwner, String cloudRegionId, VimRegisterInfo vimRegisterInfo) {
87         LOG.info("Start update VIM, input VIM info is: " + extsysUtil.objectToString(vimRegisterInfo));
88         CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
89         VimRegisterResponse result = new VimRegisterResponse();
90
91         cloudRegionDetail = getVimUpdateInfo(vimRegisterInfo);
92         try {
93             cloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegionDetail);
94             result.setCloudOwner(cloudOwner);
95             result.setCloudRegionId(cloudRegionId);
96             return Response.ok(result).build();
97         } catch (ExtsysException e) {
98             LOG.error("Update VIM failed !", e);
99             throw ExceptionUtil.buildExceptionResponse(e.getMessage());
100         }
101     }
102
103     public Response queryVimListDetails() {
104         List<VimRegisterInfo> vimRegisterInfos = new ArrayList<>();
105         CloudRegionList cloudRegionList = new CloudRegionList();
106         try {
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 (ExtsysException error) {
112             LOG.error("Query vim list details failed !", error);
113             return Response.ok(vimRegisterInfos).build();
114         }
115
116     }
117
118     public Response queryVimById(String cloudOwner, String cloudRegionId) {
119         VimRegisterInfo vim = new VimRegisterInfo();
120         CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
121         try {
122             String cloudRegionstr = cloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
123             LOG.info("Response from AAI by query VIM: " + cloudRegionstr);
124             cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
125             vim = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
126             return Response.ok(vim).build();
127         } catch (ExtsysException e) {
128             LOG.error("Query vim details by ID failed !", e);
129             return Response.ok(vim).build();
130         }
131
132     }
133
134     private List<VimRegisterInfo> getVimDetailList(CloudRegionList cloudRegionList) {
135         List<VimRegisterInfo> vimRegisterInfos = new ArrayList<>();
136         VimRegisterInfo vimRegisterInfo = new VimRegisterInfo();
137         int cloudRegionNum = cloudRegionList.getCloudRegion().size();
138         for (int i = 0; i < cloudRegionNum; i++) {
139             String cloudOwner = cloudRegionList.getCloudRegion().get(i).getCloudOwner();
140             String cloudRegionId = cloudRegionList.getCloudRegion().get(i).getCloudRegionId();
141             vimRegisterInfo = getVimDetail(cloudOwner, cloudRegionId);
142             vimRegisterInfos.add(vimRegisterInfo);
143         }
144         return vimRegisterInfos;
145     }
146
147     private VimRegisterInfo getVimDetail(String cloudOwner, String cloudRegionId) {
148         CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
149         VimRegisterInfo registeredVimInfo = new VimRegisterInfo();
150         try {
151             String cloudRegionstr = cloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
152             cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
153             registeredVimInfo = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
154         } catch (ExtsysException error) {
155             LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = " + cloudRegionId,
156                     error);
157         }
158         return registeredVimInfo;
159     }
160
161     private CloudRegionDetail getOriginalCloudRegion(String cloudOwner, String cloudRegionId) {
162         CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
163         try {
164             String cloudRegionstr = cloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
165             cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
166             return cloudRegionDetail;
167         } catch (ExtsysException error) {
168             LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = " + cloudRegionId,
169                     error);
170             return null;
171         }
172     }
173
174     private CloudRegionDetail getVimUpdateInfo(VimRegisterInfo vimRegisterInfo) {
175         CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
176         CloudRegionDetail originalCloudRegionDetail = new CloudRegionDetail();
177         EsrSystemInfo originalSystemInfo = new EsrSystemInfo();
178         String cloudOwner = vimRegisterInfo.getCloudOwner();
179         String cloudRegionId = vimRegisterInfo.getCloudRegionId();
180         originalCloudRegionDetail = getOriginalCloudRegion(cloudOwner, cloudRegionId);
181         String resourceVersion = originalCloudRegionDetail.getResourceVersion();
182         cloudRegionDetail = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
183         if (resourceVersion != null) {
184             cloudRegionDetail.setResourceVersion(resourceVersion);
185             originalSystemInfo = originalCloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0);
186             cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0)
187                     .setEsrSystemInfoId(originalSystemInfo.getEsrSystemInfoId());
188             cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0)
189                     .setResouceVersion(originalSystemInfo.getResouceVersion());
190         }
191         return cloudRegionDetail;
192     }
193
194     public Response delVim(String cloudOwner, String cloudRegionId) {
195         CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
196         cloudRegionDetail = queryCloudRegionDetail(cloudOwner, cloudRegionId);
197         String resourceVersion = cloudRegionDetail.getResourceVersion();
198         try {
199             cloudRegionProxy.deleteVim(cloudOwner, cloudRegionId, resourceVersion);
200             return Response.noContent().build();
201         } catch (ExtsysException e) {
202             LOG.error("Delete cloud region from A&AI failed! cloud-owner = " + cloudOwner + ", cloud-region-id = "
203                     + cloudRegionId + "resouce-version:" + resourceVersion, e);
204             throw ExceptionUtil.buildExceptionResponse(e.getMessage());
205         }
206     }
207
208     private CloudRegionDetail queryCloudRegionDetail(String cloudOwner, String cloudRegionId) {
209         CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
210         try {
211             String cloudRegionStr = cloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
212             LOG.info("Response from AAI by query cloud region: " + cloudRegionStr);
213             cloudRegionDetail = new Gson().fromJson(cloudRegionStr, CloudRegionDetail.class);
214         } catch (ExtsysException e) {
215             LOG.error("Query EMS detail failed! cloud-owner = " + cloudOwner + ", cloud-region-id = " + cloudRegionId,
216                     e);
217             throw ExceptionUtil.buildExceptionResponse(e.getMessage());
218         }
219         return cloudRegionDetail;
220     }
221 }