/**
* Copyright 2016-2017 ZTE, Inc. and others.
*
- * Licensed 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
+ * Licensed 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
+ * 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.
+ * 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.onap.msb.sdclient.wrapper;
import com.fasterxml.jackson.core.type.TypeReference;
-public class ConsulServiceWrapper {
+public class ConsulServiceWrapper {
- private static ConsulServiceWrapper instance = new ConsulServiceWrapper();
+ private static ConsulServiceWrapper instance = new ConsulServiceWrapper();
-
- private ConsulServiceWrapper() {}
- public static ConsulServiceWrapper getInstance() {
- return instance;
- }
- private static final Logger LOGGER = LoggerFactory.getLogger(ConsulServiceWrapper.class);
+ private ConsulServiceWrapper() {}
- /**
- * Title: getAllMicroServiceInstances Description: 获取全部服务
- *
- * @return
- * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#getAllMicroServiceInstances()
- */
- public List<MicroServiceFullInfo> getAllMicroServiceInstances() {
+ public static ConsulServiceWrapper getInstance() {
+ return instance;
+ }
- String consulServiceUrl =
- (new StringBuilder().append("http://").append(ConfigUtil.getInstance().getConsulAddress())
- .append(DiscoverUtil.CONSUL_CATALOG_URL).append("/services")).toString();
+ private static final Logger LOGGER = LoggerFactory.getLogger(ConsulServiceWrapper.class);
- String resultJson = HttpClientUtil.httpGet(consulServiceUrl);
- Map<String, String[]> catalogServiceMap =
- (Map<String, String[]>) JacksonJsonUtil.jsonToMapBean(resultJson);
+ /**
+ * Title: getAllMicroServiceInstances Description: 获取全部服务
+ *
+ * @return
+ * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#getAllMicroServiceInstances()
+ */
+ public List<MicroServiceFullInfo> getAllMicroServiceInstances() {
+
+ String consulServiceUrl =
+ (new StringBuilder().append("http://").append(ConfigUtil.getInstance().getConsulAddress())
+ .append(DiscoverUtil.CONSUL_CATALOG_URL).append("/services")).toString();
+
+ String resultJson = HttpClientUtil.httpGet(consulServiceUrl);
+ Map<String, String[]> catalogServiceMap = (Map<String, String[]>) JacksonJsonUtil.jsonToMapBean(resultJson);
+
+ List<MicroServiceFullInfo> microServiceFullInfoArray = new ArrayList<MicroServiceFullInfo>();
+
+ if (catalogServiceMap.isEmpty()) {
+ return microServiceFullInfoArray;
+ }
+
+ for (Map.Entry<String, String[]> entry : catalogServiceMap.entrySet()) {
+ Set<String> versionSet = new HashSet<String>();
+
+ Set<String> nsSet = new HashSet<String>();
+ nsSet.add("");
+
+ String consul_serviceName = entry.getKey().toString();
+ String[] tagList = entry.getValue();
+
+ for (String tag : tagList) {
+
+ if (tag.startsWith("\"base\"")) {
+ String ms_base_json = tag.split("\"base\":")[1];
+
+ try {
+ Map<String, String> baseMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
+ if (baseMap.get("version") != null) {
+ versionSet.add(baseMap.get("version"));
+ } else {
+ versionSet.add("");
+ }
+ } catch (Exception e) {
+ LOGGER.error(e.getMessage());
+ }
+
+ continue;
+
+ }
+
+ if (tag.startsWith("\"ns\"")) {
+ String ms_ns_json = tag.split("\"ns\":")[1];
+
+ try {
+ Map<String, String> namespaceMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
+ if (namespaceMap.get("namespace") != null) {
+ nsSet.add(namespaceMap.get("namespace"));
+ } else {
+ nsSet.add("");
+ }
+
+ continue;
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ LOGGER.error(e.getMessage());
+ }
+
+ continue;
+
+ }
- List<MicroServiceFullInfo> microServiceFullInfoArray = new ArrayList<MicroServiceFullInfo>();
- if(catalogServiceMap.isEmpty()){
- return microServiceFullInfoArray;
- }
-
- for (Map.Entry<String, String[]> entry : catalogServiceMap.entrySet()) {
- Set<String> versionSet = new HashSet<String>();
-
- Set<String> nsSet = new HashSet<String>();
- nsSet.add("");
-
- String consul_serviceName = entry.getKey().toString();
- String[] tagList = entry.getValue();
-
- for (String tag : tagList) {
-
- if (tag.startsWith("\"base\"")) {
- String ms_base_json = tag.split("\"base\":")[1];
-
- try {
- Map<String, String> baseMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
- if (baseMap.get("version") != null) {
- versionSet.add( baseMap.get("version"));
}
- else{
- versionSet.add("");
+
+ for (String ms_version : versionSet) {
+ for (String ns : nsSet) {
+ MicroServiceFullInfo microServiceFullInfo =
+ getMicroServiceInstanceForAll(consul_serviceName, ms_version, ns);
+ if (microServiceFullInfo != null && !"consul".equals(microServiceFullInfo.getServiceName())) {
+
+ microServiceFullInfoArray.add(microServiceFullInfo);
+ }
+ }
}
- } catch (Exception e) {
- LOGGER.error(e.getMessage());
- }
- continue;
}
- if (tag.startsWith("\"ns\"")) {
- String ms_ns_json = tag.split("\"ns\":")[1];
- try {
- Map<String, String> namespaceMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
- if (namespaceMap.get("namespace") != null) {
- nsSet.add(namespaceMap.get("namespace"));
- } else {
- nsSet.add("");
+ return microServiceFullInfoArray;
+ }
+
+
+
+ /**
+ * @Title getMicroServiceInstanceForAll
+ * @Description TODO(通过列表遍历获取单个服务信息)
+ * @param consul_serviceName
+ * @param version
+ * @param namespace
+ * @return
+ * @return MicroServiceFullInfo
+ */
+ public MicroServiceFullInfo getMicroServiceInstanceForAll(String consul_serviceName, String version,
+ String namespace) {
+
+ try {
+ ConsulResponse consulResponse = getHealthServices(consul_serviceName, false, "", "");
+ if (consulResponse == null) {
+ LOGGER.error("microservice not found: serviceName-" + consul_serviceName + ", namespace-" + namespace);
+ return null;
+ }
+
+ String serviceName = consul_serviceName;
+ if (StringUtils.isNotBlank(namespace)) {
+ if (consul_serviceName.endsWith("-" + namespace)) {
+ serviceName = consul_serviceName.substring(0, consul_serviceName.length() - namespace.length() - 1);
+ }
}
- continue;
- } catch (Exception e) {
- // TODO Auto-generated catch block
- LOGGER.error(e.getMessage());
- }
+ ConsulResponse serviceResponse =
+ getMicroServiceInfo(consulResponse, serviceName, version, false, "", namespace);
+ return (MicroServiceFullInfo) serviceResponse.getResponse();
+ } catch (Exception e) {
+ if (StringUtils.isNotBlank(namespace)) {
+ LOGGER.error("get service List have error:serviceName[" + consul_serviceName + "],version[" + version
+ + "],namespace[" + namespace + "]:" + e.getMessage());
+ }
+ }
+
+ return null;
+ }
- continue;
+ /**
+ * @Title getMicroServiceInstance
+ * @Description TODO(通过Rest接口获取单个服务信息)
+ * @param serviceName
+ * @param version
+ * @param ifPassStatus
+ * @param wait
+ * @param index
+ * @param labels
+ * @param namespace
+ * @return
+ * @return ConsulResponse
+ */
+ public ConsulResponse getMicroServiceInstance(String serviceName, String version, boolean ifPassStatus, String wait,
+ String index, String labels, String namespace) {
+
+ if ("null".equals(version)) {
+ version = "";
}
- }
+ checkServiceNameAndVersion(serviceName, version);
- for(String ms_version:versionSet){
- for (String ns : nsSet) {
- MicroServiceFullInfo microServiceFullInfo =
- getMicroServiceInstanceForAll(consul_serviceName, ms_version, ns);
- if (microServiceFullInfo != null && !"consul".equals(microServiceFullInfo.getServiceName())) {
+ if (!RegExpTestUtil.labelRegExpTest(labels)) {
+ throw new UnprocessableEntityException(
+ "get MicroServiceInfo FAIL: The label query parameter format is wrong (key:value)");
+ }
- microServiceFullInfoArray.add(microServiceFullInfo);
+ String consul_serviceName = getServiceName4Consul(serviceName, namespace);
+
+ ConsulResponse consulResponse = getHealthServices(consul_serviceName, ifPassStatus, wait, index);
+ if (consulResponse == null) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ", namespace-" + namespace;
+ throw new ExtendedNotFoundException(errInfo);
}
- }
- }
+ return getMicroServiceInfo(consulResponse, serviceName, version, ifPassStatus, labels, namespace);
}
- return microServiceFullInfoArray;
- }
-
-
-
-
- /**
- * @Title getMicroServiceInstanceForAll
- * @Description TODO(通过列表遍历获取单个服务信息)
- * @param consul_serviceName
- * @param version
- * @param namespace
- * @return
- * @return MicroServiceFullInfo
- */
- public MicroServiceFullInfo getMicroServiceInstanceForAll(String consul_serviceName, String version,
- String namespace) {
-
- try{
- ConsulResponse consulResponse = getHealthServices(consul_serviceName, false, "", "");
- if (consulResponse == null) {
- LOGGER.error( "microservice not found: serviceName-" + consul_serviceName+", namespace-"+namespace);
- return null;
- }
-
- String serviceName=consul_serviceName;
- if (StringUtils.isNotBlank(namespace)) {
- if(consul_serviceName.endsWith("-"+namespace)){
- serviceName=consul_serviceName.substring(0,consul_serviceName.length()-namespace.length()-1);
- }
- }
-
-
- ConsulResponse serviceResponse =
- getMicroServiceInfo(consulResponse,serviceName,version,
- false, "",namespace);
- return (MicroServiceFullInfo) serviceResponse.getResponse();
- }
- catch(Exception e){
- if(StringUtils.isNotBlank(namespace)){
- LOGGER.error("get service List have error:serviceName["+consul_serviceName+"],version["+version+"],namespace["+namespace+"]:"+e.getMessage());
- }
- }
-
- return null;
- }
-
-
- /**
- * @Title getMicroServiceInstance
- * @Description TODO(通过Rest接口获取单个服务信息)
- * @param serviceName
- * @param version
- * @param ifPassStatus
- * @param wait
- * @param index
- * @param labels
- * @param namespace
- * @return
- * @return ConsulResponse
- */
- public ConsulResponse getMicroServiceInstance(String serviceName, String version,
- boolean ifPassStatus, String wait, String index, String labels, String namespace){
-
- if ("null".equals(version)) {
- version = "";
- }
-
- checkServiceNameAndVersion(serviceName,version);
-
- if (!RegExpTestUtil.labelRegExpTest(labels)) {
- throw new UnprocessableEntityException(
- "get MicroServiceInfo FAIL: The label query parameter format is wrong (key:value)");
- }
-
- String consul_serviceName=getServiceName4Consul(serviceName,namespace);
-
- ConsulResponse consulResponse = getHealthServices(consul_serviceName, ifPassStatus, wait, index);
- if (consulResponse == null) {
- String errInfo = "microservice not found: serviceName-" + serviceName+", namespace-"+namespace;
- throw new ExtendedNotFoundException(errInfo);
- }
-
- return getMicroServiceInfo(consulResponse,serviceName,version,
- ifPassStatus, labels,namespace);
-
- }
-
-
-
- /**
- * Title: getMicroServiceInstance Description:获取指定服务信息
- *
- * @param serviceName
- * @param version
- * @return
- * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#getMicroServiceInstance(java.lang.String,
- * java.lang.String)
- */
-
- public ConsulResponse getMicroServiceInfo(ConsulResponse consulResponse,String serviceName, String version,
- boolean ifPassStatus, String labels, String namespace) {
- // TODO Auto-generated method stub
-
-
-
- String resultJson = (String) consulResponse.getResponse();
- List<HealthService> healthServiceList =
- JacksonJsonUtil.jsonToListBean(resultJson, new TypeReference<List<HealthService>>() {});
-
-
- if (healthServiceList == null || healthServiceList.size() == 0) {
- String errInfo = "microservice not found: serviceName-" + serviceName+", namespace-"+namespace;
- throw new ExtendedNotFoundException(errInfo);
+ /**
+ * Title: getMicroServiceInstance Description:获取指定服务信息
+ *
+ * @param serviceName
+ * @param version
+ * @return
+ * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#getMicroServiceInstance(java.lang.String,
+ * java.lang.String)
+ */
- }
+ public ConsulResponse getMicroServiceInfo(ConsulResponse consulResponse, String serviceName, String version,
+ boolean ifPassStatus, String labels, String namespace) {
+ // TODO Auto-generated method stub
+
+
+
+ String resultJson = (String) consulResponse.getResponse();
+ List<HealthService> healthServiceList =
+ JacksonJsonUtil.jsonToListBean(resultJson, new TypeReference<List<HealthService>>() {});
- try {
- // label query,format key:value|value2,key2:value2
- boolean islabelQuery = false;
- Map<String, String> query_labelMap = new HashMap<String, String>();
- if (StringUtils.isNotBlank(labels)) {
- islabelQuery = true;
- String[] routeLabels = StringUtils.split(labels, ",");
+ if (healthServiceList == null || healthServiceList.size() == 0) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ", namespace-" + namespace;
+ throw new ExtendedNotFoundException(errInfo);
- for (int i = 0; i < routeLabels.length; i++) {
- String[] labelArray = StringUtils.split(routeLabels[i], ":");
- query_labelMap.put(labelArray[0], labelArray[1]);
}
- }
+ try {
- MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
- Set<NodeInfo> nodes = new HashSet<NodeInfo>();
- Set<String> serviceLabels = new HashSet<String>();
- Set<KeyVaulePair> serviceMetadatas = new HashSet<KeyVaulePair>();
- Set<String> serviceNetworkPlane = new HashSet<String>();
- String nodeNamespace = "";
+ // label query,format key:value|value2,key2:value2
+ boolean islabelQuery = false;
+ Map<String, String> query_labelMap = new HashMap<String, String>();
+ if (StringUtils.isNotBlank(labels)) {
+ islabelQuery = true;
+ String[] routeLabels = StringUtils.split(labels, ",");
-
-
- for (HealthService healthService : healthServiceList) {
- Service service = healthService.getService();
- List<String> tagList = service.getTags();
+ for (int i = 0; i < routeLabels.length; i++) {
+ String[] labelArray = StringUtils.split(routeLabels[i], ":");
+ query_labelMap.put(labelArray[0], labelArray[1]);
+ }
+ }
- String ms_url = "", ms_version = "", ms_protocol = "", ms_status = "", ms_publish_port = "", ms_is_manual =
- "", ms_visualRange = "1", ms_network_plane_type = "",ms_lb_policy="",ms_host="",ms_path="";
- List<KeyVaulePair> ms_metadata = new ArrayList<KeyVaulePair>();
-
- List<String> nodeLabels = new ArrayList<String>();
- Map<String, String> labelMap = new HashMap<String, String>();
-
- NodeInfo node = new NodeInfo();
- node.setIp(service.getAddress());
- node.setPort(String.valueOf(service.getPort()));
- node.setNodeId(service.getId());
+ MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
+ Set<NodeInfo> nodes = new HashSet<NodeInfo>();
+ Set<String> serviceLabels = new HashSet<String>();
+ Set<KeyVaulePair> serviceMetadatas = new HashSet<KeyVaulePair>();
+ Set<String> serviceNetworkPlane = new HashSet<String>();
+ String nodeNamespace = "";
- try {
+ for (HealthService healthService : healthServiceList) {
+ Service service = healthService.getService();
+ List<String> tagList = service.getTags();
- for (String tag : tagList) {
+ String ms_url = "", ms_version = "", ms_protocol = "", ms_status = "", ms_publish_port = "",
+ ms_is_manual = "", ms_visualRange = "1", ms_network_plane_type = "", ms_lb_policy = "",
+ ms_host = "", ms_path = "";
+ List<KeyVaulePair> ms_metadata = new ArrayList<KeyVaulePair>();
+ List<String> nodeLabels = new ArrayList<String>();
+ Map<String, String> labelMap = new HashMap<String, String>();
- if (tag.startsWith("\"base\"")) {
- String ms_base_json = tag.split("\"base\":")[1];
+ NodeInfo node = new NodeInfo();
- Map<String, String> baseMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
- ms_url = (baseMap.get("url") == null ? "" : baseMap.get("url"));
- ms_version = (baseMap.get("version") == null ? "" : baseMap.get("version"));
- ms_protocol = (baseMap.get("protocol") == null ? "" : baseMap.get("protocol"));
- ms_status = (baseMap.get("status") == null ? "1" : baseMap.get("status"));
+ node.setIp(service.getAddress());
+ node.setPort(String.valueOf(service.getPort()));
+ node.setNodeId(service.getId());
- if (baseMap.get("publish_port") != null) {
- ms_publish_port = (baseMap.get("publish_port"));
- }
- if (baseMap.get("is_manual") != null) {
- ms_is_manual = baseMap.get("is_manual");
- }
+ try {
- if (baseMap.get("ha_role") != null) {
- node.setHa_role(baseMap.get("ha_role"));
- }
-
- if (baseMap.get("host") != null) {
- ms_host=baseMap.get("host");
- }
-
- if (baseMap.get("path") != null) {
- ms_path=baseMap.get("path");
- }
+ for (String tag : tagList) {
- continue;
- }
- if (tag.startsWith("\"labels\"")) {
- String ms_labels_json = "{"+tag.split("\"labels\":\\{")[1];
- labelMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_labels_json, Map.class);
+ if (tag.startsWith("\"base\"")) {
+ String ms_base_json = tag.split("\"base\":")[1];
-
+ Map<String, String> baseMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
+ ms_url = (baseMap.get("url") == null ? "" : baseMap.get("url"));
+ ms_version = (baseMap.get("version") == null ? "" : baseMap.get("version"));
+ ms_protocol = (baseMap.get("protocol") == null ? "" : baseMap.get("protocol"));
+ ms_status = (baseMap.get("status") == null ? "1" : baseMap.get("status"));
- for (Map.Entry<String, String> labelEntry : labelMap.entrySet()) {
- if ("visualRange".equals(labelEntry.getKey())) {
- ms_visualRange = labelEntry.getValue();
- } else if ("network_plane_type".equals(labelEntry.getKey())) {
- ms_network_plane_type = labelEntry.getValue();
- } else {
- nodeLabels.add(labelEntry.getKey() + ":" + labelEntry.getValue());
- }
+ if (baseMap.get("publish_port") != null) {
+ ms_publish_port = (baseMap.get("publish_port"));
+ }
- }
+ if (baseMap.get("is_manual") != null) {
+ ms_is_manual = baseMap.get("is_manual");
-
- continue;
- }
+ }
- if (tag.startsWith("\"ns\"")) {
- String ms_namespace_json = tag.split("\"ns\":")[1];
- Map<String, String> namespaceMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_namespace_json, Map.class);
+ if (baseMap.get("ha_role") != null) {
+ node.setHa_role(baseMap.get("ha_role"));
+ }
- if (namespaceMap.get("namespace") != null) {
- nodeNamespace = namespaceMap.get("namespace");
- } else {
- nodeNamespace = "";
- }
+ if (baseMap.get("host") != null) {
+ ms_host = baseMap.get("host");
+ }
- continue;
- }
+ if (baseMap.get("path") != null) {
+ ms_path = baseMap.get("path");
+ }
- if (tag.startsWith("\"lb\"")) {
- String ms_lb_json = tag.split("\"lb\":")[1];
- Map<String, String> lbMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_lb_json, Map.class);
+ continue;
+ }
- if (lbMap.get("lb_policy") != null) {
- ms_lb_policy = lbMap.get("lb_policy");
- if (ms_lb_policy.startsWith("hash") || ms_lb_policy.equals("ip_hash")) {
- ms_lb_policy = "ip_hash";
- }
-
- }
+ if (tag.startsWith("\"labels\"")) {
+ String ms_labels_json = "{" + tag.split("\"labels\":\\{")[1];
+ labelMap = (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_labels_json, Map.class);
- if (lbMap.get("lb_server_params") != null) {
- node.setLb_server_params(lbMap.get("lb_server_params").replace(" ", ","));
- }
- continue;
- }
- if (tag.startsWith("\"checks\"")) {
- String ms_check_json = tag.split("\"checks\":")[1];
- Map<String, String> checkMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_check_json, Map.class);
+ for (Map.Entry<String, String> labelEntry : labelMap.entrySet()) {
+ if ("visualRange".equals(labelEntry.getKey())) {
+ ms_visualRange = labelEntry.getValue();
+ } else if ("network_plane_type".equals(labelEntry.getKey())) {
+ ms_network_plane_type = labelEntry.getValue();
+ } else {
+ nodeLabels.add(labelEntry.getKey() + ":" + labelEntry.getValue());
+ }
+
+ }
+
+
+ continue;
+ }
+
+ if (tag.startsWith("\"ns\"")) {
+ String ms_namespace_json = tag.split("\"ns\":")[1];
+ Map<String, String> namespaceMap = (Map<String, String>) JacksonJsonUtil
+ .jsonToBean(ms_namespace_json, Map.class);
+
+ if (namespaceMap.get("namespace") != null) {
+ nodeNamespace = namespaceMap.get("namespace");
+ } else {
+ nodeNamespace = "";
+ }
+
+ continue;
+ }
+
+ if (tag.startsWith("\"lb\"")) {
+ String ms_lb_json = tag.split("\"lb\":")[1];
+ Map<String, String> lbMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_lb_json, Map.class);
+
+ if (lbMap.get("lb_policy") != null) {
+ ms_lb_policy = lbMap.get("lb_policy");
+ if (ms_lb_policy.startsWith("hash") || ms_lb_policy.equals("ip_hash")) {
+ ms_lb_policy = "ip_hash";
+ }
+
+ }
+
+ if (lbMap.get("lb_server_params") != null) {
+ node.setLb_server_params(lbMap.get("lb_server_params").replace(" ", ","));
+ }
+
+ continue;
+ }
+
+ if (tag.startsWith("\"checks\"")) {
+ String ms_check_json = tag.split("\"checks\":")[1];
+ Map<String, String> checkMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_check_json, Map.class);
+
+
+ // 自动注册健康检查
+ if (StringUtils.isNotBlank(checkMap.get("ttl"))) {
+ node.setCheckType("TTL");
+ node.setTtl(checkMap.get("ttl"));
+ } else if (StringUtils.isNotBlank(checkMap.get("http"))) {
+ node.setCheckType("HTTP");
+ node.setCheckUrl(checkMap.get("http"));
+ if (checkMap.get("interval") != null)
+ node.setCheckInterval(checkMap.get("interval"));
+ if (checkMap.get("timeout") != null)
+ node.setCheckTimeOut(checkMap.get("timeout"));
+ } else if (StringUtils.isNotBlank(checkMap.get("tcp"))) {
+ node.setCheckType("TCP");
+ node.setCheckUrl(checkMap.get("tcp"));
+ if (checkMap.get("interval") != null)
+ node.setCheckInterval(checkMap.get("interval"));
+ if (checkMap.get("timeout") != null)
+ node.setCheckTimeOut(checkMap.get("timeout"));
+ }
+
+ continue;
+ }
+
+ if (tag.startsWith("\"metadata\"")) {
+ String ms_metadata_json = "{" + tag.split("\"metadata\":\\{")[1];
+ Map<String, String> metadataMap = (Map<String, String>) JacksonJsonUtil
+ .jsonToBean(ms_metadata_json, Map.class);
-
- //自动注册健康检查
- if (StringUtils.isNotBlank(checkMap.get("ttl"))){
- node.setCheckType("TTL");
- node.setTtl(checkMap.get("ttl"));
+
+
+ for (Map.Entry<String, String> entry : metadataMap.entrySet()) {
+ KeyVaulePair keyVaulePair = new KeyVaulePair();
+ keyVaulePair.setKey(entry.getKey());
+ keyVaulePair.setValue(entry.getValue());
+ ms_metadata.add(keyVaulePair);
+ }
+
+ continue;
+ }
+
+
+
+ }
+
+ } catch (Exception e) {
+ LOGGER.error(serviceName + " read tag throw exception", e);
}
- else if(StringUtils.isNotBlank(checkMap.get("http"))){
- node.setCheckType("HTTP");
- node.setCheckUrl(checkMap.get("http"));
- if (checkMap.get("interval") != null) node.setCheckInterval(checkMap.get("interval"));
- if (checkMap.get("timeout") != null) node.setCheckTimeOut(checkMap.get("timeout"));
+
+ // 健康检查信息
+ List<Check> checks = healthService.getChecks();
+ node.setStatus("passing");
+ for (Check check : checks) {
+ if (!"passing".equals(check.getStatus())) {
+ node.setStatus(check.getStatus());
+ break;
+ }
+ }
+
+ if (!ms_version.equals(version)) {
+ continue;
}
- else if(StringUtils.isNotBlank(checkMap.get("tcp"))){
- node.setCheckType("TCP");
- node.setCheckUrl(checkMap.get("tcp"));
- if (checkMap.get("interval") != null) node.setCheckInterval(checkMap.get("interval"));
- if (checkMap.get("timeout") != null) node.setCheckTimeOut(checkMap.get("timeout"));
+
+ // namespace过滤
+ if (!namespace.equals(nodeNamespace)) {
+ continue;
}
-
- continue;
+
+ // 标签过滤
+ if (islabelQuery) {
+ boolean ifMatchLabel = false;
+ for (Map.Entry<String, String> query_entry : query_labelMap.entrySet()) {
+ String key = query_entry.getKey();
+ String value = query_entry.getValue();
+ if (StringUtils.isBlank(labelMap.get(key))) {
+ continue;
+ }
+
+ String[] queryTagArray = StringUtils.split(value, "|");
+ String[] serviceTagArray = StringUtils.split(labelMap.get(key), "|");
+ if (DiscoverUtil.contain(queryTagArray, serviceTagArray)) {
+ ifMatchLabel = true;
+ break;
+ }
+
+ }
+
+ if (!ifMatchLabel) {
+ continue;
+ }
+ }
+
+
+ nodes.add(node);
+ serviceLabels.addAll(nodeLabels);
+ serviceMetadatas.addAll(ms_metadata);
+
+ String[] network_plane_array = StringUtils.split(ms_network_plane_type, "|");
+ for (int i = 0; i < network_plane_array.length; i++) {
+ serviceNetworkPlane.add(network_plane_array[i]);
+ }
+
+
+
+ microServiceInfo.setServiceName(serviceName);
+ microServiceInfo.setUrl(ms_url);
+ microServiceInfo.setVersion(ms_version);
+ microServiceInfo.setProtocol(ms_protocol);
+ microServiceInfo.setStatus(ms_status);
+ microServiceInfo.setPublish_port(ms_publish_port);
+ microServiceInfo.setIs_manual(Boolean.parseBoolean(ms_is_manual));
+ microServiceInfo.setVisualRange(ms_visualRange);
+
+ microServiceInfo.setLb_policy(ms_lb_policy);
+ microServiceInfo.setNamespace(namespace);
+ microServiceInfo.setHost(ms_host);
+ microServiceInfo.setPath(ms_path);
}
- if (tag.startsWith("\"metadata\"")) {
- String ms_metadata_json = "{"+tag.split("\"metadata\":\\{")[1];
- Map<String, String> metadataMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_metadata_json, Map.class);
-
+ if (nodes.isEmpty()) {
- for (Map.Entry<String, String> entry : metadataMap.entrySet()) {
- KeyVaulePair keyVaulePair = new KeyVaulePair();
- keyVaulePair.setKey(entry.getKey());
- keyVaulePair.setValue(entry.getValue());
- ms_metadata.add(keyVaulePair);
- }
- continue;
+ String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version
+ + ",namespace-" + namespace + ",labels-" + labels;
+ throw new ExtendedNotFoundException(errInfo);
+
}
- }
+ microServiceInfo.setLabels(new ArrayList<String>(serviceLabels));
+ microServiceInfo.setMetadata(new ArrayList<KeyVaulePair>(serviceMetadatas));
+ microServiceInfo.setNodes(nodes);
+ microServiceInfo.setNetwork_plane_type(StringUtils.join(serviceNetworkPlane.toArray(), "|"));
+
+
+ return new ConsulResponse(microServiceInfo, consulResponse.getIndex());
+
+
+ } catch (ExtendedNotFoundException e) {
+ throw e;
} catch (Exception e) {
- LOGGER.error(serviceName + " read tag throw exception", e);
+ throw new ExtendedInternalServerErrorException(e.getMessage());
}
- // 健康检查信息
- List<Check> checks = healthService.getChecks();
- node.setStatus("passing");
- for (Check check : checks) {
- if (!"passing".equals(check.getStatus())) {
- node.setStatus(check.getStatus());
- break;
- }
- }
-
- if (!ms_version.equals(version)) {
- continue;
- }
- // namespace过滤
- if (!namespace.equals(nodeNamespace)) {
- continue;
- }
+ }
- // 标签过滤
- if (islabelQuery) {
- boolean ifMatchLabel = false;
- for (Map.Entry<String, String> query_entry : query_labelMap.entrySet()) {
- String key = query_entry.getKey();
- String value = query_entry.getValue();
- if (StringUtils.isBlank(labelMap.get(key))) {
- continue;
- }
- String[] queryTagArray = StringUtils.split(value, "|");
- String[] serviceTagArray = StringUtils.split(labelMap.get(key), "|");
- if (DiscoverUtil.contain(queryTagArray, serviceTagArray)) {
- ifMatchLabel = true;
- break;
+
+ public MicroServiceFullInfo updateMicroServiceInstance(String serviceName, String version, String namespace,
+ MicroServiceInfo microServiceInfo, String requestIP, boolean is_manual) {
+ // 数据格式效验
+ checkMicroServiceInfo(microServiceInfo);
+ deleteMicroService(serviceName, version, namespace);
+ return saveMicroServiceInstance(microServiceInfo, true, requestIP, is_manual);
+ }
+
+ /**
+ * Title: saveMicroServiceInstance Description: 保存服务信息
+ *
+ * @param microServiceInfo
+ * @param createOrUpdate true:添加或追加更新 false:覆盖
+ * @param requestIP 访问请求IP地址
+ * @return
+ * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#saveMicroServiceInstance(org.onap.msb.sdclient.core.MicroServiceInfo,
+ * boolean, java.lang.String)
+ */
+ public MicroServiceFullInfo saveMicroServiceInstance(MicroServiceInfo microServiceInfo, boolean createOrUpdate,
+ String requestIP, boolean is_manual) {
+
+ // 数据格式效验
+ checkMicroServiceInfo(microServiceInfo);
+
+ String serviceName = microServiceInfo.getServiceName().trim();
+
+ if (createOrUpdate == false) {
+ // 覆盖原记录,先删除后添加
+ try {
+ deleteMicroService(microServiceInfo.getServiceName(), microServiceInfo.getVersion(),
+ microServiceInfo.getNamespace());
+ } catch (ExtendedNotFoundException e) {
+ String errInfo = "microservice not found: serviceName-" + microServiceInfo.getServiceName()
+ + ",version-" + microServiceInfo.getVersion() + " ,namespace-"
+ + microServiceInfo.getNamespace();
+ LOGGER.warn(errInfo);
}
- }
- if (!ifMatchLabel) {
- continue;
- }
+
}
+ Set<Node> nodes = microServiceInfo.getNodes();
+ String[] visualRangeArray = StringUtils.split(microServiceInfo.getVisualRange(), "|");
- nodes.add(node);
- serviceLabels.addAll(nodeLabels);
- serviceMetadatas.addAll(ms_metadata);
-
- String[] network_plane_array=StringUtils.split(ms_network_plane_type, "|");
- for(int i=0;i<network_plane_array.length;i++){
- serviceNetworkPlane.add(network_plane_array[i]);
- }
-
-
-
- microServiceInfo.setServiceName(serviceName);
- microServiceInfo.setUrl(ms_url);
- microServiceInfo.setVersion(ms_version);
- microServiceInfo.setProtocol(ms_protocol);
- microServiceInfo.setStatus(ms_status);
- microServiceInfo.setPublish_port(ms_publish_port);
- microServiceInfo.setIs_manual(Boolean.parseBoolean(ms_is_manual));
- microServiceInfo.setVisualRange(ms_visualRange);
-
- microServiceInfo.setLb_policy(ms_lb_policy);
- microServiceInfo.setNamespace(namespace);
- microServiceInfo.setHost(ms_host);
- microServiceInfo.setPath(ms_path);
- }
-
-
- if (nodes.isEmpty()) {
-
-
- String errInfo =
- "microservice not found: serviceName-" + serviceName + ",version-" + version
- + ",namespace-" + namespace + ",labels-" + labels;
- throw new ExtendedNotFoundException(errInfo);
-
- }
-
-
-
- microServiceInfo.setLabels(new ArrayList<String>(serviceLabels));
- microServiceInfo.setMetadata(new ArrayList<KeyVaulePair>(serviceMetadatas));
- microServiceInfo.setNodes(nodes);
- microServiceInfo.setNetwork_plane_type(StringUtils.join(serviceNetworkPlane.toArray(), "|"));
-
-
-
- return new ConsulResponse(microServiceInfo, consulResponse.getIndex());
-
-
- } catch (ExtendedNotFoundException e) {
- throw e;
- } catch (Exception e) {
- throw new ExtendedInternalServerErrorException(e.getMessage());
- }
+ try {
+ for (Node node : nodes) {
+ AgentService agentService = new AgentService();
- }
-
-
-
- public MicroServiceFullInfo updateMicroServiceInstance(String serviceName, String version,
- String namespace, MicroServiceInfo microServiceInfo, String requestIP,boolean is_manual) {
- //数据格式效验
- checkMicroServiceInfo(microServiceInfo);
- deleteMicroService(serviceName, version,namespace);
- return saveMicroServiceInstance(microServiceInfo, true, requestIP,is_manual);
- }
-
- /**
- * Title: saveMicroServiceInstance Description: 保存服务信息
- *
- * @param microServiceInfo
- * @param createOrUpdate true:添加或追加更新 false:覆盖
- * @param requestIP 访问请求IP地址
- * @return
- * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#saveMicroServiceInstance(org.onap.msb.sdclient.core.MicroServiceInfo,
- * boolean, java.lang.String)
- */
- public MicroServiceFullInfo saveMicroServiceInstance(MicroServiceInfo microServiceInfo,
- boolean createOrUpdate, String requestIP,boolean is_manual) {
-
- //数据格式效验
- checkMicroServiceInfo(microServiceInfo);
-
- String serviceName = microServiceInfo.getServiceName().trim();
-
- if (createOrUpdate == false) {
- // 覆盖原记录,先删除后添加
- try{
- deleteMicroService(microServiceInfo.getServiceName(), microServiceInfo.getVersion(),
- microServiceInfo.getNamespace());
- }
- catch (ExtendedNotFoundException e) {
- String errInfo = "microservice not found: serviceName-" + microServiceInfo.getServiceName() + ",version-" + microServiceInfo.getVersion()+ " ,namespace-" + microServiceInfo.getNamespace();
- LOGGER.warn(errInfo);
- }
-
-
-
- }
+ if (StringUtils.isBlank(node.getIp())) {
+ node.setIp(requestIP);
+ }
- Set<Node> nodes = microServiceInfo.getNodes();
- String[] visualRangeArray = StringUtils.split(microServiceInfo.getVisualRange(), "|");
-
- try {
+ String serverId = microServiceInfo.getNamespace() + "_" + serviceName + "_" + node.getIp() + "_"
+ + node.getPort();
- for (Node node : nodes) {
- AgentService agentService = new AgentService();
- if (StringUtils.isBlank(node.getIp())) {
- node.setIp(requestIP);
- }
-
- String serverId =
- microServiceInfo.getNamespace() + "_" + serviceName + "_" + node.getIp() + "_"
- + node.getPort();
-
-
- List<String> tags = new ArrayList<String>();
-
- Map<String, String> baseMap = new HashMap<String, String>();
- Map<String, String> lbMap = new HashMap<String, String>();
- Map<String, String> labelMap = new HashMap<String, String>();
- Map<String, String> metadataMap = new HashMap<String, String>();
- Map<String, String> checkMap = new HashMap<String, String>();
- Map<String, String> nsMap = new HashMap<String, String>();
- //Map<String, String> nodeMap = new HashMap<String, String>();
-
- baseMap.put("url", microServiceInfo.getUrl());
- baseMap.put("protocol", microServiceInfo.getProtocol());
- baseMap.put("version", microServiceInfo.getVersion());
-
- baseMap.put("status", "1");
- baseMap.put("is_manual", Boolean.toString(is_manual));
-
- // TCP和UDP协议保存 nginx端口和负载均衡策略
- if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
- baseMap.put("publish_port", microServiceInfo.getPublish_port());
- }
- String lb_policy = microServiceInfo.getLb_policy();
-
- // 保存服务的负载均衡策略
- if (StringUtils.isNotBlank(lb_policy)) {
- switch (lb_policy) {
- case "round-robin":
- break;
- case "ip_hash":
- if ("TCP".equals(microServiceInfo.getProtocol())
- || "UDP".equals(microServiceInfo.getProtocol())) {
- lbMap.put("lb_policy", "hash $remote_addr");
- } else {
- lbMap.put("lb_policy", "ip_hash");
- }
- break;
- default:
- lbMap.put("lb_policy", lb_policy);
- break;
- }
+ List<String> tags = new ArrayList<String>();
- }
+ Map<String, String> baseMap = new HashMap<String, String>();
+ Map<String, String> lbMap = new HashMap<String, String>();
+ Map<String, String> labelMap = new HashMap<String, String>();
+ Map<String, String> metadataMap = new HashMap<String, String>();
+ Map<String, String> checkMap = new HashMap<String, String>();
+ Map<String, String> nsMap = new HashMap<String, String>();
+ // Map<String, String> nodeMap = new HashMap<String, String>();
- if (StringUtils.isNotBlank(node.getLb_server_params())) {
- lbMap.put("lb_server_params", node.getLb_server_params().trim().replace(",", " "));
+ baseMap.put("url", microServiceInfo.getUrl());
+ baseMap.put("protocol", microServiceInfo.getProtocol());
+ baseMap.put("version", microServiceInfo.getVersion());
- }
+ baseMap.put("status", "1");
+ baseMap.put("is_manual", Boolean.toString(is_manual));
- if (StringUtils.isNotBlank(node.getHa_role())) {
- baseMap.put("ha_role", node.getHa_role());
- }
-
- if (StringUtils.isNotBlank(microServiceInfo.getHost())) {
- baseMap.put("host", microServiceInfo.getHost().toLowerCase());
- }
-
- if (StringUtils.isNotBlank(microServiceInfo.getPath())) {
- baseMap.put("path",microServiceInfo.getPath());
- }
+ // TCP和UDP协议保存 nginx端口和负载均衡策略
+ if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
+ baseMap.put("publish_port", microServiceInfo.getPublish_port());
+ }
+ String lb_policy = microServiceInfo.getLb_policy();
+
+ // 保存服务的负载均衡策略
+ if (StringUtils.isNotBlank(lb_policy)) {
+ switch (lb_policy) {
+ case "round-robin":
+ break;
+ case "ip_hash":
+ if ("TCP".equals(microServiceInfo.getProtocol())
+ || "UDP".equals(microServiceInfo.getProtocol())) {
+ lbMap.put("lb_policy", "hash $remote_addr");
+ } else {
+ lbMap.put("lb_policy", "ip_hash");
+ }
+ break;
+ default:
+ lbMap.put("lb_policy", lb_policy);
+ break;
+ }
- // 保存健康检查参数
- if (StringUtils.isNotBlank(node.getCheckType())) {
+ }
- AgentService.Check check = agentService.createCheck();
+ if (StringUtils.isNotBlank(node.getLb_server_params())) {
+ lbMap.put("lb_server_params", node.getLb_server_params().trim().replace(",", " "));
- if ("TTL".equals(node.getCheckType())) {
- check.setTtl(node.getTtl());
- checkMap.put("ttl", node.getTtl());
+ }
- } else if ("HTTP".equals(node.getCheckType())) {
- check.setInterval(node.getCheckInterval());
- check.setHttp(node.getCheckUrl());
- check.setTimeout(node.getCheckTimeOut());
+ if (StringUtils.isNotBlank(node.getHa_role())) {
+ baseMap.put("ha_role", node.getHa_role());
+ }
- checkMap.put("http", node.getCheckUrl());
- checkMap.put("interval",node.getCheckInterval());
- checkMap.put("timeout", node.getCheckTimeOut());
- } else if ("TCP".equals(node.getCheckType())) {
- check.setInterval(node.getCheckInterval());
- check.setTcp(node.getCheckUrl());
- check.setTimeout(node.getCheckTimeOut());
+ if (StringUtils.isNotBlank(microServiceInfo.getHost())) {
+ baseMap.put("host", microServiceInfo.getHost().toLowerCase());
+ }
- checkMap.put("tcp", node.getCheckUrl());
- checkMap.put("interval", node.getCheckInterval());
- checkMap.put("timeout",node.getCheckTimeOut());
- }
+ if (StringUtils.isNotBlank(microServiceInfo.getPath())) {
+ baseMap.put("path", microServiceInfo.getPath());
+ }
- agentService.setCheck(check);
- }
+ // 保存健康检查参数
+ if (StringUtils.isNotBlank(node.getCheckType())) {
+ AgentService.Check check = agentService.createCheck();
- List<KeyVaulePair> keyVaulePairs = microServiceInfo.getMetadata();
+ if ("TTL".equals(node.getCheckType())) {
+ check.setTtl(node.getTtl());
+ checkMap.put("ttl", node.getTtl());
+
+ } else if ("HTTP".equals(node.getCheckType())) {
+ check.setInterval(node.getCheckInterval());
+ check.setHttp(node.getCheckUrl());
+ check.setTimeout(node.getCheckTimeOut());
+
+ checkMap.put("http", node.getCheckUrl());
+ checkMap.put("interval", node.getCheckInterval());
+ checkMap.put("timeout", node.getCheckTimeOut());
+ } else if ("TCP".equals(node.getCheckType())) {
+ check.setInterval(node.getCheckInterval());
+ check.setTcp(node.getCheckUrl());
+ check.setTimeout(node.getCheckTimeOut());
+
+ checkMap.put("tcp", node.getCheckUrl());
+ checkMap.put("interval", node.getCheckInterval());
+ checkMap.put("timeout", node.getCheckTimeOut());
+ }
+
+ agentService.setCheck(check);
+ }
+
+
+ List<KeyVaulePair> keyVaulePairs = microServiceInfo.getMetadata();
+
+ if (keyVaulePairs != null && keyVaulePairs.size() > 0) {
+ for (KeyVaulePair keyVaulePair : keyVaulePairs) {
+ metadataMap.put(keyVaulePair.getKey(), keyVaulePair.getValue());
+ }
+ }
+
+ // 同步过滤参数组合为json格式存储
+ labelMap.put("visualRange", StringUtils.join(visualRangeArray, "|"));
+
+ if (StringUtils.isNotBlank(microServiceInfo.getNetwork_plane_type())) {
+ labelMap.put("network_plane_type", microServiceInfo.getNetwork_plane_type());
+ }
+ if (microServiceInfo.getLabels() != null) {
+ for (String label : microServiceInfo.getLabels()) {
+ String[] labelArray = StringUtils.split(label, ":");
+ if (labelArray.length == 2) {
+ labelMap.put(labelArray[0], labelArray[1]);
+ }
+ }
+ }
+
+ if (StringUtils.isNotBlank(microServiceInfo.getNamespace())) {
+ nsMap.put("namespace", microServiceInfo.getNamespace());
+ }
+
+
+
+ tags.add("\"base\":" + JacksonJsonUtil.beanToJson(baseMap));
+ if (!lbMap.isEmpty())
+ tags.add("\"lb\":" + JacksonJsonUtil.beanToJson(lbMap));
+ if (!checkMap.isEmpty())
+ tags.add("\"checks\":" + JacksonJsonUtil.beanToJson(checkMap));
+ if (!labelMap.isEmpty())
+ tags.add("\"labels\":" + JacksonJsonUtil.beanToJson(labelMap));
+ if (!metadataMap.isEmpty())
+ tags.add("\"metadata\":" + JacksonJsonUtil.beanToJson(metadataMap));
+ if (!nsMap.isEmpty())
+ tags.add("\"ns\":" + JacksonJsonUtil.beanToJson(nsMap));
+
+ agentService.setTags(tags);
+
+ agentService.setAddress(node.getIp());
+ agentService.setId(serverId);
+ agentService.setPort(Integer.parseInt(node.getPort()));
+
+ String consul_serviceName = getServiceName4Consul(serviceName, microServiceInfo.getNamespace());
+
+
+ agentService.setName(consul_serviceName);
+
+ int registerResult;
+ if (DiscoverUtil.CONSUL_REGISTER_MODE.equals(ConfigUtil.getInstance().getConsulRegisterMode())) {
+ registerResult = ConsulCatalogServiceWrapper.getInstance().saveService(agentService);
+ } else {
+ registerResult = ConsulAgentServiceWrapper.getInstance().saveService(agentService);
+ }
+
+ if (registerResult != 200) {
+ throw new Exception("register consul service fail:" + registerResult);
+ }
- if (keyVaulePairs != null && keyVaulePairs.size() > 0) {
- for (KeyVaulePair keyVaulePair : keyVaulePairs) {
- metadataMap.put(keyVaulePair.getKey(), keyVaulePair.getValue());
- }
- }
- // 同步过滤参数组合为json格式存储
- labelMap.put("visualRange", StringUtils.join(visualRangeArray, "|"));
- if (StringUtils.isNotBlank(microServiceInfo.getNetwork_plane_type())) {
- labelMap.put("network_plane_type", microServiceInfo.getNetwork_plane_type());
- }
- if(microServiceInfo.getLabels()!=null){
- for (String label : microServiceInfo.getLabels()) {
- String[] labelArray = StringUtils.split(label, ":");
- if(labelArray.length==2){
- labelMap.put(labelArray[0], labelArray[1]);
}
- }
- }
- if (StringUtils.isNotBlank(microServiceInfo.getNamespace())) {
- nsMap.put("namespace", microServiceInfo.getNamespace());
- }
-
-
-
- tags.add("\"base\":" + JacksonJsonUtil.beanToJson(baseMap));
- if(!lbMap.isEmpty()) tags.add("\"lb\":" + JacksonJsonUtil.beanToJson(lbMap));
- if(!checkMap.isEmpty()) tags.add("\"checks\":" + JacksonJsonUtil.beanToJson(checkMap));
- if(!labelMap.isEmpty()) tags.add("\"labels\":" + JacksonJsonUtil.beanToJson(labelMap));
- if(!metadataMap.isEmpty()) tags.add("\"metadata\":" + JacksonJsonUtil.beanToJson(metadataMap));
- if(!nsMap.isEmpty()) tags.add("\"ns\":" + JacksonJsonUtil.beanToJson(nsMap));
-
- agentService.setTags(tags);
-
- agentService.setAddress(node.getIp());
- agentService.setId(serverId);
- agentService.setPort(Integer.parseInt(node.getPort()));
-
- String consul_serviceName=getServiceName4Consul(serviceName,microServiceInfo.getNamespace());
-
-
- agentService.setName(consul_serviceName);
-
- int registerResult;
- if(DiscoverUtil.CONSUL_REGISTER_MODE.equals(ConfigUtil.getInstance().getConsulRegisterMode())){
- registerResult =ConsulCatalogServiceWrapper.getInstance().saveService(agentService);
- }
- else{
- registerResult =ConsulAgentServiceWrapper.getInstance().saveService(agentService);
+ LOGGER.info("save microservice success: serviceName-" + microServiceInfo.getServiceName() + ",version-"
+ + microServiceInfo.getVersion() + " ,namespace-" + microServiceInfo.getNamespace());
+
+ return getMicroServiceInstance(serviceName, microServiceInfo.getVersion(), microServiceInfo.getNamespace());
+
+
+ } catch (ExtendedNotFoundException e) {
+ throw e;
+ } catch (Exception e) {
+ LOGGER.error("register consul service throw exception", e);
+ throw new ExtendedInternalServerErrorException(e.getMessage());
+
}
-
- if (registerResult != 200) {
- throw new Exception("register consul service fail:" + registerResult);
+
+
+
+ }
+
+ public MicroServiceFullInfo getMicroServiceInstance(String serviceName, String version, String namespace) {
+ ConsulResponse serviceResponse = getMicroServiceInstance(serviceName, version, false, "", "", "", namespace);
+ return (MicroServiceFullInfo) serviceResponse.getResponse();
+ }
+
+
+ /**
+ * Title: deleteMicroService Description: 删除服务信息
+ *
+ * @param serviceName
+ * @param version
+ * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#deleteMicroService(java.lang.String,
+ * java.lang.String)
+ */
+ public void deleteMicroService(String serviceName, String version, String namespace) {
+
+
+ if ("null".equals(version)) {
+ version = "";
}
+ checkServiceNameAndVersion(serviceName, version);
- }
+ String consul_serviceName = getServiceName4Consul(serviceName, namespace);
- LOGGER.info( "save microservice success: serviceName-" + microServiceInfo.getServiceName() + ",version-" + microServiceInfo.getVersion()+ " ,namespace-" + microServiceInfo.getNamespace());
+ List<CatalogService> catalogServiceList = getConsulServices(consul_serviceName, version);
- return getMicroServiceInstance(serviceName, microServiceInfo.getVersion(),
- microServiceInfo.getNamespace());
+ if (catalogServiceList == null || catalogServiceList.size() == 0) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version
+ + " ,namespace-" + namespace;
+ throw new ExtendedNotFoundException(errInfo);
- } catch (ExtendedNotFoundException e) {
- throw e;
- } catch (Exception e) {
- LOGGER.error("register consul service throw exception", e);
- throw new ExtendedInternalServerErrorException(e.getMessage());
+ }
- }
+ boolean ifFindServiceForNS = false;
+ for (CatalogService catalogService : catalogServiceList) {
+ List<String> tagList = catalogService.getServiceTags();
+ String serviceNamespace = "", serviceVersion = "";
+ try {
- }
-
- public MicroServiceFullInfo getMicroServiceInstance(String serviceName, String version,
- String namespace) {
- ConsulResponse serviceResponse =
- getMicroServiceInstance(serviceName, version, false, "", "", "", namespace);
- return (MicroServiceFullInfo) serviceResponse.getResponse();
- }
-
-
- /**
- * Title: deleteMicroService Description: 删除服务信息
- *
- * @param serviceName
- * @param version
- * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#deleteMicroService(java.lang.String,
- * java.lang.String)
- */
- public void deleteMicroService(String serviceName, String version, String namespace) {
-
-
- if ("null".equals(version)) {
- version = "";
- }
+ for (String tag : tagList) {
- checkServiceNameAndVersion(serviceName,version);
-
-
- String consul_serviceName=getServiceName4Consul(serviceName,namespace);
+ if (tag.startsWith("\"ns\"")) {
+ String ms_ns_json = tag.split("\"ns\":")[1];
- List<CatalogService> catalogServiceList = getConsulServices(consul_serviceName, version);
+ Map<String, String> nsMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
+ if (nsMap.get("namespace") != null) {
+ serviceNamespace = nsMap.get("namespace");
+ }
- if (catalogServiceList == null || catalogServiceList.size() == 0) {
- String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version+ " ,namespace-" + namespace;
- throw new ExtendedNotFoundException(errInfo);
+ continue;
+ }
+
+ if (tag.startsWith("\"base\"")) {
+ String ms_base_json = tag.split("\"base\":")[1];
- }
- boolean ifFindServiceForNS = false;
+ Map<String, String> baseMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
+ if (baseMap.get("version") != null) {
+ serviceVersion = baseMap.get("version");
+ }
- for (CatalogService catalogService : catalogServiceList) {
- List<String> tagList = catalogService.getServiceTags();
- String serviceNamespace = "",serviceVersion="";
- try {
+ continue;
- for (String tag : tagList) {
+ }
- if (tag.startsWith("\"ns\"")) {
- String ms_ns_json = tag.split("\"ns\":")[1];
+ }
+ } catch (Exception e) {
+ LOGGER.error(serviceName + " read tag throw exception", e);
+ }
- Map<String, String> nsMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
- if (nsMap.get("namespace") != null) {
- serviceNamespace = nsMap.get("namespace");
+ if (!serviceNamespace.equals(namespace)) {
+ continue;
}
- continue;
- }
-
- if (tag.startsWith("\"base\"")) {
- String ms_base_json = tag.split("\"base\":")[1];
+ if (!serviceVersion.equals(version)) {
+ continue;
+ }
+ ifFindServiceForNS = true;
+ String serviceID = catalogService.getServiceId();
+ try {
+
+ int delResult;
+ if (DiscoverUtil.CONSUL_REGISTER_MODE.equals(ConfigUtil.getInstance().getConsulRegisterMode())) {
+ delResult = ConsulCatalogServiceWrapper.getInstance().deleteService(serviceID);
+ } else {
+ delResult = ConsulAgentServiceWrapper.getInstance().deleteService(serviceID);
+ }
+
+ if (delResult != 200) {
+ throw new Exception("delete consul service fail:" + delResult);
+ }
-
- Map<String, String> baseMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
- if (baseMap.get("version") != null) {
- serviceVersion= baseMap.get("version");
- }
-
- continue;
+ } catch (Exception e) {
+ LOGGER.error("delete consul service throw exception", e);
+ throw new ExtendedInternalServerErrorException(e.getMessage());
+
+ }
- }
-
}
- } catch (Exception e) {
- LOGGER.error(serviceName + " read tag throw exception", e);
- }
-
- if (!serviceNamespace.equals(namespace)) {
- continue;
- }
-
- if(!serviceVersion.equals(version)){
- continue;
- }
- ifFindServiceForNS = true;
- String serviceID = catalogService.getServiceId();
- try {
-
- int delResult;
- if(DiscoverUtil.CONSUL_REGISTER_MODE.equals(ConfigUtil.getInstance().getConsulRegisterMode())){
- delResult =ConsulCatalogServiceWrapper.getInstance().deleteService(serviceID);
+
+ if (!ifFindServiceForNS) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version
+ + ",namespace-" + namespace;
+ throw new ExtendedNotFoundException(errInfo);
}
- else{
- delResult =ConsulAgentServiceWrapper.getInstance().deleteService(serviceID);
+
+ LOGGER.info("microservice delete success: serviceName-" + serviceName + ",version-" + version + ",namespace-"
+ + namespace);
+
+ }
+
+ /**
+ * Title: deleteMicroServiceInstance Description: 刪除服务的节点信息
+ *
+ * @param serviceName
+ * @param version
+ * @param ip
+ * @param port
+ * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#deleteMicroServiceInstance(java.lang.String,
+ * java.lang.String, java.lang.String, java.lang.String)
+ */
+ public void deleteMicroServiceInstance(String serviceName, String version, String namespace, String ip,
+ String port) {
+ if ("null".equals(version)) {
+ version = "";
}
-
- if (delResult != 200) {
- throw new Exception("delete consul service fail:" + delResult);
+
+ checkServiceNameAndVersion(serviceName, version);
+
+
+ if (!RegExpTestUtil.ipRegExpTest(ip)) {
+ throw new UnprocessableEntityException(
+ "delete MicroServiceInfo FAIL:IP(" + ip + ")is not a valid IP address");
}
-
- } catch (Exception e) {
- LOGGER.error("delete consul service throw exception", e);
- throw new ExtendedInternalServerErrorException(e.getMessage());
+ if (!RegExpTestUtil.portRegExpTest(port)) {
+ throw new UnprocessableEntityException(
+ "delete MicroServiceInfo FAIL:Port(" + port + ")is not a valid Port address");
+ }
- }
+ String consul_serviceName = getServiceName4Consul(serviceName, namespace);
- }
+ List<CatalogService> catalogServiceList = getConsulServices(consul_serviceName, version);
- if (!ifFindServiceForNS) {
- String errInfo =
- "microservice not found: serviceName-" + serviceName + ",version-" + version
- + ",namespace-" + namespace;
- throw new ExtendedNotFoundException(errInfo);
- }
-
- LOGGER.info("microservice delete success: serviceName-" + serviceName + ",version-" + version
- + ",namespace-" + namespace);
-
- }
-
- /**
- * Title: deleteMicroServiceInstance Description: 刪除服务的节点信息
- *
- * @param serviceName
- * @param version
- * @param ip
- * @param port
- * @see com.zte.ums.nfv.eco.hsif.msb.core.IMSBService#deleteMicroServiceInstance(java.lang.String,
- * java.lang.String, java.lang.String, java.lang.String)
- */
- public void deleteMicroServiceInstance(String serviceName, String version, String namespace,
- String ip, String port) {
- if ("null".equals(version)) {
- version = "";
- }
-
- checkServiceNameAndVersion(serviceName,version);
+ if (catalogServiceList == null || catalogServiceList.size() == 0) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version;
+ LOGGER.warn(errInfo);
+ throw new ExtendedNotFoundException(errInfo);
+ }
- if (!RegExpTestUtil.ipRegExpTest(ip)) {
- throw new UnprocessableEntityException("delete MicroServiceInfo FAIL:IP(" + ip
- + ")is not a valid IP address");
- }
+ String node = "", serviceID = "";
+ boolean ifFindBNode = false;
- if (!RegExpTestUtil.portRegExpTest(port)) {
- throw new UnprocessableEntityException("delete MicroServiceInfo FAIL:Port(" + port
- + ")is not a valid Port address");
- }
- String consul_serviceName=getServiceName4Consul(serviceName,namespace);
+ for (CatalogService catalogService : catalogServiceList) {
- List<CatalogService> catalogServiceList = getConsulServices(consul_serviceName, version);
+ String serviceAddress = catalogService.getServiceAddress();
+ String servicePort = String.valueOf(catalogService.getServicePort());
- if (catalogServiceList == null || catalogServiceList.size() == 0) {
- String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version;
- LOGGER.warn(errInfo);
- throw new ExtendedNotFoundException(errInfo);
- }
+ List<String> tagList = catalogService.getServiceTags();
+ String ms_version = "", ms_namespace = "";
+ try {
+
+ for (String tag : tagList) {
- String node = "", serviceID = "";
- boolean ifFindBNode = false;
+ if (tag.startsWith("\"base\"")) {
+ String ms_base_json = tag.split("\"base\":")[1];
- for (CatalogService catalogService : catalogServiceList) {
- String serviceAddress = catalogService.getServiceAddress();
- String servicePort = String.valueOf(catalogService.getServicePort());
+ Map<String, String> baseMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
+ if (baseMap.get("version") != null) {
+ ms_version = baseMap.get("version");
+ }
+ }
- List<String> tagList = catalogService.getServiceTags();
- String ms_version = "", ms_namespace = "";
- try {
+ if (tag.startsWith("\"ns\"")) {
+ String ms_ns_json = tag.split("\"ns\":")[1];
- for (String tag : tagList) {
- if (tag.startsWith("\"base\"")) {
- String ms_base_json = tag.split("\"base\":")[1];
+ Map<String, String> nsMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
+ if (nsMap.get("namespace") != null) {
+ ms_namespace = nsMap.get("namespace");
+ }
- Map<String, String> baseMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
- if (baseMap.get("version") != null) {
- ms_version = baseMap.get("version");
+ }
+ }
+
+ } catch (Exception e) {
+ LOGGER.error(serviceName + " read tag throw exception", e);
+ }
+ if (serviceAddress.equals(ip) && servicePort.equals(port) && ms_version.equals(version)
+ && ms_namespace.equals(namespace)) {
+ node = catalogService.getNode();
+ serviceID = catalogService.getServiceId();
+ ifFindBNode = true;
+ break;
}
- }
+ }
- if (tag.startsWith("\"ns\"")) {
- String ms_ns_json = tag.split("\"ns\":")[1];
+ if (!ifFindBNode) {
+ throw new ExtendedNotFoundException("delete MicroServiceInfo FAIL: node-" + ip + ":" + port + " namespace-"
+ + namespace + " not found ");
+ }
- Map<String, String> nsMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
- if (nsMap.get("namespace") != null) {
- ms_namespace = nsMap.get("namespace");
+ try {
+ int delResult;
+ if (DiscoverUtil.CONSUL_REGISTER_MODE.equals(ConfigUtil.getInstance().getConsulRegisterMode())) {
+ delResult = ConsulCatalogServiceWrapper.getInstance().deleteService(serviceID);
+ } else {
+ delResult = ConsulAgentServiceWrapper.getInstance().deleteService(serviceID);
}
+ if (delResult != 200) {
+ throw new Exception("delete consul service fail:" + delResult);
+ }
- }
- }
- } catch (Exception e) {
- LOGGER.error(serviceName + " read tag throw exception", e);
- }
- if (serviceAddress.equals(ip) && servicePort.equals(port) && ms_version.equals(version)
- && ms_namespace.equals(namespace)) {
- node = catalogService.getNode();
- serviceID = catalogService.getServiceId();
- ifFindBNode = true;
- break;
- }
+ } catch (Exception e) {
+ LOGGER.error("delete consul service throw exception", e);
+ throw new ExtendedInternalServerErrorException(e.getMessage());
+ }
}
- if (!ifFindBNode) {
- throw new ExtendedNotFoundException("delete MicroServiceInfo FAIL: node-" + ip + ":" + port
- + " namespace-" + namespace + " not found ");
- }
+ /**
+ * @Title getConsulServices
+ * @Description TODO(通过方法:根据服务名\版本号获取consul服务信息)
+ * @param serviceName
+ * @return
+ * @return List<CatalogService>
+ */
+ private List<CatalogService> getConsulServices(String serviceName, String version) {
+ // serviceName = serviceName.replace("/", "*");
+ String consulServiceUrl = (new StringBuilder().append("http://")
+ .append(ConfigUtil.getInstance().getConsulAddress()).append(DiscoverUtil.CONSUL_CATALOG_URL)
+ .append("/service/").append(serviceName)).toString();
+
+ String resultJson = HttpClientUtil.httpGet(consulServiceUrl);
+ List<CatalogService> catalogServiceList = (List<CatalogService>) JacksonJsonUtil.jsonToListBean(resultJson);
+
+ for (CatalogService catalogService : catalogServiceList) {
+
+
+ List<String> tagList = catalogService.getServiceTags();
+ String ms_version = "";
+ try {
+ for (String tag : tagList) {
+
+ if (tag.startsWith("\"base\"")) {
+ String ms_base_json = tag.split("\"base\":")[1];
+ Map<String, String> baseMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
+ if (baseMap.get("version") != null) {
+ ms_version = baseMap.get("version");
+ }
- try {
- int delResult;
- if(DiscoverUtil.CONSUL_REGISTER_MODE.equals(ConfigUtil.getInstance().getConsulRegisterMode())){
- delResult =ConsulCatalogServiceWrapper.getInstance().deleteService(serviceID);
- }
- else{
- delResult =ConsulAgentServiceWrapper.getInstance().deleteService(serviceID);
- }
-
- if (delResult != 200) {
- throw new Exception("delete consul service fail:" + delResult);
- }
+ break;
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error(serviceName + " read tag throw exception", e);
+ }
+ if (!ms_version.equals(version)) {
+ catalogServiceList.remove(catalogService);
+ break;
+ }
- } catch (Exception e) {
- LOGGER.error("delete consul service throw exception", e);
- throw new ExtendedInternalServerErrorException(e.getMessage());
+ }
+ return catalogServiceList;
}
- }
+ /**
+ * @Title getHealthServices
+ * @Description TODO(通过方法:根据服务名获取consul服务健康检查信息)
+ * @param serviceName
+ * @return List<HealthService>
+ */
+ private ConsulResponse getHealthServices(String serviceName, boolean ifPassStatus, String wait, String index) {
+ // serviceName = serviceName.replace("/", "*");
+ StringBuilder healthServiceUrlBuilder =
+ new StringBuilder().append("http://").append(ConfigUtil.getInstance().getConsulAddress())
+ .append(DiscoverUtil.CONSUL_HEALTH_URL).append(serviceName);
+
+ if (ifPassStatus) {
+ healthServiceUrlBuilder.append("?passing");
+ }
- /**
- * @Title getConsulServices
- * @Description TODO(通过方法:根据服务名\版本号获取consul服务信息)
- * @param serviceName
- * @return
- * @return List<CatalogService>
- */
- private List<CatalogService> getConsulServices(String serviceName, String version) {
- // serviceName = serviceName.replace("/", "*");
- String consulServiceUrl =
- (new StringBuilder().append("http://").append(ConfigUtil.getInstance().getConsulAddress())
- .append(DiscoverUtil.CONSUL_CATALOG_URL).append("/service/").append(serviceName))
- .toString();
+ if (StringUtils.isNotBlank(wait) && StringUtils.isNotBlank(index)) {
+ if (ifPassStatus) {
+ healthServiceUrlBuilder.append("&wait=").append(wait).append("&index=").append(index);
+ } else {
+ healthServiceUrlBuilder.append("?wait=").append(wait).append("&index=").append(index);
+ }
+ }
- String resultJson = HttpClientUtil.httpGet(consulServiceUrl);
- List<CatalogService> catalogServiceList =
- (List<CatalogService>) JacksonJsonUtil.jsonToListBean(resultJson);
+ return HttpClientUtil.httpWaitGet(healthServiceUrlBuilder.toString());
- for (CatalogService catalogService : catalogServiceList) {
+ }
- List<String> tagList = catalogService.getServiceTags();
- String ms_version = "";
- try {
- for (String tag : tagList) {
- if (tag.startsWith("\"base\"")) {
- String ms_base_json = tag.split("\"base\":")[1];
+ public void healthCheckbyTTL(String serviceName, String version, String namespace, NodeAddress checkNode) {
+ // TODO Auto-generated method stub
+ if ("null".equals(version)) {
+ version = "";
+ }
+ checkServiceNameAndVersion(serviceName, version);
- Map<String, String> baseMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
- if (baseMap.get("version") != null) {
- ms_version = baseMap.get("version");
- }
- break;
+ if (!RegExpTestUtil.ipRegExpTest(checkNode.getIp())) {
+ throw new UnprocessableEntityException(
+ "healthCheck by TTL FAIL:IP(" + checkNode.getIp() + ")is not a valid IP address");
+ }
- }
+ if (!RegExpTestUtil.portRegExpTest(checkNode.getPort())) {
+ throw new UnprocessableEntityException(
+ "healthCheck by TTL FAIL:Port(" + checkNode.getPort() + ")is not a valid Port address");
}
- } catch (Exception e) {
- LOGGER.error(serviceName + " read tag throw exception", e);
- }
- if (!ms_version.equals(version)) {
- catalogServiceList.remove(catalogService);
- break;
- }
+ String consul_serviceName = getServiceName4Consul(serviceName, namespace);
- }
- return catalogServiceList;
- }
-
- /**
- * @Title getHealthServices
- * @Description TODO(通过方法:根据服务名获取consul服务健康检查信息)
- * @param serviceName
- * @return List<HealthService>
- */
- private ConsulResponse getHealthServices(String serviceName, boolean ifPassStatus, String wait,
- String index) {
- // serviceName = serviceName.replace("/", "*");
- StringBuilder healthServiceUrlBuilder =
- new StringBuilder().append("http://").append(ConfigUtil.getInstance().getConsulAddress())
- .append(DiscoverUtil.CONSUL_HEALTH_URL).append(serviceName);
-
- if (ifPassStatus) {
- healthServiceUrlBuilder.append("?passing");
- }
+ List<CatalogService> catalogServiceList = getConsulServices(consul_serviceName, version);
- if (StringUtils.isNotBlank(wait) && StringUtils.isNotBlank(index)) {
- if (ifPassStatus) {
- healthServiceUrlBuilder.append("&wait=").append(wait).append("&index=").append(index);
- } else {
- healthServiceUrlBuilder.append("?wait=").append(wait).append("&index=").append(index);
- }
- }
- return HttpClientUtil.httpWaitGet(healthServiceUrlBuilder.toString());
+ if (catalogServiceList == null || catalogServiceList.size() == 0) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version;
+ LOGGER.warn(errInfo);
+ throw new ExtendedNotFoundException(errInfo);
- }
+ }
+ boolean ifFindBNode = false;
- public void healthCheckbyTTL(String serviceName, String version, String namespace,
- NodeAddress checkNode) {
- // TODO Auto-generated method stub
- if ("null".equals(version)) {
- version = "";
- }
- checkServiceNameAndVersion(serviceName,version);
-
-
- if (!RegExpTestUtil.ipRegExpTest(checkNode.getIp())) {
- throw new UnprocessableEntityException("healthCheck by TTL FAIL:IP(" + checkNode.getIp()
- + ")is not a valid IP address");
- }
+ for (CatalogService catalogService : catalogServiceList) {
- if (!RegExpTestUtil.portRegExpTest(checkNode.getPort())) {
- throw new UnprocessableEntityException("healthCheck by TTL FAIL:Port(" + checkNode.getPort()
- + ")is not a valid Port address");
- }
-
- String consul_serviceName=getServiceName4Consul(serviceName,namespace);
-
- List<CatalogService> catalogServiceList = getConsulServices(consul_serviceName, version);
+ String serviceAddress = catalogService.getServiceAddress();
+ String servicePort = String.valueOf(catalogService.getServicePort());
+ boolean ifttlCheck = false;
- if (catalogServiceList == null || catalogServiceList.size() == 0) {
- String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version;
- LOGGER.warn(errInfo);
- throw new ExtendedNotFoundException(errInfo);
+ List<String> tagList = catalogService.getServiceTags();
+ String ms_version = "", ms_namespace = "";
+ try {
- }
+ for (String tag : tagList) {
-
- boolean ifFindBNode = false;
+ if (tag.startsWith("\"base\"")) {
+ String ms_base_json = tag.split("\"base\":")[1];
+ Map<String, String> baseMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
+ if (baseMap.get("version") != null) {
+ ms_version = baseMap.get("version");
+ }
+ }
- for (CatalogService catalogService : catalogServiceList) {
+ if (tag.startsWith("\"ns\"")) {
+ String ms_ns_json = tag.split("\"ns\":")[1];
- String serviceAddress = catalogService.getServiceAddress();
- String servicePort = String.valueOf(catalogService.getServicePort());
- boolean ifttlCheck = false;
+ Map<String, String> nsMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
+ if (nsMap.get("namespace") != null) {
+ ms_namespace = nsMap.get("namespace");
+ }
+ }
- List<String> tagList = catalogService.getServiceTags();
- String ms_version = "", ms_namespace = "";
- try {
-
- for (String tag : tagList) {
+ if (tag.startsWith("\"checks\"")) {
+ String ms_check_json = tag.split("\"checks\":")[1];
+ Map<String, String> checkMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_check_json, Map.class);
- if (tag.startsWith("\"base\"")) {
- String ms_base_json = tag.split("\"base\":")[1];
+ // 自动注册健康检查
+ if (StringUtils.isNotBlank(checkMap.get("ttl"))) {
+ ifttlCheck = true;
+ }
+ }
+ }
- Map<String, String> baseMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
- if (baseMap.get("version") != null) {
- ms_version = baseMap.get("version");
+ } catch (Exception e) {
+ LOGGER.error(serviceName + " read tag throw exception", e);
}
- }
- if (tag.startsWith("\"ns\"")) {
- String ms_ns_json = tag.split("\"ns\":")[1];
- Map<String, String> nsMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_ns_json, Map.class);
- if (nsMap.get("namespace") != null) {
- ms_namespace = nsMap.get("namespace");
+
+ if (serviceAddress.equals(checkNode.getIp()) && servicePort.equals(checkNode.getPort())
+ && ms_version.equals(version) && ms_namespace.equals(namespace)) {
+ if (!ifttlCheck) {
+ throw new ExtendedNotFoundException(
+ "healthCheck by TTL FAIL: Service is not enabled TTL health check ");
+ }
+ ifFindBNode = true;
+ break;
}
- }
-
-
- if (tag.startsWith("\"checks\"")) {
- String ms_check_json = tag.split("\"checks\":")[1];
- Map<String, String> checkMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_check_json, Map.class);
-
- //自动注册健康检查
- if (StringUtils.isNotBlank(checkMap.get("ttl"))){
- ifttlCheck=true;
- }
- }
+
+
}
- } catch (Exception e) {
- LOGGER.error(serviceName + " read tag throw exception", e);
- }
-
-
-
-
- if (serviceAddress.equals(checkNode.getIp()) && servicePort.equals(checkNode.getPort()) && ms_version.equals(version)
- && ms_namespace.equals(namespace)) {
- if(!ifttlCheck){
- throw new ExtendedNotFoundException("healthCheck by TTL FAIL: Service is not enabled TTL health check ");
+
+
+ if (!ifFindBNode) {
+ throw new ExtendedNotFoundException("healthCheck by TTL FAIL: node-" + checkNode.getIp() + ":"
+ + checkNode.getPort() + " namespace-" + namespace + " not found ");
}
- ifFindBNode = true;
- break;
- }
- }
-
-
- if (!ifFindBNode) {
- throw new ExtendedNotFoundException("healthCheck by TTL FAIL: node-" + checkNode.getIp() + ":" + checkNode.getPort()
- + " namespace-" + namespace + " not found ");
- }
-
-
-
-
-
- try {
- String checkID =
- (new StringBuilder().append("service:").append(namespace).append("_").append(serviceName)
- .append("_").append(checkNode.getIp()).append("_").append(checkNode.getPort()))
- .toString();
-
- String consulServiceUrl =
- (new StringBuilder().append("http://").append(ConfigUtil.getInstance().getConsulAddress())
- .append(DiscoverUtil.CONSUL_AGENT_TTL_URL).append(checkID)).toString();
-
- String result= HttpClientUtil.httpGet(consulServiceUrl);
- if("CheckID does not have associated TTL".equals(result)){
- throw new ExtendedNotFoundException("healthCheck by TTL FAIL: Service is not enabled TTL health check ");
- }
-
- }
- catch (ExtendedInternalServerErrorException e) {
- throw e;
- }
- catch (Exception e) {
- throw new ExtendedInternalServerErrorException("healthCheck by TTL FAIL:" + e.getMessage());
- }
+ try {
+ String checkID = (new StringBuilder().append("service:").append(namespace).append("_").append(serviceName)
+ .append("_").append(checkNode.getIp()).append("_").append(checkNode.getPort())).toString();
+ String consulServiceUrl =
+ (new StringBuilder().append("http://").append(ConfigUtil.getInstance().getConsulAddress())
+ .append(DiscoverUtil.CONSUL_AGENT_TTL_URL).append(checkID)).toString();
+ String result = HttpClientUtil.httpGet(consulServiceUrl);
+ if ("CheckID does not have associated TTL".equals(result)) {
+ throw new ExtendedNotFoundException(
+ "healthCheck by TTL FAIL: Service is not enabled TTL health check ");
+ }
- }
-
-// public MicroServiceFullInfo getApigatewayServiceInfo4Host(String namespace){
-// return getMicroServiceInstance(DiscoverUtil.APIGATEWAY_SERVINCE, "v1", namespace);
-// }
-//
+ } catch (ExtendedInternalServerErrorException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ExtendedInternalServerErrorException("healthCheck by TTL FAIL:" + e.getMessage());
+ }
-
-
- public List<MicroServiceFullInfo> getMicroServiceForNodes(String serviceName, String version, boolean ifPassStatus,String labels,String namespace){
- // TODO Auto-generated method stub
- if ("null".equals(version)) {
- version = "";
}
- checkServiceNameAndVersion(serviceName,version);
+ // public MicroServiceFullInfo getApigatewayServiceInfo4Host(String namespace){
+ // return getMicroServiceInstance(DiscoverUtil.APIGATEWAY_SERVINCE, "v1", namespace);
+ // }
+ //
- if (!RegExpTestUtil.labelRegExpTest(labels)) {
- throw new UnprocessableEntityException(
- "get MicroServiceInfo FAIL: The label query parameter format is wrong (key:value)");
- }
- String consul_serviceName=getServiceName4Consul(serviceName,namespace);
-
- ConsulResponse consulResponse = getHealthServices(consul_serviceName, ifPassStatus, "", "");
- if (consulResponse == null) {
- String errInfo = "microservice not found: serviceName-" + serviceName;
- throw new ExtendedNotFoundException(errInfo);
- }
- String resultJson = (String) consulResponse.getResponse();
- List<HealthService> healthServiceList =
- JacksonJsonUtil.jsonToListBean(resultJson, new TypeReference<List<HealthService>>() {});
+ public List<MicroServiceFullInfo> getMicroServiceForNodes(String serviceName, String version, boolean ifPassStatus,
+ String labels, String namespace) {
+ // TODO Auto-generated method stub
+ if ("null".equals(version)) {
+ version = "";
+ }
+ checkServiceNameAndVersion(serviceName, version);
- if (healthServiceList == null || healthServiceList.size() == 0) {
- String errInfo = "microservice not found: serviceName-" + serviceName;
- throw new ExtendedNotFoundException(errInfo);
- }
+ if (!RegExpTestUtil.labelRegExpTest(labels)) {
+ throw new UnprocessableEntityException(
+ "get MicroServiceInfo FAIL: The label query parameter format is wrong (key:value)");
+ }
- try {
- // label query,format key:value|value2,key2:value2
- boolean islabelQuery = false;
- Map<String, String> query_labelMap = new HashMap<String, String>();
- if (StringUtils.isNotBlank(labels)) {
- islabelQuery = true;
- String[] routeLabels = StringUtils.split(labels, ",");
+ String consul_serviceName = getServiceName4Consul(serviceName, namespace);
- for (int i = 0; i < routeLabels.length; i++) {
- String[] labelArray = StringUtils.split(routeLabels[i], ":");
- query_labelMap.put(labelArray[0], labelArray[1]);
+ ConsulResponse consulResponse = getHealthServices(consul_serviceName, ifPassStatus, "", "");
+ if (consulResponse == null) {
+ String errInfo = "microservice not found: serviceName-" + serviceName;
+ throw new ExtendedNotFoundException(errInfo);
}
- }
-
- List<MicroServiceFullInfo> microServiceInfoList=new ArrayList<MicroServiceFullInfo>();
-
-
-
- for (HealthService healthService : healthServiceList) {
-
- Set<NodeInfo> nodes = new HashSet<NodeInfo>();
- Set<String> serviceLabels = new HashSet<String>();
- String nodeNamespace = "";
- MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
-
- Service service = healthService.getService();
- List<String> tagList = service.getTags();
-
- String ms_url = "", ms_version = "", ms_protocol = "", ms_status = "", ms_publish_port = "", ms_is_manual =
- "", ms_visualRange = "1", ms_network_plane_type = "",ms_lb_policy="",ms_host="",ms_path="";
- List<KeyVaulePair> ms_metadata = new ArrayList<KeyVaulePair>();
-
- List<String> nodeLabels = new ArrayList<String>();
- Map<String, String> labelMap = new HashMap<String, String>();
-
- NodeInfo node = new NodeInfo();
-
- node.setIp(service.getAddress());
- node.setPort(String.valueOf(service.getPort()));
- node.setNodeId(service.getId());
+ String resultJson = (String) consulResponse.getResponse();
+ List<HealthService> healthServiceList =
+ JacksonJsonUtil.jsonToListBean(resultJson, new TypeReference<List<HealthService>>() {});
+ if (healthServiceList == null || healthServiceList.size() == 0) {
+ String errInfo = "microservice not found: serviceName-" + serviceName;
+ throw new ExtendedNotFoundException(errInfo);
+ }
try {
- for (String tag : tagList) {
+ // label query,format key:value|value2,key2:value2
+ boolean islabelQuery = false;
+ Map<String, String> query_labelMap = new HashMap<String, String>();
+ if (StringUtils.isNotBlank(labels)) {
+ islabelQuery = true;
+ String[] routeLabels = StringUtils.split(labels, ",");
+ for (int i = 0; i < routeLabels.length; i++) {
+ String[] labelArray = StringUtils.split(routeLabels[i], ":");
+ query_labelMap.put(labelArray[0], labelArray[1]);
+ }
+ }
- if (tag.startsWith("\"base\"")) {
- String ms_base_json = tag.split("\"base\":")[1];
+ List<MicroServiceFullInfo> microServiceInfoList = new ArrayList<MicroServiceFullInfo>();
- Map<String, String> baseMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
- ms_url = (baseMap.get("url") == null ? "" : baseMap.get("url"));
- ms_version = (baseMap.get("version") == null ? "" : baseMap.get("version"));
- ms_protocol = (baseMap.get("protocol") == null ? "" : baseMap.get("protocol"));
- ms_status = (baseMap.get("status") == null ? "1" : baseMap.get("status"));
- if (baseMap.get("publish_port") != null) {
- ms_publish_port = (baseMap.get("publish_port"));
- }
- if (baseMap.get("is_manual") != null) {
- ms_is_manual = baseMap.get("is_manual");
+ for (HealthService healthService : healthServiceList) {
- }
+ Set<NodeInfo> nodes = new HashSet<NodeInfo>();
+ Set<String> serviceLabels = new HashSet<String>();
+ String nodeNamespace = "";
+ MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
- if (baseMap.get("ha_role") != null) {
- node.setHa_role(baseMap.get("ha_role"));
- }
-
- if (baseMap.get("host") != null) {
- ms_host=baseMap.get("host");
- }
-
- if (baseMap.get("path") != null) {
- ms_path=baseMap.get("path");
- }
+ Service service = healthService.getService();
+ List<String> tagList = service.getTags();
- continue;
- }
+ String ms_url = "", ms_version = "", ms_protocol = "", ms_status = "", ms_publish_port = "",
+ ms_is_manual = "", ms_visualRange = "1", ms_network_plane_type = "", ms_lb_policy = "",
+ ms_host = "", ms_path = "";
+ List<KeyVaulePair> ms_metadata = new ArrayList<KeyVaulePair>();
- if (tag.startsWith("\"labels\"")) {
- String ms_labels_json = "{"+tag.split("\"labels\":\\{")[1];
- labelMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_labels_json, Map.class);
+ List<String> nodeLabels = new ArrayList<String>();
+ Map<String, String> labelMap = new HashMap<String, String>();
-
+ NodeInfo node = new NodeInfo();
- for (Map.Entry<String, String> labelEntry : labelMap.entrySet()) {
- if ("visualRange".equals(labelEntry.getKey())) {
- ms_visualRange = labelEntry.getValue();
- } else if ("network_plane_type".equals(labelEntry.getKey())) {
- ms_network_plane_type = labelEntry.getValue();
- } else {
- nodeLabels.add(labelEntry.getKey() + ":" + labelEntry.getValue());
- }
+ node.setIp(service.getAddress());
+ node.setPort(String.valueOf(service.getPort()));
+ node.setNodeId(service.getId());
- }
-
- continue;
- }
- if (tag.startsWith("\"ns\"")) {
- String ms_namespace_json = tag.split("\"ns\":")[1];
- Map<String, String> namespaceMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_namespace_json, Map.class);
+ try {
- if (namespaceMap.get("namespace") != null) {
- nodeNamespace = namespaceMap.get("namespace");
- } else {
- nodeNamespace = "";
- }
+ for (String tag : tagList) {
- continue;
- }
- if (tag.startsWith("\"lb\"")) {
- String ms_lb_json = tag.split("\"lb\":")[1];
- Map<String, String> lbMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_lb_json, Map.class);
+ if (tag.startsWith("\"base\"")) {
+ String ms_base_json = tag.split("\"base\":")[1];
- if (lbMap.get("lb_policy") != null) {
- ms_lb_policy = lbMap.get("lb_policy");
- if (ms_lb_policy.startsWith("hash") || ms_lb_policy.equals("ip_hash")) {
- ms_lb_policy = "ip_hash";
- }
-
- }
+ Map<String, String> baseMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_base_json, Map.class);
+ ms_url = (baseMap.get("url") == null ? "" : baseMap.get("url"));
+ ms_version = (baseMap.get("version") == null ? "" : baseMap.get("version"));
+ ms_protocol = (baseMap.get("protocol") == null ? "" : baseMap.get("protocol"));
+ ms_status = (baseMap.get("status") == null ? "1" : baseMap.get("status"));
+
+ if (baseMap.get("publish_port") != null) {
+ ms_publish_port = (baseMap.get("publish_port"));
+ }
+
+ if (baseMap.get("is_manual") != null) {
+ ms_is_manual = baseMap.get("is_manual");
+
+ }
+
+ if (baseMap.get("ha_role") != null) {
+ node.setHa_role(baseMap.get("ha_role"));
+ }
+
+ if (baseMap.get("host") != null) {
+ ms_host = baseMap.get("host");
+ }
+
+ if (baseMap.get("path") != null) {
+ ms_path = baseMap.get("path");
+ }
+
+ continue;
+ }
+
+ if (tag.startsWith("\"labels\"")) {
+ String ms_labels_json = "{" + tag.split("\"labels\":\\{")[1];
+ labelMap = (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_labels_json, Map.class);
- if (lbMap.get("lb_server_params") != null) {
- node.setLb_server_params(lbMap.get("lb_server_params").replace(" ", ","));
- }
- continue;
- }
- if (tag.startsWith("\"checks\"")) {
- String ms_check_json = tag.split("\"checks\":")[1];
- Map<String, String> checkMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_check_json, Map.class);
+ for (Map.Entry<String, String> labelEntry : labelMap.entrySet()) {
+ if ("visualRange".equals(labelEntry.getKey())) {
+ ms_visualRange = labelEntry.getValue();
+ } else if ("network_plane_type".equals(labelEntry.getKey())) {
+ ms_network_plane_type = labelEntry.getValue();
+ } else {
+ nodeLabels.add(labelEntry.getKey() + ":" + labelEntry.getValue());
+ }
-
- //自动注册健康检查
- if (StringUtils.isNotBlank(checkMap.get("ttl"))){
- node.setCheckType("TTL");
- node.setTtl(checkMap.get("ttl"));
+ }
+
+
+ continue;
+ }
+
+ if (tag.startsWith("\"ns\"")) {
+ String ms_namespace_json = tag.split("\"ns\":")[1];
+ Map<String, String> namespaceMap = (Map<String, String>) JacksonJsonUtil
+ .jsonToBean(ms_namespace_json, Map.class);
+
+ if (namespaceMap.get("namespace") != null) {
+ nodeNamespace = namespaceMap.get("namespace");
+ } else {
+ nodeNamespace = "";
+ }
+
+ continue;
+ }
+
+ if (tag.startsWith("\"lb\"")) {
+ String ms_lb_json = tag.split("\"lb\":")[1];
+ Map<String, String> lbMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_lb_json, Map.class);
+
+ if (lbMap.get("lb_policy") != null) {
+ ms_lb_policy = lbMap.get("lb_policy");
+ if (ms_lb_policy.startsWith("hash") || ms_lb_policy.equals("ip_hash")) {
+ ms_lb_policy = "ip_hash";
+ }
+
+ }
+
+ if (lbMap.get("lb_server_params") != null) {
+ node.setLb_server_params(lbMap.get("lb_server_params").replace(" ", ","));
+ }
+
+ continue;
+ }
+
+ if (tag.startsWith("\"checks\"")) {
+ String ms_check_json = tag.split("\"checks\":")[1];
+ Map<String, String> checkMap =
+ (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_check_json, Map.class);
+
+
+ // 自动注册健康检查
+ if (StringUtils.isNotBlank(checkMap.get("ttl"))) {
+ node.setCheckType("TTL");
+ node.setTtl(checkMap.get("ttl"));
+ } else if (StringUtils.isNotBlank(checkMap.get("http"))) {
+ node.setCheckType("HTTP");
+ node.setCheckUrl(checkMap.get("http"));
+ if (checkMap.get("interval") != null)
+ node.setCheckInterval(checkMap.get("interval"));
+ if (checkMap.get("timeout") != null)
+ node.setCheckTimeOut(checkMap.get("timeout"));
+ } else if (StringUtils.isNotBlank(checkMap.get("tcp"))) {
+ node.setCheckType("TCP");
+ node.setCheckUrl(checkMap.get("tcp"));
+ if (checkMap.get("interval") != null)
+ node.setCheckInterval(checkMap.get("interval"));
+ if (checkMap.get("timeout") != null)
+ node.setCheckTimeOut(checkMap.get("timeout"));
+ }
+
+ continue;
+ }
+
+ if (tag.startsWith("\"metadata\"")) {
+ String ms_metadata_json = "{" + tag.split("\"metadata\":\\{")[1];
+ Map<String, String> metadataMap = (Map<String, String>) JacksonJsonUtil
+ .jsonToBean(ms_metadata_json, Map.class);
+
+
+
+ for (Map.Entry<String, String> entry : metadataMap.entrySet()) {
+ KeyVaulePair keyVaulePair = new KeyVaulePair();
+ keyVaulePair.setKey(entry.getKey());
+ keyVaulePair.setValue(entry.getValue());
+ ms_metadata.add(keyVaulePair);
+ }
+
+ continue;
+ }
+
+
+
+ }
+
+ } catch (Exception e) {
+ LOGGER.error(serviceName + " read tag throw exception", e);
}
- else if(StringUtils.isNotBlank(checkMap.get("http"))){
- node.setCheckType("HTTP");
- node.setCheckUrl(checkMap.get("http"));
- if (checkMap.get("interval") != null) node.setCheckInterval(checkMap.get("interval"));
- if (checkMap.get("timeout") != null) node.setCheckTimeOut(checkMap.get("timeout"));
+
+ // 健康检查信息
+ List<Check> checks = healthService.getChecks();
+ node.setStatus("passing");
+ for (Check check : checks) {
+ if (!"passing".equals(check.getStatus())) {
+ node.setStatus(check.getStatus());
+ break;
+ }
}
- else if(StringUtils.isNotBlank(checkMap.get("tcp"))){
- node.setCheckType("TCP");
- node.setCheckUrl(checkMap.get("tcp"));
- if (checkMap.get("interval") != null) node.setCheckInterval(checkMap.get("interval"));
- if (checkMap.get("timeout") != null) node.setCheckTimeOut(checkMap.get("timeout"));
+
+ if (!ms_version.equals(version)) {
+ continue;
}
-
- continue;
- }
- if (tag.startsWith("\"metadata\"")) {
- String ms_metadata_json = "{"+tag.split("\"metadata\":\\{")[1];
- Map<String, String> metadataMap =
- (Map<String, String>) JacksonJsonUtil.jsonToBean(ms_metadata_json, Map.class);
+ // namespace过滤
+ if (!namespace.equals(nodeNamespace)) {
+ continue;
+ }
-
+ // 标签过滤
+ if (islabelQuery) {
+ boolean ifMatchLabel = false;
+ for (Map.Entry<String, String> query_entry : query_labelMap.entrySet()) {
+ String key = query_entry.getKey();
+ String value = query_entry.getValue();
+ if (StringUtils.isBlank(labelMap.get(key))) {
+ continue;
+ }
+
+ String[] queryTagArray = StringUtils.split(value, "|");
+ String[] serviceTagArray = StringUtils.split(labelMap.get(key), "|");
+ if (DiscoverUtil.contain(queryTagArray, serviceTagArray)) {
+ ifMatchLabel = true;
+ break;
+ }
+
+ }
+
+ if (!ifMatchLabel) {
+ continue;
+ }
+ }
- for (Map.Entry<String, String> entry : metadataMap.entrySet()) {
- KeyVaulePair keyVaulePair = new KeyVaulePair();
- keyVaulePair.setKey(entry.getKey());
- keyVaulePair.setValue(entry.getValue());
- ms_metadata.add(keyVaulePair);
- }
- continue;
+ nodes.add(node);
+ serviceLabels.addAll(nodeLabels);
+
+ microServiceInfo.setServiceName(serviceName);
+ microServiceInfo.setUrl(ms_url);
+ microServiceInfo.setVersion(ms_version);
+ microServiceInfo.setProtocol(ms_protocol);
+ microServiceInfo.setStatus(null);
+ microServiceInfo.setPublish_port(ms_publish_port);
+ microServiceInfo.setIs_manual(Boolean.parseBoolean(ms_is_manual));
+ microServiceInfo.setVisualRange(ms_visualRange);
+ microServiceInfo.setNetwork_plane_type(ms_network_plane_type);
+ microServiceInfo.setLb_policy(ms_lb_policy);
+ microServiceInfo.setHost(ms_host);
+ microServiceInfo.setPath(ms_path);
+
+ microServiceInfo.setMetadata(ms_metadata);
+ microServiceInfo.setNamespace(namespace);
+ microServiceInfo.setLabels(new ArrayList<String>(serviceLabels));
+ microServiceInfo.setNodes(nodes);
+
+ microServiceInfoList.add(microServiceInfo);
}
- }
+ if (microServiceInfoList.size() == 0) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version
+ + ",namespace-" + namespace + ",labels-" + labels;
+ throw new ExtendedNotFoundException(errInfo);
+ }
+
+
+ return microServiceInfoList;
+
+
+ } catch (ExtendedNotFoundException e) {
+ throw e;
} catch (Exception e) {
- LOGGER.error(serviceName + " read tag throw exception", e);
+ throw new ExtendedInternalServerErrorException(e.getMessage());
}
+ }
- // 健康检查信息
- List<Check> checks = healthService.getChecks();
- node.setStatus("passing");
- for (Check check : checks) {
- if (!"passing".equals(check.getStatus())) {
- node.setStatus(check.getStatus());
- break;
- }
+
+ private String getServiceName4Consul(String serviceName, String namespace) {
+ String consul_serviceName;
+
+ if (StringUtils.isNotBlank(namespace)) {
+ // if (DiscoverUtil.APIGATEWAY_SERVINCE_DEFAULT.equals(namespace)) {
+ // consul_serviceName=serviceName;
+ // }else{
+ consul_serviceName = serviceName + "-" + namespace;
+ // }
+ } else {
+ consul_serviceName = serviceName;
}
-
- if (!ms_version.equals(version)) {
- continue;
+ return consul_serviceName;
+ }
+
+
+
+ private void checkMicroServiceInfo(MicroServiceInfo microServiceInfo) {
+
+ if (StringUtils.isBlank(microServiceInfo.getServiceName())
+ || StringUtils.isBlank(microServiceInfo.getProtocol())) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL: Some required fields are empty");
}
- // namespace过滤
- if (!namespace.equals(nodeNamespace)) {
- continue;
+ if (microServiceInfo.getNodes() == null || microServiceInfo.getNodes().size() == 0) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL: Nodes fields are empty");
}
- // 标签过滤
- if (islabelQuery) {
- boolean ifMatchLabel = false;
- for (Map.Entry<String, String> query_entry : query_labelMap.entrySet()) {
- String key = query_entry.getKey();
- String value = query_entry.getValue();
- if (StringUtils.isBlank(labelMap.get(key))) {
- continue;
+ if (!RegExpTestUtil.serviceNameRegExpTest(microServiceInfo.getServiceName().trim())) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:ServiceName("
+ + microServiceInfo.getServiceName() + ") format error");
+ }
+
+ if (StringUtils.isNotBlank(microServiceInfo.getHost())) {
+ if (!RegExpTestUtil.serviceNameRegExpTest(microServiceInfo.getHost().trim())) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo host (" + microServiceInfo.getHost() + ") format error");
}
+ }
- String[] queryTagArray = StringUtils.split(value, "|");
- String[] serviceTagArray = StringUtils.split(labelMap.get(key), "|");
- if (DiscoverUtil.contain(queryTagArray, serviceTagArray)) {
- ifMatchLabel = true;
- break;
+ if (StringUtils.isNotBlank(microServiceInfo.getLb_policy())) {
+ if (!DiscoverUtil.checkExist(DiscoverUtil.LB_POLICY_LIST, microServiceInfo.getLb_policy().trim(), ",")) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:lb_policy is wrong,value range:("
+ + DiscoverUtil.LB_POLICY_LIST + ")");
}
- }
+ }
+
+ if (StringUtils.isNotBlank(microServiceInfo.getVersion())) {
+ if (!RegExpTestUtil.versionRegExpTest(microServiceInfo.getVersion())) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:version is not a valid format");
- if (!ifMatchLabel) {
- continue;
- }
+ }
}
- nodes.add(node);
- serviceLabels.addAll(nodeLabels);
-
- microServiceInfo.setServiceName(serviceName);
- microServiceInfo.setUrl(ms_url);
- microServiceInfo.setVersion(ms_version);
- microServiceInfo.setProtocol(ms_protocol);
- microServiceInfo.setStatus(null);
- microServiceInfo.setPublish_port(ms_publish_port);
- microServiceInfo.setIs_manual(Boolean.parseBoolean(ms_is_manual));
- microServiceInfo.setVisualRange(ms_visualRange);
- microServiceInfo.setNetwork_plane_type(ms_network_plane_type);
- microServiceInfo.setLb_policy(ms_lb_policy);
- microServiceInfo.setHost(ms_host);
- microServiceInfo.setPath(ms_path);
-
- microServiceInfo.setMetadata(ms_metadata);
- microServiceInfo.setNamespace(namespace);
- microServiceInfo.setLabels(new ArrayList<String>(serviceLabels));
- microServiceInfo.setNodes(nodes);
-
- microServiceInfoList.add(microServiceInfo);
- }
-
-
-
- if (microServiceInfoList.size() == 0) {
- String errInfo =
- "microservice not found: serviceName-" + serviceName + ",version-" + version
- + ",namespace-" + namespace + ",labels-" + labels;
- throw new ExtendedNotFoundException(errInfo);
- }
-
-
-
-
-
- return microServiceInfoList;
-
-
- } catch (ExtendedNotFoundException e) {
- throw e;
- } catch (Exception e) {
- throw new ExtendedInternalServerErrorException(e.getMessage());
- }
- }
-
-
- private String getServiceName4Consul(String serviceName,String namespace){
- String consul_serviceName;
-
- if (StringUtils.isNotBlank(namespace)) {
-// if (DiscoverUtil.APIGATEWAY_SERVINCE_DEFAULT.equals(namespace)) {
-// consul_serviceName=serviceName;
-// }else{
- consul_serviceName=serviceName+"-"+namespace;
-// }
- }
- else{
- consul_serviceName=serviceName;
- }
- return consul_serviceName;
- }
+ if (StringUtils.isNotBlank(microServiceInfo.getUrl())) {
+ String url = microServiceInfo.getUrl();
+ if (!"/".equals(url)) {
+ if (!url.startsWith("/")) {
+ url = "/" + url;
+ microServiceInfo.setUrl(url);
+ }
+ if (url.endsWith("/")) {
+ url = url.substring(0, url.length() - 1);
+ microServiceInfo.setUrl(url);
+ }
+ }
+ if (!RegExpTestUtil.urlRegExpTest(url)) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:url (" + url + ") is not a valid format");
+ }
+ } else {
+ microServiceInfo.setUrl("/");
+ }
- private void checkMicroServiceInfo(MicroServiceInfo microServiceInfo){
- if (StringUtils.isBlank(microServiceInfo.getServiceName())
- || StringUtils.isBlank(microServiceInfo.getProtocol())) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL: Some required fields are empty");
- }
-
- if(microServiceInfo.getNodes()==null || microServiceInfo.getNodes().size() == 0){
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL: Nodes fields are empty");
- }
+ if (StringUtils.isNotBlank(microServiceInfo.getPath())) {
- if (!RegExpTestUtil.serviceNameRegExpTest(microServiceInfo.getServiceName().trim())) {
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:ServiceName("
- + microServiceInfo.getServiceName() + ") format error");
- }
-
- if (StringUtils.isNotBlank(microServiceInfo.getHost())) {
- if (!RegExpTestUtil.serviceNameRegExpTest(microServiceInfo.getHost().trim())) {
- throw new UnprocessableEntityException("register MicroServiceInfo host ("
- + microServiceInfo.getHost() + ") format error");
- }
- }
+ String path = microServiceInfo.getPath();
+ if (!"/".equals(path)) {
+ if (!path.startsWith("/")) {
+ path = "/" + path;
+ microServiceInfo.setPath(path);
+ }
- if (StringUtils.isNotBlank(microServiceInfo.getLb_policy())) {
- if (!DiscoverUtil.checkExist(DiscoverUtil.LB_POLICY_LIST, microServiceInfo.getLb_policy()
- .trim(), ",")) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:lb_policy is wrong,value range:("
- + DiscoverUtil.LB_POLICY_LIST + ")");
- }
+ if (path.endsWith("/")) {
+ path = path.substring(0, path.length() - 1);
+ microServiceInfo.setPath(path);
+ }
+ }
- }
-
- if (StringUtils.isNotBlank(microServiceInfo.getVersion())) {
- if (!RegExpTestUtil.versionRegExpTest(microServiceInfo.getVersion())) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:version is not a valid format");
+ if (!RegExpTestUtil.urlRegExpTest(path)) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:path (" + path + ") is not a valid format");
- }
- }
+ }
- if (StringUtils.isNotBlank(microServiceInfo.getUrl())) {
-
- String url=microServiceInfo.getUrl();
- if(!"/".equals(url)){
- if(!url.startsWith("/")){
- url="/"+url;
- microServiceInfo.setUrl(url);
- }
-
- if(url.endsWith("/")){
- url=url.substring(0, url.length()-1);
- microServiceInfo.setUrl(url);
}
- }
-
- if (!RegExpTestUtil.urlRegExpTest(url)) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:url ("+url+") is not a valid format");
- }
-
- }
- else{
- microServiceInfo.setUrl("/");
- }
-
-
- if (StringUtils.isNotBlank(microServiceInfo.getPath())) {
-
- String path=microServiceInfo.getPath();
- if(!"/".equals(path)){
- if(!path.startsWith("/")){
- path="/"+path;
- microServiceInfo.setPath(path);
- }
-
- if(path.endsWith("/")){
- path=path.substring(0, path.length()-1);
- microServiceInfo.setPath(path);
- }
- }
-
- if (!RegExpTestUtil.urlRegExpTest(path)) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:path ("+path+") is not a valid format");
- }
-
+ for (Node node : microServiceInfo.getNodes()) {
- }
+ if (StringUtils.isNotBlank(node.getIp())) {
+ if (!RegExpTestUtil.ipRegExpTest(node.getIp())) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:IP(" + node.getIp() + ")is not a valid ip address");
+ }
+ }
+ if (!RegExpTestUtil.portRegExpTest(node.getPort())) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Port(" + node.getPort()
+ + ")is not a valid Port address");
+ }
- for (Node node : microServiceInfo.getNodes()) {
- if (StringUtils.isNotBlank(node.getIp())) {
- if (!RegExpTestUtil.ipRegExpTest(node.getIp())) {
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:IP(" + node.getIp()
- + ")is not a valid ip address");
- }
- }
+ if (StringUtils.isNotBlank(node.getLb_server_params())) {
+ try {
+ String[] lb_server_params_array = node.getLb_server_params().split(",");
+ for (int i = 0; i < lb_server_params_array.length; i++) {
+ String params = lb_server_params_array[i].split("=")[0];
+ if (!DiscoverUtil.checkExist(DiscoverUtil.LB_PARAMS_LIST, params, ",")) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:lb_server_params is wrong:"
+ + lb_server_params_array[i]);
+ }
+ }
+ } catch (Exception e) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:lb_server_params'format is wrong:"
+ + node.getLb_server_params());
+ }
- if (!RegExpTestUtil.portRegExpTest(node.getPort())) {
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Port("
- + node.getPort() + ")is not a valid Port address");
- }
+ }
+ if (StringUtils.isNotBlank(node.getCheckType())) {
+ if (!DiscoverUtil.checkExist(DiscoverUtil.CHECK_TYPE_LIST, node.getCheckType().trim(), ",")) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:checkType is wrong,value range:("
+ + DiscoverUtil.CHECK_TYPE_LIST + ")");
+ }
- if (StringUtils.isNotBlank(node.getLb_server_params())) {
- try {
- String[] lb_server_params_array = node.getLb_server_params().split(",");
- for (int i = 0; i < lb_server_params_array.length; i++) {
- String params = lb_server_params_array[i].split("=")[0];
- if (!DiscoverUtil.checkExist(DiscoverUtil.LB_PARAMS_LIST, params, ",")) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:lb_server_params is wrong:"
- + lb_server_params_array[i]);
- }
- }
- } catch (Exception e) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:lb_server_params'format is wrong:"
- + node.getLb_server_params());
- }
- }
+ if ("HTTP".equals(node.getCheckType()) || "TCP".equals(node.getCheckType())) {
+ String checkUrl = node.getCheckUrl();
+ if (StringUtils.isBlank(checkUrl)) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:checkUrl field is empty");
+ }
- if (StringUtils.isNotBlank(node.getCheckType())) {
- if (!DiscoverUtil.checkExist(DiscoverUtil.CHECK_TYPE_LIST, node.getCheckType().trim(), ",")) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:checkType is wrong,value range:("
- + DiscoverUtil.CHECK_TYPE_LIST + ")");
- }
+ if ("HTTP".equals(node.getCheckType())) {
- if ("HTTP".equals(node.getCheckType()) || "TCP".equals(node.getCheckType())) {
- String checkUrl=node.getCheckUrl();
- if (StringUtils.isBlank(checkUrl)) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:checkUrl field is empty");
- }
-
- if("HTTP".equals(node.getCheckType())){
-
-
- if(RegExpTestUtil.httpUrlRegExpTest(checkUrl)){
- if(!checkUrl.startsWith("http://")){
- checkUrl="http://"+checkUrl;
- node.setCheckUrl(checkUrl);
+ if (RegExpTestUtil.httpUrlRegExpTest(checkUrl)) {
+ if (!checkUrl.startsWith("http://")) {
+ checkUrl = "http://" + checkUrl;
+ node.setCheckUrl(checkUrl);
+ }
+ } else {
+ if (!checkUrl.startsWith("/")) {
+ checkUrl = "/" + checkUrl;
+ }
+ checkUrl = "http://" + node.getIp() + ":" + node.getPort() + checkUrl;
+ node.setCheckUrl(checkUrl);
+ }
+ }
+
+
+ }
+
}
- }
- else{
- if(!checkUrl.startsWith("/")){
- checkUrl="/"+checkUrl;
+
+ if (StringUtils.isNotBlank(node.getHa_role())) {
+ if (!DiscoverUtil.checkExist(DiscoverUtil.CHECK_HA_ROLE_LIST, node.getHa_role().trim(), ",")) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:ha_role is wrong,value range:("
+ + DiscoverUtil.CHECK_HA_ROLE_LIST + ")");
+ }
}
- checkUrl="http://"+node.getIp()+":"+node.getPort()+checkUrl;
- node.setCheckUrl(checkUrl);
- }
- }
-
-
+
+
}
- }
- if (StringUtils.isNotBlank(node.getHa_role())) {
- if (!DiscoverUtil
- .checkExist(DiscoverUtil.CHECK_HA_ROLE_LIST, node.getHa_role().trim(), ",")) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:ha_role is wrong,value range:("
- + DiscoverUtil.CHECK_HA_ROLE_LIST + ")");
+
+ String[] visualRangeArray = StringUtils.split(microServiceInfo.getVisualRange(), "|");
+ for (int i = 0; i < visualRangeArray.length; i++) {
+ if (!DiscoverUtil.checkExist(DiscoverUtil.VISUAL_RANGE_LIST, visualRangeArray[i], ",")) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:type is wrong,value range:("
+ + DiscoverUtil.VISUAL_RANGE_LIST + ")");
+ }
}
- }
+ microServiceInfo.setProtocol(microServiceInfo.getProtocol().toUpperCase());
+ if (!DiscoverUtil.checkExist(DiscoverUtil.PROTOCOL_LIST, microServiceInfo.getProtocol().trim(), ",")) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Protocol is wrong,value range:("
+ + DiscoverUtil.PROTOCOL_LIST + ")");
+ }
- }
+ if (microServiceInfo.getLabels() != null) {
+ for (String label : microServiceInfo.getLabels()) {
+ if (!RegExpTestUtil.labelRegExpTest(label)) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:label[" + label
+ + "] is not a valid format(key:value)");
+ }
+ }
+ }
-
- String[] visualRangeArray = StringUtils.split(microServiceInfo.getVisualRange(), "|");
- for (int i = 0; i < visualRangeArray.length; i++) {
- if (!DiscoverUtil.checkExist(DiscoverUtil.VISUAL_RANGE_LIST, visualRangeArray[i], ",")) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:type is wrong,value range:("
- + DiscoverUtil.VISUAL_RANGE_LIST + ")");
- }
- }
- microServiceInfo.setProtocol(microServiceInfo.getProtocol().toUpperCase());
- if (!DiscoverUtil.checkExist(DiscoverUtil.PROTOCOL_LIST, microServiceInfo.getProtocol().trim(),
- ",")) {
- throw new UnprocessableEntityException(
- "register MicroServiceInfo FAIL:Protocol is wrong,value range:("
- + DiscoverUtil.PROTOCOL_LIST + ")");
- }
+ // 判断自定义发布端口
+ if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
- if (microServiceInfo.getLabels()!=null) {
- for (String label : microServiceInfo.getLabels()) {
- if (!RegExpTestUtil.labelRegExpTest(label)) {
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:label[" + label
- + "] is not a valid format(key:value)");
- }
- }
- }
+ if (DiscoverUtil.checkExist(DiscoverUtil.HTTP_PROTOCOL, microServiceInfo.getProtocol())) {
+
+ if (microServiceInfo.getPublish_port().contains("|")) {
+
+ String[] publishPortArray = StringUtils.split(microServiceInfo.getPublish_port(), "|");
+
+ int portNum = publishPortArray.length;
+
+ // 判断端口格式
+ for (int i = 0; i < portNum; i++) {
+ if (!RegExpTestUtil.portRegExpTest(publishPortArray[i])) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public Port("
+ + publishPortArray[i] + ")is not a valid Port address");
+ }
+ }
+
+ // 判断端口数量
+ if (portNum == 0 || portNum > 2) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:Public Port num is wrong:" + portNum);
+ } else if (portNum == 2) {
+ // 判断端口值是否一样
+ if (publishPortArray[0].equals(publishPortArray[1])) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:Two ports have the same value :"
+ + publishPortArray[0]);
+ }
+ } else if (portNum == 1) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:Two ports have one null value");
+ }
+ } else {
+ if (!RegExpTestUtil.portRegExpTest(microServiceInfo.getPublish_port())) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public Port("
+ + microServiceInfo.getPublish_port() + ")is not a valid Port address");
+ }
+ }
+ } else if ("TCP".equals(microServiceInfo.getProtocol()) || "UDP".equals(microServiceInfo.getProtocol())) {
+ if (!RegExpTestUtil.portRegExpTest(microServiceInfo.getPublish_port())) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public Port("
+ + microServiceInfo.getPublish_port() + ")is not a valid Port address");
+ }
+ int tcpUdpPortRangeStart = Integer.parseInt(ConfigUtil.getInstance().getTcpudpPortRangeStart());
+ int tcpUdpPortRangeEnd = Integer.parseInt(ConfigUtil.getInstance().getTcpudpPortRangeEnd());
+ int iPublishPort = Integer.parseInt(microServiceInfo.getPublish_port());
- // 判断自定义发布端口
- if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
-
- if(DiscoverUtil.checkExist(DiscoverUtil.HTTP_PROTOCOL, microServiceInfo.getProtocol())){
-
- if(microServiceInfo.getPublish_port().contains("|")){
-
- String[] publishPortArray = StringUtils.split(microServiceInfo.getPublish_port(), "|");
-
- int portNum=publishPortArray.length;
-
- //判断端口格式
- for (int i = 0; i < portNum; i++) {
- if (!RegExpTestUtil.portRegExpTest(publishPortArray[i])) {
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public Port("
- +publishPortArray[i] + ")is not a valid Port address");
- }
- }
-
- //判断端口数量
- if(portNum==0 || portNum>2){
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public Port num is wrong:"+portNum);
- }
- else if(portNum==2){
- //判断端口值是否一样
- if(publishPortArray[0].equals(publishPortArray[1])){
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Two ports have the same value :"+publishPortArray[0]);
+ if (iPublishPort > tcpUdpPortRangeEnd || iPublishPort < tcpUdpPortRangeStart) {
+ throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public_Port Range ("
+ + tcpUdpPortRangeStart + "-" + tcpUdpPortRangeEnd + ")");
+ }
+
+ } else {
+ microServiceInfo.setPublish_port("");
}
- }
- else if(portNum==1){
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Two ports have one null value");
- }
- }
- else{
- if (!RegExpTestUtil.portRegExpTest(microServiceInfo.getPublish_port())) {
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public Port("
- + microServiceInfo.getPublish_port() + ")is not a valid Port address");
- }
- }
-
- }
- else if("TCP".equals(microServiceInfo.getProtocol()) || "UDP".equals(microServiceInfo.getProtocol())){
- if (!RegExpTestUtil.portRegExpTest(microServiceInfo.getPublish_port())) {
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public Port("
- + microServiceInfo.getPublish_port() + ")is not a valid Port address");
+
+
+
}
-
- int tcpUdpPortRangeStart= Integer.parseInt(ConfigUtil.getInstance().getTcpudpPortRangeStart());
- int tcpUdpPortRangeEnd= Integer.parseInt(ConfigUtil.getInstance().getTcpudpPortRangeEnd());
- int iPublishPort=Integer.parseInt(microServiceInfo.getPublish_port());
-
- if(iPublishPort>tcpUdpPortRangeEnd || iPublishPort <tcpUdpPortRangeStart){
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:Public_Port Range ("
- + tcpUdpPortRangeStart + "-"+tcpUdpPortRangeEnd+")");
+
+ // 检查同名不同协议注册
+ try {
+ List<MicroServiceFullInfo> serviceList = getMicroServiceForNodes(microServiceInfo.getServiceName(),
+ microServiceInfo.getVersion(), false, "", microServiceInfo.getNamespace());
+ if (serviceList != null && serviceList.size() > 0) {
+ for (MicroServiceFullInfo service : serviceList) {
+ if (!service.getProtocol().equalsIgnoreCase(microServiceInfo.getProtocol())) {
+ throw new UnprocessableEntityException(
+ "register MicroServiceInfo FAIL:There is a same service ,but different protocol--"
+ + service.getProtocol());
+ }
+
+ }
+ }
+ } catch (ExtendedNotFoundException e) {
+ // LOGGER.info("register MicroServiceInfo CHECK ok for protocol:service is not fond");
}
-
- }
- else{
- microServiceInfo.setPublish_port("");
- }
-
-
-
-
+
}
-
- //检查同名不同协议注册
- try{
- List<MicroServiceFullInfo> serviceList= getMicroServiceForNodes(microServiceInfo.getServiceName(),microServiceInfo.getVersion(), false,"",microServiceInfo.getNamespace());
- if(serviceList!=null && serviceList.size()>0){
- for(MicroServiceFullInfo service:serviceList){
- if(!service.getProtocol().equalsIgnoreCase(microServiceInfo.getProtocol())){
- throw new UnprocessableEntityException("register MicroServiceInfo FAIL:There is a same service ,but different protocol--"
- + service.getProtocol());
+
+
+ private void checkServiceNameAndVersion(String serviceName, String version) {
+ if (StringUtils.isBlank(serviceName)) {
+ throw new UnprocessableEntityException("check MicroServiceInfo FAIL:serviceName can't be empty");
}
-
- }
- }
- }
- catch(ExtendedNotFoundException e){
-// LOGGER.info("register MicroServiceInfo CHECK ok for protocol:service is not fond");
- }
-
-
- }
-
-
- private void checkServiceNameAndVersion(String serviceName,String version){
- if (StringUtils.isBlank(serviceName)) {
- throw new UnprocessableEntityException(
- "check MicroServiceInfo FAIL:serviceName can't be empty");
- }
- if (!RegExpTestUtil.serviceNameRegExpTest(serviceName)) {
- throw new UnprocessableEntityException("check MicroServiceInfo FAIL:ServiceName("
- + serviceName + ") format error");
- }
+ if (!RegExpTestUtil.serviceNameRegExpTest(serviceName)) {
+ throw new UnprocessableEntityException(
+ "check MicroServiceInfo FAIL:ServiceName(" + serviceName + ") format error");
+ }
- if (StringUtils.isNotBlank(version)) {
- if (!RegExpTestUtil.versionRegExpTest(version)) {
- throw new UnprocessableEntityException(
- "check MicroServiceInfo FAIL:version is not a valid format");
- }
+ if (StringUtils.isNotBlank(version)) {
+ if (!RegExpTestUtil.versionRegExpTest(version)) {
+ throw new UnprocessableEntityException("check MicroServiceInfo FAIL:version is not a valid format");
+ }
+ }
}
- }
-
-
-
+
}