Change method objectToString to un-static.
[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
20 import javax.ws.rs.core.Response;
21
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;
34
35 import com.google.gson.Gson;
36
37
38 public class VimManagerWrapper {
39
40   private static VimManagerWrapper vimManagerWrapper;
41   private static final Logger LOG = LoggerFactory.getLogger(VimManagerWrapper.class);
42   private static VimManagerUtil vimManagerUtil = new VimManagerUtil();
43   private static ExtsysUtil extsysUtil = new ExtsysUtil();
44
45   /**
46    * get VimManagerWrapper instance.
47    * 
48    * @return vim manager wrapper instance
49    */
50   public static VimManagerWrapper getInstance() {
51     if (vimManagerWrapper == null) {
52       vimManagerWrapper = new VimManagerWrapper();
53     }
54     return vimManagerWrapper;
55
56   }
57
58   public Response registerVim(VimRegisterInfo vimRegisterInfo) {
59     LOG.info(
60         "Start register VIM, input VIM info is: " + extsysUtil.objectToString(vimRegisterInfo));
61     CloudRegionDetail cloudRegion = new CloudRegionDetail();
62     VimRegisterResponse result = new VimRegisterResponse();
63     cloudRegion = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
64     String cloudOwner = vimRegisterInfo.getCloudOwner();
65     String cloudRegionId = vimRegisterInfo.getCloudRegionId();
66     try {
67       CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegion);
68       result.setCloudOwner(cloudOwner);
69       result.setCloudRegionId(cloudRegionId);
70       Tenant tenant = new Tenant();
71       tenant.setDefaultTenant(cloudRegion.getEsrSystemInfoList().getEsrSystemInfo().get(0).getDefaultTenant());
72       try {
73         VimManagerProxy.updateVim(cloudOwner, cloudRegionId, tenant);
74       } catch (Exception e) {
75         e.printStackTrace();
76         LOG.error("Update VIM by Multi-cloud failed !" + e.getMessage());
77       }
78       return Response.ok(result).build();
79     } catch (Exception error) {
80       error.printStackTrace();
81       LOG.error("Register VIM failed !" + error.getMessage());
82       return Response.serverError().build();
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 (Exception e) {
98       e.printStackTrace();
99       LOG.error("Update VIM failed !" + e.getMessage());
100       return Response.serverError().build();
101     }
102   }
103
104   public Response queryVimListDetails() {
105     ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
106     CloudRegionList cloudRegionList = new CloudRegionList();
107     try {
108       String aaiVimList = CloudRegionProxy.qureyVimList();
109       cloudRegionList = new Gson().fromJson(aaiVimList, CloudRegionList.class);
110       vimRegisterInfos = getVimDetailList(cloudRegionList);
111       return Response.ok(vimRegisterInfos).build();
112     } catch (Exception error) {
113       error.printStackTrace();
114       LOG.error("Query vim list details failed !" + error.getMessage());
115       return Response.ok(vimRegisterInfos).build();
116     }
117
118   }
119
120   public Response queryVimById(String cloudOwner, String cloudRegionId) {
121     VimRegisterInfo vim = new VimRegisterInfo();
122     CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
123     try {
124       String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
125       LOG.info("Response from AAI by query VIM: " + cloudRegionstr);
126       cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
127       vim = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
128       return Response.ok(vim).build();
129     } catch (Exception e) {
130       e.printStackTrace();
131       return Response.ok(vim).build();
132     }
133
134   }
135
136   private ArrayList<VimRegisterInfo> getVimDetailList(CloudRegionList cloudRegionList) {
137     ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
138     VimRegisterInfo vimRegisterInfo = new VimRegisterInfo();
139     int cloudRegionNum = cloudRegionList.getCloudRegion().size();
140     for (int i = 0; i < cloudRegionNum; i++) {
141       String cloudOwner = cloudRegionList.getCloudRegion().get(i).getCloudOwner();
142       String cloudRegionId = cloudRegionList.getCloudRegion().get(i).getCloudRegionId();
143       vimRegisterInfo = getVimDetail(cloudOwner, cloudRegionId);
144       vimRegisterInfos.add(vimRegisterInfo);
145     }
146     return vimRegisterInfos;
147   }
148
149   private VimRegisterInfo getVimDetail(String cloudOwner, String cloudRegionId) {
150     CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
151     VimRegisterInfo registeredVimInfo = new VimRegisterInfo();
152     try {
153       String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
154       cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
155       registeredVimInfo = vimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
156     } catch (Exception error) {
157       error.printStackTrace();
158       LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = "
159           + cloudRegionId + error.getMessage());
160     }
161     return registeredVimInfo;
162   }
163
164   private CloudRegionDetail getOriginalCloudRegion(String cloudOwner, String cloudRegionId) {
165     CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
166     try {
167       String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
168       cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
169       return cloudRegionDetail;
170     } catch (Exception error) {
171       error.printStackTrace();
172       LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = "
173           + cloudRegionId + error.getMessage());
174       return null;
175     }
176   }
177   
178   private CloudRegionDetail getVimUpdateInfo(VimRegisterInfo vimRegisterInfo) {
179     CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
180     CloudRegionDetail originalCloudRegionDetail = new CloudRegionDetail();
181     EsrSystemInfo originalSystemInfo = new EsrSystemInfo();
182     String cloudOwner = vimRegisterInfo.getCloudOwner();
183     String cloudRegionId = vimRegisterInfo.getCloudRegionId();
184     originalCloudRegionDetail = getOriginalCloudRegion(cloudOwner, cloudRegionId);
185     String resourceVersion = originalCloudRegionDetail.getResourceVersion();
186     cloudRegionDetail = vimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
187     if(resourceVersion != null) {
188       cloudRegionDetail.setResourceVersion(resourceVersion);
189       originalSystemInfo = originalCloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0);
190       cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0).setEsrSystemInfoId(originalSystemInfo.getEsrSystemInfoId());
191       cloudRegionDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0).setResouceVersion(originalSystemInfo.getResouceVersion());
192     }
193     return cloudRegionDetail;
194   }
195
196   public Response delVim(String cloudOwner, String cloudRegionId) {
197     CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
198     cloudRegionDetail = queryCloudRegionDetail(cloudOwner, cloudRegionId);
199     String resourceVersion = cloudRegionDetail.getResourceVersion();
200     if (resourceVersion != null) {
201       try {
202         CloudRegionProxy.deleteVim(cloudOwner, cloudRegionId, resourceVersion);
203         return Response.noContent().build();
204       } catch (Exception e) {
205         e.printStackTrace();
206         LOG.error(
207             "Delete cloud region from A&AI failed! cloud-owner = " + cloudOwner
208                 + ", cloud-region-id = " + cloudRegionId + "resouce-version:" + resourceVersion,
209             e.getMessage());
210         return Response.serverError().build();
211       }
212     } else {
213       LOG.error("resouce-version is null ! Can not delete resouce from A&AI. ");
214       return Response.serverError().build();
215     }
216   }
217   
218   private CloudRegionDetail queryCloudRegionDetail (String cloudOwner, String cloudRegionId) {
219     CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
220     try {
221       String cloudRegionStr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
222       LOG.info("Response from AAI by query cloud region: " + cloudRegionStr);
223       cloudRegionDetail = new Gson().fromJson(cloudRegionStr, CloudRegionDetail.class);
224     } catch (Exception e) {
225       e.printStackTrace();
226       LOG.error("Query EMS detail failed! cloud-owner = " + cloudOwner
227                 + ", cloud-region-id = " + cloudRegionId , e.getMessage());
228     }
229     return cloudRegionDetail;
230   }
231 }