use of com.webank.wedatasphere.qualitis.entity.ClusterInfo in project Qualitis by WeBankFinTech.
the class MetaDataClientImpl method getColumnByUserAndTable.
@Override
public DataInfo<ColumnInfoDetail> getColumnByUserAndTable(GetColumnByUserAndTableRequest request) throws UnExpectedRequestException, MetaDataAcquireFailedException {
ClusterInfo clusterInfo = checkClusterNameExists(request.getClusterName());
String authUser = request.getLoginUser();
// send request to get dbs
String url = getPath(clusterInfo.getLinkisAddress()).path(linkisConfig.getColumnPath()).queryParam("database", request.getDbName()).queryParam("table", request.getTableName()).toString();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Token-User", authUser);
headers.add("Token-Code", clusterInfo.getLinkisToken());
HttpEntity<Object> entity = new HttpEntity<>(headers);
LOGGER.info("Start to get column by user and cluster and db and table by linkis. url: {}, method: {}, body: {}", url, javax.ws.rs.HttpMethod.GET, entity);
Map<String, Object> response = restTemplate.exchange(url, HttpMethod.GET, entity, Map.class).getBody();
LOGGER.info("Finished to get table by user and cluster and and table by linkis. response: {}", response);
if (!checkResponse(response)) {
String message = (String) response.get("message");
LOGGER.error("Error! Can not get meta data from linkis, message: " + message);
throw new MetaDataAcquireFailedException("Error! Can not get meta data from linkis, exception: " + message);
}
List<Map<String, String>> allTables = ((List<Map<String, String>>) ((Map<String, Object>) response.get("data")).get("columns"));
DataInfo<ColumnInfoDetail> dataInfo = new DataInfo<>(allTables.size());
if (CollectionUtils.isEmpty(allTables)) {
return dataInfo;
}
List<ColumnInfoDetail> details = new ArrayList<>();
for (Map<String, String> table : allTables) {
ColumnInfoDetail detail = new ColumnInfoDetail(table.get("columnName"), table.get("columnType"));
details.add(detail);
}
dataInfo.setContent(details);
return dataInfo;
}
use of com.webank.wedatasphere.qualitis.entity.ClusterInfo in project Qualitis by WeBankFinTech.
the class MetaDataClientImpl method getDataSourceConnectParams.
@Override
public GeneralResponse<Map> getDataSourceConnectParams(String clusterName, String authUser, Long dataSourceId, Long versionId) throws UnExpectedRequestException, MetaDataAcquireFailedException {
// Check existence of cluster name
ClusterInfo clusterInfo = checkClusterNameExists(clusterName);
// send request to get dbs
UriBuilder uriBuilder = getPath(clusterInfo.getLinkisAddress()).path(linkisConfig.getDatasourceConnectParam());
if (versionId != null) {
uriBuilder.path(versionId.toString());
}
String url = uriBuilder.toString().replace("{DATA_SOURCE_ID}", dataSourceId.toString());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Token-User", authUser);
headers.add("Token-Code", clusterInfo.getLinkisToken());
HttpEntity<Object> entity = new HttpEntity<>(headers);
LOGGER.info("Start to get data source connect params by user and cluster by linkis. url: {}, method: {}, body: {}", url, javax.ws.rs.HttpMethod.GET, entity);
Map<String, Object> response = restTemplate.exchange(url, HttpMethod.GET, entity, Map.class).getBody();
LOGGER.info("Finish to get data source connect params by user and cluster by linkis. response: {}", response);
if (!checkResponse(response)) {
String message = (String) response.get("message");
LOGGER.error("Error! Can not get meta data from linkis, message: " + message);
throw new MetaDataAcquireFailedException("Error! Can not get meta data from linkis, exception: " + message);
}
Map data = (Map) response.get(LinkisResponseKeyEnum.DATA.getKey());
return new GeneralResponse<>("200", "Success to get datasource connect params", data);
}
use of com.webank.wedatasphere.qualitis.entity.ClusterInfo in project Qualitis by WeBankFinTech.
the class MetaDataClientImpl method getClusterByUser.
@Override
public DataInfo<ClusterInfoDetail> getClusterByUser(GetClusterByUserRequest request) {
Long total = clusterInfoDao.countAll();
List<ClusterInfo> allCluster = clusterInfoDao.findAllClusterInfo(request.getStartIndex(), request.getPageSize());
DataInfo<ClusterInfoDetail> dataInfo = new DataInfo<>(total.intValue());
if (CollectionUtils.isEmpty(allCluster)) {
return dataInfo;
}
List<ClusterInfoDetail> details = new ArrayList<>();
for (ClusterInfo clusterInfo : allCluster) {
ClusterInfoDetail detail = new ClusterInfoDetail(clusterInfo.getClusterName());
details.add(detail);
}
dataInfo.setContent(details);
return dataInfo;
}
use of com.webank.wedatasphere.qualitis.entity.ClusterInfo in project Qualitis by WeBankFinTech.
the class MetaDataClientImpl method getTableStatisticsInfo.
@Override
public TableStatisticsInfo getTableStatisticsInfo(String clusterName, String dbName, String tableName, String userName) throws UnExpectedRequestException, MetaDataAcquireFailedException, RestClientException {
ClusterInfo clusterInfo = checkClusterNameExists(clusterName);
// send request to get dbs
String url = getPath(clusterInfo.getLinkisAddress()).path(linkisConfig.getTableStatistics()).queryParam("database", dbName).queryParam("tableName", tableName).toString();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Token-User", userName);
headers.add("Token-Code", clusterInfo.getLinkisToken());
HttpEntity<Object> entity = new HttpEntity<>(headers);
LOGGER.info("Start to get table info by linkis. url: {}, method: {}, body: {}", url, javax.ws.rs.HttpMethod.GET, entity);
Map<String, Object> response;
try {
response = restTemplate.exchange(url, HttpMethod.GET, entity, Map.class).getBody();
} catch (ResourceAccessException e) {
LOGGER.error(e.getMessage(), e);
throw new MetaDataAcquireFailedException("Error! Can not get table info from linkis, exception: " + e.getMessage(), 500);
}
LOGGER.info("Finish to get table info by linkis. response: {}", response);
if (!checkResponse(response)) {
String message = (String) response.get("message");
LOGGER.error("Error! Can not get meta data from linkis, message: " + message);
throw new MetaDataAcquireFailedException("Error! Can not get table info from linkis, exception: " + message);
}
Map<String, Object> result = (Map<String, Object>) ((Map<String, Object>) response.get("data")).get("tableStatisticInfo");
TableStatisticsInfo tableStatisticsInfo = new TableStatisticsInfo();
tableStatisticsInfo.setTableFileCount(Integer.parseInt(result.get("fileNum").toString()));
tableStatisticsInfo.setTableSize(result.get("tableSize").toString());
tableStatisticsInfo.setPartitions((List<Map>) result.get("partitions"));
return tableStatisticsInfo;
}
use of com.webank.wedatasphere.qualitis.entity.ClusterInfo in project Qualitis by WeBankFinTech.
the class MetaDataClientImpl method getColumnByCsId.
@Override
public DataInfo<ColumnInfoDetail> getColumnByCsId(GetUserColumnByCsRequest request) throws MetaDataAcquireFailedException, UnExpectedRequestException {
DataInfo<ColumnInfoDetail> result = new DataInfo<>();
List<ColumnInfoDetail> list = new ArrayList<>();
try {
LOGGER.info("Start to get columns with context service ID and table's context key. csId: {}, contextKey: {}", request.getCsId(), request.getContextKey());
ClusterInfo clusterInfo = checkClusterNameExists(request.getClusterName());
String authUser = request.getLoginUser();
// send request
String url;
if (clusterInfo.getClusterType().endsWith(LINKIS_ONE_VERSION)) {
url = getPath(clusterInfo.getLinkisAddress()).path(QUERY_WORKFLOW_COLUMN_PATH).toString();
} else {
url = getPath(clusterInfo.getLinkisAddress()).path(QUERY_CS_COLUMN_PATH).toString();
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Token-User", authUser);
headers.add("Token-Code", clusterInfo.getLinkisToken());
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("contextID", request.getCsId());
jsonObject.put("contextKey", request.getContextKey());
} catch (JSONException e) {
LOGGER.error("Failed to construct http body json, exception is : {}", e);
}
HttpEntity<Object> entity = new HttpEntity<>(jsonObject.toString(), headers);
LOGGER.info("Start to get column with context service ID and table's context key by restful API. url: {}, method: {}, body: {}", url, javax.ws.rs.HttpMethod.POST, entity);
Map<String, Object> response = restTemplate.exchange(url, HttpMethod.POST, entity, Map.class).getBody();
if (!checkResponse(response)) {
String message = (String) response.get("message");
LOGGER.error("Error! Can not get meta data from linkis, message: " + message);
throw new MetaDataAcquireFailedException("Error! Can not get meta data from linkis, exception: " + message);
}
LOGGER.info("Finished to get column with context service ID and table's context key by restful API. response: {}", response);
Map<String, Object> data = (Map<String, Object>) response.get("data");
List<Map<String, Object>> columns = (List<Map<String, Object>>) data.get("columns");
if (columns == null || columns.size() == 0) {
return result;
}
LOGGER.info("Successfully to get columns with context service ID and table's context key by restful API. csId: {}, contextKey: {}", request.getCsId(), request.getContextKey());
for (Map<String, Object> column : columns) {
ColumnInfoDetail columnInfoDetail = new ColumnInfoDetail();
columnInfoDetail.setFieldName(column.get("columnName").toString());
columnInfoDetail.setDataType(column.get("columnType").toString());
columnInfoDetail.setColumnComment(column.get("columnComment") == null ? "" : column.get("columnComment").toString());
columnInfoDetail.setPartitionField((Boolean) column.get("partitioned"));
list.add(columnInfoDetail);
}
result.setTotalCount(columns.size());
result.setContent(list);
} catch (RestClientException e) {
LOGGER.error(e.getMessage(), e);
throw new MetaDataAcquireFailedException("Error! Can not get column by context service ID", 500);
}
return result;
}
Aggregations