CLIENT GUI Framework
[vnfsdk/refrepo.git] / portal-package / src / main / java / org / openo / portal / system / RegisterService.java
1 /*
2  * Copyright 2016-2017, CMCC 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 package org.openo.portal.system;
17
18 import java.io.File;
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.Iterator;
22 import java.util.List;
23
24 import net.sf.json.JSONObject;
25
26 import org.apache.http.HttpResponse;
27 import org.apache.http.client.methods.HttpPost;
28 import org.apache.http.entity.StringEntity;
29 import org.apache.http.impl.client.DefaultHttpClient;
30 import org.apache.http.util.EntityUtils;
31 import org.apache.commons.httpclient.HttpStatus;
32 import org.dom4j.Document;
33 import org.dom4j.Element;
34 import org.dom4j.io.SAXReader;
35 import org.openo.portal.bean.MsbRegisterBean;
36 import org.openo.portal.bean.ServiceNodeBean;
37 import org.slf4j.Logger;
38 import org.slf4j.LoggerFactory;
39
40 public class RegisterService {
41
42     private final static Logger logger = LoggerFactory.getLogger(RegisterService.class);
43
44     public static HashMap<String, String> msbHostMap = new HashMap<String, String>();
45     public static List<HashMap<String, String>> registerList = new ArrayList<HashMap<String, String>>();
46
47     public static void registerMsb(String configPath) {
48         File inputXml = new File(configPath);
49         SAXReader saxReader = new SAXReader();
50
51         try {
52             Document document = saxReader.read(inputXml);
53             Element rootNode = document.getRootElement();
54             getMsbHostInfo(rootNode);
55             getRegisterList(rootNode);
56
57             String url = msbHostMap.get("hostIp") + Constants.MARK_COLON + msbHostMap.get("hostPort") + msbHostMap.get("msbApiRootDomain");
58             for (int i = 0; i < registerList.size(); i++) {
59                 HashMap<String, String> registerInfo = registerList.get(i);
60
61                 ServiceNodeBean serviceNode = new ServiceNodeBean();
62                 serviceNode.setIp(registerInfo.get("ip"));
63                 serviceNode.setPort(registerInfo.get("port"));
64                 serviceNode.setTtl(Integer.valueOf(registerInfo.get("ttl")));
65                 List<ServiceNodeBean> nodeList =  new ArrayList<ServiceNodeBean>();
66                 nodeList.add(serviceNode);
67
68                 MsbRegisterBean registerBean = new MsbRegisterBean();
69                 registerBean.setNodes(nodeList);
70                 registerBean.setServiceName(registerInfo.get("serviceName"));
71                 registerBean.setUrl(registerInfo.get("url"));
72                 registerBean.setProtocol(registerInfo.get("protocol"));
73                 registerBean.setVisualRange(registerInfo.get("visualRange"));
74                 registerBean.setLb_policy(registerInfo.get("lb_policy"));
75
76                 JSONObject registerObj = JSONObject.fromObject(registerBean);
77                 String registerResponse = registerPortalService(registerBean.getServiceName(), url, registerObj, "");
78             }
79             logger.info("open-o portal register task succeeded.");
80         } catch (Exception e){
81             logger.error("open-o portal register task failed.");
82             logger.error(e.getMessage());
83         }
84     }
85
86     private static void getMsbHostInfo(Element rootNode) {
87         Element msbHostNode = rootNode.element("msbHost");
88         Iterator iter = msbHostNode.elementIterator();
89
90         while (iter.hasNext()) {
91             Element element = (Element) iter.next();
92             msbHostMap.put(element.getName(), element.getText());
93         }
94     }
95
96     private static void getRegisterList(Element rootNode) {
97         Element registerListNode = rootNode.element("registerList");
98         Iterator iRegisterList = registerListNode.elementIterator();
99
100         while (iRegisterList.hasNext()) {
101             HashMap<String, String> registerMap = new HashMap<String, String>();
102             Element registerInfo = (Element) iRegisterList.next();
103             Iterator iRegisterInfo = registerInfo.elementIterator();
104
105             while (iRegisterInfo.hasNext()) {
106                 Element element = (Element) iRegisterInfo.next();
107                 registerMap.put(element.getName(), element.getText());
108             }
109             registerList.add(registerMap);
110         }
111     }
112
113     private static String registerPortalService(String serviceName, String url, JSONObject json, String token) {
114         DefaultHttpClient client = new DefaultHttpClient();
115         HttpPost post = new HttpPost(url);
116         String response = null;
117
118         try {
119             if (null != json) {
120                 StringEntity s = new StringEntity(json.toString());
121                 s.setContentEncoding("UTF-8");
122                 s.setContentType("application/json");
123                 post.setEntity(s);
124             }
125             if (!CommonUtil.isEmpty(token)) {
126                 post.addHeader("X-Auth-Token", token);
127             }
128             HttpResponse res = client.execute(post);
129             if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK
130                     || res.getStatusLine().getStatusCode() == HttpStatus.SC_CREATED) {
131                 String result = EntityUtils.toString(res.getEntity());
132                 if (!CommonUtil.isEmpty(result)) {
133                     response = result;
134                 } else {
135                     response = null;
136                 }
137             }
138             logger.info("register task [" + serviceName + "] completed successfully.");
139         } catch (Exception e) {
140             logger.error("register task [" + serviceName + "] failed because of errors.");
141             logger.error(e.getMessage());
142         }
143
144         return response;
145     }
146 }