blob: a504a9d41d28960a343b2ab4ec5edaf283144218 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.linkis.monitor.until;
import org.apache.linkis.bml.conf.BmlConfiguration;
import org.apache.linkis.common.conf.Configuration;
import org.apache.linkis.common.utils.Utils;
import org.apache.linkis.httpclient.dws.authentication.TokenAuthenticationStrategy;
import org.apache.linkis.httpclient.dws.config.DWSClientConfig;
import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder;
import org.apache.linkis.monitor.client.MonitorHTTPClient;
import org.apache.linkis.monitor.client.MonitorHTTPClientClientImpl;
import org.apache.linkis.monitor.config.MonitorConfig;
import org.apache.linkis.monitor.entity.IndexEntity;
import org.apache.linkis.monitor.request.EmsListAction;
import org.apache.linkis.monitor.request.EntranceTaskAction;
import org.apache.linkis.monitor.response.EntranceTaskResult;
import org.apache.linkis.server.BDPJettyServerHelper;
import org.apache.linkis.ujes.client.response.EmsListResult;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.util.Assert;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HttpsUntils {
private static final Logger logger = LoggerFactory.getLogger(HttpsUntils.class);
public static DWSClientConfig dwsClientConfig = createClientConfig(null, null);
// IOUtils.closeQuietly(client);
public static MonitorHTTPClient client = new MonitorHTTPClientClientImpl(dwsClientConfig);
public static final String localHost = Utils.getLocalHostname();
public static Map<String, Object> sendHttp(String url, Map<String, Object> properties)
throws IOException {
if (null == dwsClientConfig) {
dwsClientConfig = createClientConfig(url, properties);
}
if (null == client) {
client = new MonitorHTTPClientClientImpl(dwsClientConfig);
}
EmsListAction build = EmsListAction.newBuilder().setUser("hadoop").build();
EmsListResult result = client.list(build);
return result.getResultMap();
}
public static DWSClientConfig createClientConfig(String url, Map<String, Object> properties) {
String realUrl = "";
if (StringUtils.isBlank(url)) {
realUrl = Configuration.getGateWayURL();
} else {
realUrl = url;
}
Map<String, Object> parms = new HashMap<>();
if (MapUtils.isNotEmpty(properties)) {
parms = properties;
}
int maxConnection =
(int)
parms.getOrDefault(
BmlConfiguration.CONNECTION_MAX_SIZE_SHORT_NAME(),
BmlConfiguration.CONNECTION_MAX_SIZE().getValue());
int connectTimeout =
(int)
parms.getOrDefault(
BmlConfiguration.CONNECTION_TIMEOUT_SHORT_NAME(),
BmlConfiguration.CONNECTION_TIMEOUT().getValue());
int readTimeout =
(int)
parms.getOrDefault(
BmlConfiguration.CONNECTION_READ_TIMEOUT_SHORT_NAME(),
BmlConfiguration.CONNECTION_READ_TIMEOUT().getValue());
String tokenKey =
(String)
parms.getOrDefault(
BmlConfiguration.AUTH_TOKEN_KEY_SHORT_NAME(),
BmlConfiguration.AUTH_TOKEN_KEY().getValue());
String tokenValue =
(String)
parms.getOrDefault(
BmlConfiguration.AUTH_TOKEN_VALUE_SHORT_NAME(),
BmlConfiguration.AUTH_TOKEN_VALUE().getValue());
DWSClientConfig clientConfig =
((DWSClientConfigBuilder)
(DWSClientConfigBuilder.newBuilder()
.addServerUrl(realUrl)
.connectionTimeout(connectTimeout)
.discoveryEnabled(false)
.discoveryFrequency(1, TimeUnit.MINUTES)
.loadbalancerEnabled(false)
.maxConnectionSize(maxConnection)
.retryEnabled(false)
.readTimeout(readTimeout)
.setAuthenticationStrategy(new TokenAuthenticationStrategy())
.setAuthTokenKey(tokenKey)
.setAuthTokenValue(tokenValue)))
.setDWSVersion("v1")
.build();
return clientConfig;
}
public static Map<String, Object> getEntranceTask(String url, String user, String Instance)
throws IOException {
if (null == dwsClientConfig) {
dwsClientConfig = createClientConfig(null, null);
}
if (null == client) {
client = new MonitorHTTPClientClientImpl(dwsClientConfig);
}
EntranceTaskAction build =
EntranceTaskAction.newBuilder().setUser(user).setInstance(Instance).build();
EntranceTaskResult result = client.entranList(build);
return result.getResultMap();
}
public static void sendIndex(List<IndexEntity> list) throws IOException {
Map<String, Object> parm = new HashMap<>();
parm.put("userAuthKey", MonitorConfig.ECM_TASK_USER_AUTHKEY.getValue());
parm.put("metricDataList", list);
String json = BDPJettyServerHelper.gson().toJson(parm);
RequestConfig requestConfig = RequestConfig.DEFAULT;
StringEntity entity =
new StringEntity(
json, ContentType.create(ContentType.APPLICATION_JSON.getMimeType(), "UTF-8"));
entity.setContentEncoding("UTF-8");
HttpPost httpPost = new HttpPost(MonitorConfig.ECM_TASK_IMURL.getValue());
httpPost.setConfig(requestConfig);
httpPost.setEntity(entity);
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse execute = httpClient.execute(httpPost);
String responseStr = EntityUtils.toString(execute.getEntity(), "UTF-8");
Map<String, String> map = BDPJettyServerHelper.gson().fromJson(responseStr, Map.class);
logger.info("send index response :{}", map);
Assert.isTrue(!"0".equals(map.get("resultCode")), map.get("resultMsg"));
}
}