ee28b77ca74d9e284fceb9870897157486756ac7
[aai/esr-server.git] / esr-mgr / src / main / java / org / onap / aai / esr / wrapper / VnfmManagerWrapper.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.EsrSystemInfo;
22 import org.onap.aai.esr.entity.aai.EsrVnfmDetail;
23 import org.onap.aai.esr.entity.aai.EsrVnfmList;
24 import org.onap.aai.esr.entity.rest.CommonRegisterResponse;
25 import org.onap.aai.esr.entity.rest.VnfmRegisterInfo;
26 import org.onap.aai.esr.exception.ExceptionUtil;
27 import org.onap.aai.esr.exception.ExtsysException;
28 import org.onap.aai.esr.externalservice.aai.ExternalSystemProxy;
29 import org.onap.aai.esr.util.VnfmManagerUtil;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32 import com.google.gson.Gson;
33
34 public class VnfmManagerWrapper {
35     private static VnfmManagerWrapper vnfmManagerWrapper;
36     private static final Logger LOG = LoggerFactory.getLogger(VnfmManagerWrapper.class);
37
38     private static VnfmManagerUtil vnfmManagerUtil = new VnfmManagerUtil();
39
40     /**
41      * get VnfmManagerWrapper instance.
42      * 
43      * @return vnfm manager wrapper instance
44      */
45     public static VnfmManagerWrapper getInstance() {
46         if (vnfmManagerWrapper == null) {
47             vnfmManagerWrapper = new VnfmManagerWrapper();
48         }
49         return vnfmManagerWrapper;
50     }
51
52     public Response registerVnfm(VnfmRegisterInfo vnfm) {
53         CommonRegisterResponse result = new CommonRegisterResponse();
54         EsrVnfmDetail esrVnfmDetail = vnfmManagerUtil.vnfmRegisterInfo2EsrVnfm(vnfm);
55         String vnfmId = esrVnfmDetail.getVnfmId();
56         try {
57             ExternalSystemProxy.registerVnfm(vnfmId, esrVnfmDetail);
58             result.setId(vnfmId);
59             return Response.ok(result).build();
60         } catch (ExtsysException e) {
61             LOG.error("Register VNFM failed !", e);
62             throw ExceptionUtil.buildExceptionResponse(e.getMessage());
63         }
64     }
65
66     public Response updateVnfm(VnfmRegisterInfo vnfm, String vnfmId) {
67         CommonRegisterResponse result = new CommonRegisterResponse();
68         EsrVnfmDetail originalEsrVnfmDetail = queryEsrVnfmDetail(vnfmId);
69         EsrVnfmDetail esrVnfmDetail = vnfmManagerUtil.vnfmRegisterInfo2EsrVnfm(vnfm);
70         String resourceVersion = getResourceVersion(vnfmId);
71         esrVnfmDetail.setResourceVersion(resourceVersion);
72         esrVnfmDetail.setVnfmId(vnfmId);
73         EsrSystemInfo originalEsrSystemInfo = originalEsrVnfmDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0);
74         esrVnfmDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0)
75                 .setEsrSystemInfoId(originalEsrSystemInfo.getEsrSystemInfoId());
76         esrVnfmDetail.getEsrSystemInfoList().getEsrSystemInfo().get(0)
77                 .setResouceVersion(originalEsrSystemInfo.getResouceVersion());
78         try {
79             ExternalSystemProxy.registerVnfm(vnfmId, esrVnfmDetail);
80             result.setId(vnfmId);
81             return Response.ok(result).build();
82         } catch (ExtsysException e) {
83             LOG.error("Update VNFM failed !", e);
84             throw ExceptionUtil.buildExceptionResponse(e.getMessage());
85         }
86     }
87
88     public Response queryVnfmList() {
89         List<VnfmRegisterInfo> vnfmList = new ArrayList<>();
90         EsrVnfmList esrVnfm = new EsrVnfmList();
91         try {
92             String esrVnfmStr = ExternalSystemProxy.queryVnfmList();
93             esrVnfm = new Gson().fromJson(esrVnfmStr, EsrVnfmList.class);
94             LOG.info("Response from AAI by query VNFM list: " + esrVnfm);
95             vnfmList = getVnfmDetailList(esrVnfm);
96             return Response.ok(vnfmList).build();
97         } catch (ExtsysException e) {
98             LOG.error("Query VNFM list failed !", e);
99             return Response.ok(vnfmList).build();
100         }
101     }
102
103     public Response queryVnfmById(String vnfmId) {
104         VnfmRegisterInfo vnfm = queryVnfmDetail(vnfmId);
105         if (vnfm != null) {
106             return Response.ok(vnfm).build();
107         } else {
108             return Response.ok(vnfm).build();
109         }
110     }
111
112     public Response delVnfm(String vnfmId) {
113         String resourceVersion = getResourceVersion(vnfmId);
114         try {
115             ExternalSystemProxy.deleteVnfm(vnfmId, resourceVersion);
116             return Response.noContent().build();
117         } catch (ExtsysException e) {
118             LOG.error("Delete VNFM from A&AI failed! VNFM ID: " + vnfmId + "resouce-version:" + resourceVersion, e);
119             throw ExceptionUtil.buildExceptionResponse(e.getMessage());
120         }
121     }
122
123     private VnfmRegisterInfo queryVnfmDetail(String vnfmId) {
124         VnfmRegisterInfo vnfm = new VnfmRegisterInfo();
125         EsrVnfmDetail esrVnfmDetail = new EsrVnfmDetail();
126         try {
127             String esrVnfmstr = ExternalSystemProxy.queryVnfmDetail(vnfmId);
128             LOG.info("Response from AAI by query VNFM: " + esrVnfmstr);
129             esrVnfmDetail = new Gson().fromJson(esrVnfmstr, EsrVnfmDetail.class);
130             vnfm = vnfmManagerUtil.esrVnfm2VnfmRegisterInfo(esrVnfmDetail);
131         } catch (ExtsysException e) {
132             LOG.error("Query VNFM detail failed! VNFM ID: " + vnfmId, e);
133         }
134         return vnfm;
135     }
136
137     private List<VnfmRegisterInfo> getVnfmDetailList(EsrVnfmList esrVnfm) {
138         List<VnfmRegisterInfo> vnfmInfoList = new ArrayList<>();
139         for (int i = 0; i < esrVnfm.getEsrVnfm().size(); i++) {
140             String vnfmId = esrVnfm.getEsrVnfm().get(i).getVnfmId();
141             VnfmRegisterInfo vnfmInfo = queryVnfmDetail(vnfmId);
142             if (vnfmInfo != null) {
143                 vnfmInfoList.add(vnfmInfo);
144             }
145         }
146         return vnfmInfoList;
147     }
148
149     private String getResourceVersion(String vnfmId) {
150         String resourceVersion = null;
151         EsrVnfmDetail esrVnfmDetail = queryEsrVnfmDetail(vnfmId);
152         if (esrVnfmDetail != null && esrVnfmDetail.getResourceVersion() != null) {
153             resourceVersion = esrVnfmDetail.getResourceVersion();
154         }
155         return resourceVersion;
156     }
157
158     private EsrVnfmDetail queryEsrVnfmDetail(String vnfmId) {
159         EsrVnfmDetail esrVnfmDetail = new EsrVnfmDetail();
160         try {
161             String esrVnfmstr = ExternalSystemProxy.queryVnfmDetail(vnfmId);
162             LOG.info("Response from AAI by query VNFM: " + esrVnfmstr);
163             esrVnfmDetail = new Gson().fromJson(esrVnfmstr, EsrVnfmDetail.class);
164         } catch (ExtsysException e) {
165             LOG.error("Query VNFM detail failed! VNFM ID: " + vnfmId, e);
166             throw ExceptionUtil.buildExceptionResponse(e.getMessage());
167         }
168         return esrVnfmDetail;
169     }
170 }