2 * Copyright 2016-2017, CMCC Technologies Co., Ltd.
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.openo.portal.system;
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.Iterator;
22 import java.util.List;
24 import net.sf.json.JSONObject;
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;
40 public class RegisterService {
42 private final static Logger logger = LoggerFactory.getLogger(RegisterService.class);
44 public static HashMap<String, String> msbHostMap = new HashMap<String, String>();
45 public static List<HashMap<String, String>> registerList = new ArrayList<HashMap<String, String>>();
47 public static void registerMsb(String configPath) {
48 File inputXml = new File(configPath);
49 SAXReader saxReader = new SAXReader();
52 Document document = saxReader.read(inputXml);
53 Element rootNode = document.getRootElement();
54 getMsbHostInfo(rootNode);
55 getRegisterList(rootNode);
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);
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);
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"));
76 JSONObject registerObj = JSONObject.fromObject(registerBean);
77 String registerResponse = registerPortalService(registerBean.getServiceName(), url, registerObj, "");
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());
86 private static void getMsbHostInfo(Element rootNode) {
87 Element msbHostNode = rootNode.element("msbHost");
88 Iterator iter = msbHostNode.elementIterator();
90 while (iter.hasNext()) {
91 Element element = (Element) iter.next();
92 msbHostMap.put(element.getName(), element.getText());
96 private static void getRegisterList(Element rootNode) {
97 Element registerListNode = rootNode.element("registerList");
98 Iterator iRegisterList = registerListNode.elementIterator();
100 while (iRegisterList.hasNext()) {
101 HashMap<String, String> registerMap = new HashMap<String, String>();
102 Element registerInfo = (Element) iRegisterList.next();
103 Iterator iRegisterInfo = registerInfo.elementIterator();
105 while (iRegisterInfo.hasNext()) {
106 Element element = (Element) iRegisterInfo.next();
107 registerMap.put(element.getName(), element.getText());
109 registerList.add(registerMap);
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;
120 StringEntity s = new StringEntity(json.toString());
121 s.setContentEncoding("UTF-8");
122 s.setContentType("application/json");
125 if (!CommonUtil.isEmpty(token)) {
126 post.addHeader("X-Auth-Token", token);
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)) {
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());