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.
42 * @return vim manager wrapper instance
44 public static VimManagerWrapper getInstance() {
45 if (vimManagerWrapper == null) {
46 vimManagerWrapper = new VimManagerWrapper();
48 return vimManagerWrapper;
52 public Response registerVim(VimRegisterInfo vimRegisterInfo) {
53 LOG.info("Start register VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo));
54 CloudRegionDetail cloudRegion = new CloudRegionDetail();
55 VimRegisterResponse result = new VimRegisterResponse();
56 cloudRegion = VimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
57 String cloudOwner = vimRegisterInfo.getCloudOwner();
58 String cloudRegionId = vimRegisterInfo.getCloudRegionId();
60 CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegion);
61 result.setCloudOwner(cloudOwner);
62 result.setCloudRegionId(cloudRegionId);
63 return Response.ok(result).build();
64 } catch (Exception e) {
66 return Response.serverError().build();
69 public Response updateVim(VimRegisterInfo vimRegisterInfo) {
70 LOG.info("Start update VIM, input VIM info is: " + ExtsysUtil.objectToString(vimRegisterInfo));
71 String cloudOwner = vimRegisterInfo.getCloudOwner();
72 String cloudRegionId = vimRegisterInfo.getCloudRegionId();
73 String resourceVersion = getResourceVersion(cloudOwner, cloudRegionId);
74 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
75 VimRegisterResponse result = new VimRegisterResponse();
76 cloudRegionDetail = VimManagerUtil.vimRegisterInfo2CloudRegion(vimRegisterInfo);
77 cloudRegionDetail.setResouceVersion(resourceVersion);
80 CloudRegionProxy.registerVim(cloudOwner, cloudRegionId, cloudRegionDetail);
81 result.setCloudOwner(cloudOwner);
82 result.setCloudRegionId(cloudRegionId);
83 return Response.ok(result).build();
84 } catch (Exception e) {
86 return Response.serverError().build();
90 public Response queryVimListDetails() {
91 ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
92 CloudRegionList cloudRegionList = new CloudRegionList();
94 String aaiVimList = CloudRegionProxy.qureyVimList();
95 cloudRegionList = new Gson().fromJson(aaiVimList, CloudRegionList.class);
96 vimRegisterInfos = getVimDetailList(cloudRegionList);
97 return Response.ok(vimRegisterInfos).build();
98 } catch (Exception error) {
99 LOG.error("Query vim list details failed !" + error.getMessage());
100 return Response.serverError().build();
105 public Response queryVimById(String cloudOwner, String cloudRegionId) {
106 VimRegisterInfo vim = new VimRegisterInfo();
107 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
109 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
110 LOG.info("Response from AAI by query VIM: " + cloudRegionstr);
111 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
112 vim = VimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
113 return Response.ok(vim).build();
114 } catch (Exception e) {
116 return Response.serverError().build();
121 private ArrayList<VimRegisterInfo> getVimDetailList(CloudRegionList cloudRegionList) {
122 ArrayList<VimRegisterInfo> vimRegisterInfos = new ArrayList<VimRegisterInfo>();
123 VimRegisterInfo vimRegisterInfo = new VimRegisterInfo();
124 int cloudRegionNum = cloudRegionList.getCloudRegion().size();
125 for (int i=0; i<cloudRegionNum; i++) {
126 String cloudOwner = cloudRegionList.getCloudRegion().get(i).getCloudOwner();
127 String cloudRegionId = cloudRegionList.getCloudRegion().get(i).getCloudRegionId();
128 vimRegisterInfo = getVimDetail(cloudOwner, cloudRegionId);
129 vimRegisterInfos.add(vimRegisterInfo);
131 return vimRegisterInfos;
134 private VimRegisterInfo getVimDetail(String cloudOwner, String cloudRegionId) {
135 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
136 VimRegisterInfo registeredVimInfo = new VimRegisterInfo();
138 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
139 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
140 registeredVimInfo = VimManagerUtil.cloudRegion2VimRegisterInfo(cloudRegionDetail);
141 } catch (Exception error) {
142 LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner +", cloud-region-id = "+ cloudRegionId + error.getMessage());
144 return registeredVimInfo;
147 private String getResourceVersion(String cloudOwner, String cloudRegionId) {
148 CloudRegionDetail cloudRegionDetail = new CloudRegionDetail();
150 String cloudRegionstr = CloudRegionProxy.queryVimDetail(cloudOwner, cloudRegionId);
151 cloudRegionDetail = new Gson().fromJson(cloudRegionstr, CloudRegionDetail.class);
152 return cloudRegionDetail.getResouceVersion();
153 } catch (Exception error) {
154 LOG.error("query VIM detail failed ! cloud-owner = " + cloudOwner +", cloud-region-id = "+ cloudRegionId + error.getMessage());
159 public Response delVim(String vimId) {
161 return Response.noContent().build();