Handle unsuccessful msb service query
[vfc/nfvo/driver/vnfm/svnfm.git] / nokia / vnfmdriver / vfcadaptorservice / vfcadaptor / src / main / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / msb / impl / MsbMgmrImpl.java
1 /*
2  * Copyright 2016-2017, Nokia 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
17 package org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.impl;
18
19 import java.io.IOException;
20 import java.util.HashMap;
21
22 import org.apache.http.client.ClientProtocolException;
23 import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.bo.AdaptorEnv;
24 import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.util.CommonUtil;
25 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants;
26 import org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client.HttpClientProcessorInf;
27 import org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client.HttpResult;
28 import org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.bo.MsbServiceInfo;
29 import org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.inf.IMsbMgmr;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32 import org.springframework.beans.factory.annotation.Autowired;
33 import org.springframework.http.MediaType;
34 import org.springframework.stereotype.Component;
35 import org.springframework.web.bind.annotation.RequestMethod;
36
37 import com.google.gson.Gson;
38
39 @Component
40 public class MsbMgmrImpl implements IMsbMgmr {
41         private static final Logger logger = LoggerFactory.getLogger(MsbMgmrImpl.class);
42
43         @Autowired
44         AdaptorEnv adaptorEnv;
45
46         @Autowired
47         HttpClientProcessorInf httpClientProcessor;
48
49         private Gson gson = new Gson();
50
51         @Override
52         public void register() {
53
54                 try {
55                         String url = adaptorEnv.getMsbApiUriFront() + CommonConstants.MSB_REGISTER_SERVICE_PATH;
56                         HashMap<String, String> map = new HashMap<>();
57                         map.put(CommonConstants.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
58
59                         String bodyPostStr = readVfcAdaptorInfoFromJsonFile();
60
61                         HttpResult httpResult = httpClientProcessor.process(url, RequestMethod.POST, map, bodyPostStr);
62                         String responseStr = httpResult.getContent();
63
64                         logger.info("MsbMgmrImpl -> register, responseStr is " + responseStr);
65                         
66                         if(httpResult.getStatusCode() == 201)
67                         {
68                                 logger.info("MsbMgmrImpl -> register, Successfully ");
69                         }
70                         else
71                         {
72                                 logger.error("MsbMgmrImpl -> register Error, statusCode = " + httpResult.getStatusCode());
73                         }
74
75                 } catch (IOException e) {
76                         logger.error("IOException Failed to register nokia vnfm driver! ", e);
77                 }
78
79         }
80
81         private String readVfcAdaptorInfoFromJsonFile() throws IOException {
82                 String filePath = "/etc/adapterInfo/vnfmadapterinfo.json";
83                 String fileContent = CommonUtil.getJsonStrFromFile(filePath);
84
85                 return fileContent;
86         }
87
88         @Override
89         public void unregister() {
90                 try {
91                         String url = adaptorEnv.getMsbApiUriFront() + String.format(CommonConstants.MSB_UNREGISTER_SERVICE_PATH);
92
93                         HttpResult httpResult = httpClientProcessor.process(url, RequestMethod.DELETE, null, null);
94                         String responseStr = httpResult.getContent();
95
96                         logger.info("MsbMgmrImpl -> unregister, responseStr is " + responseStr);
97                         if(httpResult.getStatusCode() == 204)
98                         {
99                                 logger.info("MsbMgmrImpl -> register, Successfully ");
100                         }
101                         else
102                         {
103                                 logger.error("MsbMgmrImpl -> register Error, statusCode = " + httpResult.getStatusCode());
104                         }
105
106                 } catch (Exception e) {
107                         logger.error("IOException Failed to unregister nokia vnfm driver! ", e);
108                 }
109
110         }
111
112         public String getServiceUrlInMsbBySeriveNameAndVersion(String serviceName, String version) throws ClientProtocolException, IOException {
113                 String url = adaptorEnv.getMsbApiUriFront() + String.format(CommonConstants.MSB_QUERY_SERVICE_PATH, serviceName, version);
114
115                 HttpResult httpResult = httpClientProcessor.process(url, RequestMethod.GET, null, null);
116
117                 String responseStr = httpResult.getContent();
118                 logger.info("MsbMgmrImpl -> getServiceUrlInMsbBySeriveNameAndVersion, responseStr is " + responseStr);
119                 String serviceUrl = "";
120                 if(httpResult.getStatusCode() == 200)
121                 {
122                         MsbServiceInfo serviceInfo = gson.fromJson(responseStr, MsbServiceInfo.class);
123                         if (null == serviceInfo) {
124                                 logger.error("There is no service in MSB for serviceName = {} and version = {}", serviceName, version);
125                         }
126                         
127                         serviceUrl = serviceInfo.getUrl();
128                         logger.info("Service Url in MSB for serviceName = {} and version = {} is {}", serviceName, version, serviceUrl);
129                 }
130                 else
131                 {
132                         logger.error("MsbMgmrImpl -> getServiceUrlInMsbBySeriveNameAndVersion Error, statusCode = " + httpResult.getStatusCode());
133                 }
134
135
136                 return serviceUrl;
137         }
138
139         public void setAdaptorEnv(AdaptorEnv env) {
140                 this.adaptorEnv = env;
141         }
142
143         public static final void main(String[] args) {
144                 MsbMgmrImpl impl = new MsbMgmrImpl();
145                 impl.register();
146         }
147
148 }