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.rest.VimRegisterInfo;
25 import org.onap.aai.esr.entity.rest.VimRegisterResponse;
26 import org.onap.aai.esr.externalservice.aai.CloudRegionProxy;
27 import org.onap.aai.esr.util.ExtsysUtil;
28 import org.onap.aai.esr.util.VimManagerUtil;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
32 import com.google.gson.Gson;
35 public class VimManagerWrapper {
37 private static VimManagerWrapper vimManagerWrapper;
38 private static final Logger LOG = LoggerFactory.getLogger(VimManagerWrapper.class);
41 * get VimManagerWrapper instance.
43 * @return vim manager wrapper instance
45 public static VimManagerWrapper getInstance() {
46 if (vimManagerWrapper == null) {
47 vimManagerWrapper = new VimManagerWrapper();
49 return vimManagerWrapper;
53 public Response registerVim(VimRegisterInfo vimRegisterInfo) {
55 "Start register VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo));
56 CloudRegionDetail cloudRegion = new CloudRegionDetail();
57 VimRegisterResponse result = new VimRegisterResponse();
58 cloudRegion = VimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
59 String cloudOwner = vimRegisterInfo.getCloudOwner();
60 String cloudRegionId = vimRegisterInfo.getCloudRegionId();
62 CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegion);
63 result.setCloudOwner(cloudOwner);
64 result.setCloudRegionId(cloudRegionId);
65 return Response.ok(result).build();
66 } catch (Exception error) {
67 error.printStackTrace();
68 LOG.error("Register VIM failed !" + error.getMessage());
69 return Response.serverError().build();
73 public Response updateVim(VimRegisterInfo vimRegisterInfo) {
74 LOG.info("Start update VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo));
75 String cloudOwner = vimRegisterInfo.getCloudOwner();
76 String cloudRegionId = vimRegisterInfo.getCloudRegionId();
77 String resourceVersion = getResourceVersion(cloudOwner, cloudRegionId);
78 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
79 VimRegisterResponse result = new VimRegisterResponse();
80 cloudRegionDetail = VimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
81 cloudRegionDetail.setResouceVersion(resourceVersion);
84 CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegionDetail);
85 result.setCloudOwner(cloudOwner);
86 result.setCloudRegionId(cloudRegionId);
87 return Response.ok(result).build();
88 } catch (Exception e) {
90 LOG.error("Update VIM failed !" + e.getMessage());
91 return Response.serverError().build();
95 public Response queryVimListDetails() {
96 ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
97 CloudRegionList cloudRegionList = new CloudRegionList();
99 String aaiVimList = CloudRegionProxy.qureyVimList();
100 cloudRegionList = new Gson().fromJson(aaiVimList, CloudRegionList.class);
101 vimRegisterInfos = getVimDetailList(cloudRegionList);
102 return Response.ok(vimRegisterInfos).build();
103 } catch (Exception error) {
104 error.printStackTrace();
105 LOG.error("Query vim list details failed !" + error.getMessage());
106 return Response.serverError().build();
111 public Response queryVimById(String cloudOwner, String cloudRegionId) {
112 VimRegisterInfo vim = new VimRegisterInfo();
113 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
115 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
116 LOG.info("Response from AAI by query VIM: " + cloudRegionstr);
117 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
118 vim = VimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
119 return Response.ok(vim).build();
120 } catch (Exception e) {
122 return Response.serverError().build();
127 private ArrayList<VimRegisterInfo> getVimDetailList(CloudRegionList cloudRegionList) {
128 ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
129 VimRegisterInfo vimRegisterInfo = new VimRegisterInfo();
130 int cloudRegionNum = cloudRegionList.getCloudRegion().size();
131 for (int i = 0; i < cloudRegionNum; i++) {
132 String cloudOwner = cloudRegionList.getCloudRegion().get(i).getCloudOwner();
133 String cloudRegionId = cloudRegionList.getCloudRegion().get(i).getCloudRegionId();
134 vimRegisterInfo = getVimDetail(cloudOwner, cloudRegionId);
135 vimRegisterInfos.add(vimRegisterInfo);
137 return vimRegisterInfos;
140 private VimRegisterInfo getVimDetail(String cloudOwner, String cloudRegionId) {
141 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
142 VimRegisterInfo registeredVimInfo = new VimRegisterInfo();
144 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
145 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
146 registeredVimInfo = VimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
147 } catch (Exception error) {
148 error.printStackTrace();
149 LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = "
150 + cloudRegionId + error.getMessage());
152 return registeredVimInfo;
155 private String getResourceVersion(String cloudOwner, String cloudRegionId) {
156 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
158 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
159 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
160 return cloudRegionDetail.getResouceVersion();
161 } catch (Exception error) {
162 error.printStackTrace();
163 LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner + ", cloud-region-id = "
164 + cloudRegionId + error.getMessage());
169 public Response delVim(String vimId) {
171 return Response.noContent().build();