5fb7322d992a9be8cc07c72e582bd5a4f277dc47
[vfc/nfvo/driver/vnfm/svnfm.git] / huawei / vnfmadapter / VnfmadapterService / service / src / main / java / org / onap / vfc / nfvo / vnfm / svnfm / vnfmadapter / common / VnfmUtil.java
1 /*
2  * Copyright 2016-2017 Huawei Technologies Co., Ltd.
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
17 package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common;
18
19 import java.util.HashMap;
20 import java.util.Map;
21
22 import org.apache.commons.codec.binary.Base64;
23 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient.RestfulResponse;
24 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.servicetoken.VnfmRestfulUtil;
25 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant;
26 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.ParamConstants;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 import net.sf.json.JSONArray;
31 import net.sf.json.JSONObject;
32
33 /**
34  * Provide function of getting vnfmInfo
35  * <br/>
36  *
37  * @author
38  * @version VFC 1.0 Aug 25, 2016
39  */
40 public final class VnfmUtil {
41
42     private static final Logger LOGGER = LoggerFactory.getLogger(VnfmUtil.class);
43
44     private VnfmUtil() {
45
46     }
47
48     /**
49      * <br>
50      * 
51      * @param vnfmId
52      * @return
53      * @since VFC 1.0
54      */
55     public static JSONObject getVnfmById(String vnfmId) {
56         Map<String, String> headerMap = new HashMap<>(5);
57         headerMap.put("Content-Type", "application/json");
58         headerMap.put("Accept", "application/json");
59         headerMap.put("X-TransactionId", "9999");
60         headerMap.put("X-FromAppId", "esr-server");
61
62         Base64 token = new Base64();
63         String authen = new String(token.encode(("AAI:AAI").getBytes()));
64         headerMap.put("Authorization", "Basic " + authen);
65         LOGGER.info("getVnfmById headerMap: {}", headerMap.toString());
66
67         /*RestfulResponse rsp = VnfmRestfulUtil.getRemoteResponse(String.format(ParamConstants.ESR_GET_VNFM_URL, vnfmId),
68                 VnfmRestfulUtil.TYPE_GET, headerMap, null);
69         if(rsp == null) {
70             LOGGER.error("funtion=getVnfmById, response is null.");
71             return null;
72         }
73         if(rsp.getStatus() != Constant.HTTP_OK) {
74             LOGGER.error("funtion=getVnfmById, status={}", rsp.getStatus());
75             return null;
76         }*/
77         String rsp = "{\"esr-system-info\": [{\"esr-system-info-id\": \"1234\",\"system-name\": \"hwvnfm\",\"type\": \"vnfm\",\"vendor\": \"huawei\",\"version\": \"v1.0\",\"service-url\": \"https://192.188.15.64:30001\",\"user-name\":\"vfctest\",\"password\": \"Huawei12#$\",\"system-type\": \"VNFM\",   \"resource-version\": \"1508828777218\"}]}";
78         JSONObject esrVnfm = JSONObject.fromObject(rsp);
79         LOGGER.info("esrVnfm: {}", esrVnfm);
80         JSONObject vnfmJson = parseEsrVnfm(vnfmId, esrVnfm);
81         LOGGER.info("vnfmJson: {}", vnfmJson);
82         return vnfmJson;
83     }
84
85     /**
86      * <br>
87      * 
88      * @param vnfmId
89      * @param
90      *            esrVnfm
91      *            http://172.30.3.34:80/aai/v11/external-system/esr-vnfm-list/esr-vnfm/6f78d29e-3c4b-4d41-a200-6d3b518fb874/esr-system-info-list
92      *            {
93      *            "esr-system-info": [
94      *            {
95      *            "esr-system-info-id": "2b0c1a80-1b95-4d28-b206-f9cb6d7f8d3a",
96      *            "system-name": "hwvnfm",
97      *            "type": "vnfm",
98      *            "vendor": "huawei",
99      *            "version": "v1.0",
100      *            "service-url": "http://172.30.20.5:30001",
101      *            "user-name": "admin",
102      *            "password": "Huawei12#$",
103      *            "system-type": "VNFM",
104      *            "resource-version": "1508828777218"
105      *            }
106      *            ]
107      *            }
108      * @return
109      *         vnfmJson
110      *         {
111      *         "vnfmId": "1234",
112      *         "name": "vnfm",
113      *         "type": "Tacker",
114      *         "vimId": "",
115      *         "vendor": "huawei",
116      *         "version": "v1.0",
117      *         "description": "vnfm",
118      *         "certificateUrl": "",
119      *         "url": "https://192.168.44.126:30001",
120      *         "userName": "manoadmin",
121      *         "password": "User@12345",
122      *         "createTime": "2016-07-06 15:33:18"
123      *         }
124      * @since VFC 1.0
125      */
126     private static JSONObject parseEsrVnfm(String vnfmId, JSONObject esrVnfm) {
127         JSONObject vnfmObj = new JSONObject();
128         JSONObject esrSysInfo = esrVnfm.getJSONArray("esr-system-info").getJSONObject(0);
129         vnfmObj.put(Constant.VNFMID, vnfmId);
130         vnfmObj.put("name", esrSysInfo.getString("system-name"));
131         vnfmObj.put("type", esrSysInfo.getString("type"));
132         vnfmObj.put("vimId", "");
133         vnfmObj.put("vendor", esrSysInfo.getString("vendor"));
134         vnfmObj.put("version", esrSysInfo.getString("version"));
135         vnfmObj.put("description", "");
136         vnfmObj.put("certificateUrl", "");
137         vnfmObj.put("url", esrSysInfo.getString("service-url"));
138         vnfmObj.put("userName", esrSysInfo.getString("user-name"));
139         vnfmObj.put("password", esrSysInfo.getString("password"));
140         vnfmObj.put("createTime", "");
141         return vnfmObj;
142     }
143
144     public static JSONObject mockForTest(String vnfmId) {
145         String vInfo =
146                 "{\"vnfmId\":\"1234\", \"name\":\"vnfm\", \"type\":\"Tacker\", \"vimId\":\"\", \"vendor\":\"huawei\", \"version\":\"v1.0\", \"description\":\"vnfm\", \"certificateUrl\":\"\", \"url\":\"https://192.168.44.126:30001\", \"userName\":\"manoadmin\", \"password\":\"User@12345\", \"createTime\":\"2016-07-06 15:33:18\"}";
147         JSONObject json = JSONObject.fromObject(vInfo);
148         json.put(Constant.VNFMID, vnfmId);
149         return json;
150     }
151
152     /**
153      * Get vnfmInfo by ip
154      * <br/>
155      *
156      * @param ip
157      * @return
158      * @since VFC 1.0
159      */
160     public static String getVnfmIdByIp(String ip) {
161         RestfulResponse rsp =
162                 VnfmRestfulUtil.getRemoteResponse(ParamConstants.ESR_GET_VNFMS_URL, VnfmRestfulUtil.TYPE_GET, null);
163         if(rsp == null || rsp.getStatus() != Constant.HTTP_OK) {
164             return "";
165         }
166
167         JSONArray vnfmList = JSONArray.fromObject(rsp.getResponseContent());
168         LOGGER.info("vnfm ip: {}, vnfmList: {}", ip, vnfmList);
169         for(int i = 0; i < vnfmList.size(); i++) {
170             if(vnfmList.getJSONObject(i).getString("url").contains(ip)) {
171                 return vnfmList.getJSONObject(i).getString(Constant.VNFMID);
172             }
173         }
174
175         return "";
176     }
177 }