aboutsummaryrefslogtreecommitdiffstats
path: root/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/MicroServiceWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/MicroServiceWrapper.java')
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/MicroServiceWrapper.java521
1 files changed, 261 insertions, 260 deletions
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/MicroServiceWrapper.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/MicroServiceWrapper.java
index 588a792..fb20ba1 100644
--- a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/MicroServiceWrapper.java
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/MicroServiceWrapper.java
@@ -1,17 +1,15 @@
/*******************************************************************************
* 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.apiroute.wrapper;
@@ -37,360 +35,363 @@ import org.slf4j.LoggerFactory;
public class MicroServiceWrapper {
- private static final Logger LOGGER = LoggerFactory.getLogger(MicroServiceWrapper.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(MicroServiceWrapper.class);
- private static MicroServiceWrapper instance = new MicroServiceWrapper();
+ private static MicroServiceWrapper instance = new MicroServiceWrapper();
- private MicroServiceWrapper() {}
+ private MicroServiceWrapper() {}
- public static MicroServiceWrapper getInstance() {
- return instance;
- }
-
+ public static MicroServiceWrapper getInstance() {
+ return instance;
+ }
- /**
- * @Title: getAllMicroServiceInstances
- * @Description: getAllMicroServiceInstances
- * @param: @return
- * @return: Response
- * @throws Exception
- */
- public List<MicroServiceFullInfo> getAllMicroServiceInstances() {
+ /**
+ * @Title: getAllMicroServiceInstances
+ * @Description: getAllMicroServiceInstances
+ * @param: @return
+ * @return: Response
+ * @throws Exception
+ */
+ public List<MicroServiceFullInfo> getAllMicroServiceInstances() {
- try {
- return MicroServiceFullService.getInstance().getAllMicroServiceInstances();
+ try {
+ return MicroServiceFullService.getInstance().getAllMicroServiceInstances();
- } catch (Exception e) {
- throw new ExtendedInternalServerErrorException(e.getMessage());
- }
+ } catch (Exception e) {
+ throw new ExtendedInternalServerErrorException(e.getMessage());
+ }
- }
-
- public Set<String> getAllMicroServiceKey() {
- int failedNum = 0;
- int retryCount=3;
- int failedTimer = 5 * 1000;
-
- Set<String> serviceKeys=null;
-
- do {
-
- try {
- serviceKeys= MicroServiceFullService.getInstance().getAllMicroServiceKey();
- break;
-
- } catch (Exception e) {
-
- LOGGER.error(failedNum + "/"+retryCount+" : get AllMicroServiceKey fail"+e);
- failedNum++;
-
- try {
- Thread.sleep(failedTimer);
- } catch (InterruptedException ex) {
- LOGGER.warn("get AllMicroServiceKey Thread.sleep throw except:" + ex.getMessage());
- }
- }
-
- }while (failedNum <= retryCount);
-
-
- return serviceKeys;
-
- }
-
-
-
-
- /**
- * @Title: getMicroServiceInstance
- * @Description: (getMicroServiceInstance)
- * @param: @param serviceName
- * @param: @param version
- * @param: @return
- * @return: ApiRouteInfo
- */
- public MicroServiceFullInfo getMicroServiceInstance(String serviceName, String version) {
- if ("null".equals(version)) {
- version = "";
}
- serviceName = serviceName.replace("*", "/");
- RouteUtil.checkServiceNameAndVersion(serviceName, version);
+ public Set<String> getAllMicroServiceKey() {
+ int failedNum = 0;
+ int retryCount = 3;
+ int failedTimer = 5 * 1000;
- MicroServiceFullInfo microServiceInfo;
- try {
- microServiceInfo =
- MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
+ Set<String> serviceKeys = null;
- } catch (Exception e) {
- throw new ExtendedInternalServerErrorException(e.getMessage());
- }
+ do {
- if (null == microServiceInfo) {
- String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version;
- throw new ExtendedNotFoundException(errInfo);
+ try {
+ serviceKeys = MicroServiceFullService.getInstance().getAllMicroServiceKey();
+ break;
- }
+ } catch (Exception e) {
- return microServiceInfo;
- }
+ LOGGER.error(failedNum + "/" + retryCount + " : get AllMicroServiceKey fail" + e);
+ failedNum++;
+ try {
+ Thread.sleep(failedTimer);
+ } catch (InterruptedException ex) {
+ LOGGER.warn("get AllMicroServiceKey Thread.sleep throw except:" + ex.getMessage());
+ }
+ }
+ } while (failedNum <= retryCount);
- /**
- * @Title updateMicroServiceStatus
- * @Description updateMicroServiceStatus
- * @param serviceName
- * @param version
- * @param status
- * @return
- * @return RouteResult
- */
- public synchronized MicroServiceFullInfo updateMicroServiceStatus(String serviceName,
- String version, String status) {
+ return serviceKeys;
- if ("null".equals(version)) {
- version = "";
}
- serviceName = serviceName.replace("*", "/");
- RouteUtil.checkServiceNameAndVersion(serviceName, version);
- RouteUtil.checkServiceStatus(status);
- try {
+ /**
+ * @Title: getMicroServiceInstance
+ * @Description: (getMicroServiceInstance)
+ * @param: @param serviceName
+ * @param: @param version
+ * @param: @return
+ * @return: ApiRouteInfo
+ */
+ public MicroServiceFullInfo getMicroServiceInstance(String serviceName, String version) {
+ if ("null".equals(version)) {
+ version = "";
+ }
+ serviceName = serviceName.replace("*", "/");
- MicroServiceFullService.getInstance().updateMicroServiceStatus(serviceName, version, status);
+ RouteUtil.checkServiceNameAndVersion(serviceName, version);
- MicroServiceFullInfo newMicroServiceInfo =
- MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
+ MicroServiceFullInfo microServiceInfo;
+ try {
+ microServiceInfo = MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
- // Notify the listeners
- RouteNotify.getInstance().noticeUpdateStatusListener(newMicroServiceInfo, status);
+ } catch (Exception e) {
+ throw new ExtendedInternalServerErrorException(e.getMessage());
+ }
+
+ if (null == microServiceInfo) {
+ String errInfo = "microservice not found: serviceName-" + serviceName + ",version-" + version;
+ throw new ExtendedNotFoundException(errInfo);
+ }
- return newMicroServiceInfo;
- } catch (NullPointerException e) {
- throw new ExtendedNotFoundException(e.getMessage());
- } catch (Exception e) {
- LOGGER.error("update MicroServiceNode throw exception", e);
- throw new ExtendedInternalServerErrorException(e.getMessage());
+ return microServiceInfo;
}
- }
+ /**
+ * @Title updateMicroServiceStatus
+ * @Description updateMicroServiceStatus
+ * @param serviceName
+ * @param version
+ * @param status
+ * @return
+ * @return RouteResult
+ */
+
+ public synchronized MicroServiceFullInfo updateMicroServiceStatus(String serviceName, String version,
+ String status) {
+
+ if ("null".equals(version)) {
+ version = "";
+ }
+ serviceName = serviceName.replace("*", "/");
- public synchronized MicroServiceFullInfo saveMicroServiceInstance(
- MicroServiceFullInfo microServiceInfo, boolean createOrUpdate, String requestIP,
- String serverPort) {
+ RouteUtil.checkServiceNameAndVersion(serviceName, version);
- RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, requestIP);
+ RouteUtil.checkServiceStatus(status);
- try {
+ try {
- if (createOrUpdate == false) {
- deleteServiceAndnoticeRoute(microServiceInfo);
- }
+ MicroServiceFullService.getInstance().updateMicroServiceStatus(serviceName, version, status);
- saveServiceAndnoticeRoute(microServiceInfo);
+ MicroServiceFullInfo newMicroServiceInfo =
+ MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
+ // Notify the listeners
+ RouteNotify.getInstance().noticeUpdateStatusListener(newMicroServiceInfo, status);
- MicroServiceFullInfo newMicroServiceInfo =
- MicroServiceFullService.getInstance().getMicroServiceInstance(
- microServiceInfo.getServiceName(), microServiceInfo.getVersion());
+ return newMicroServiceInfo;
+ } catch (NullPointerException e) {
+ throw new ExtendedNotFoundException(e.getMessage());
+ } catch (Exception e) {
+ LOGGER.error("update MicroServiceNode throw exception", e);
+ throw new ExtendedInternalServerErrorException(e.getMessage());
+ }
- return newMicroServiceInfo;
- } catch (UnprocessableEntityException e) {
- throw e;
- } catch (Exception e) {
- throw new ExtendedInternalServerErrorException("save MicroServiceInfo fail :[serviceName]" + microServiceInfo.getServiceName()
- + "[version]" + microServiceInfo.getVersion()+ e.getMessage());
}
- }
+ public synchronized MicroServiceFullInfo saveMicroServiceInstance(MicroServiceFullInfo microServiceInfo,
+ boolean createOrUpdate, String requestIP, String serverPort) {
- public synchronized void deleteMicroService4AllVersion(String serviceName) {
- try {
+ RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, requestIP);
- List<MicroServiceFullInfo> microServiceList4AllVersion =
- MicroServiceFullService.getInstance().getAllVersionsOfTheService(serviceName);
+ try {
- if (microServiceList4AllVersion.size() == 0) {
- LOGGER.info("delete MicroServiceInfo for All Version Fail:serviceName-" + serviceName
- + " not fond");
- } else {
- for (MicroServiceFullInfo microServiceInfo : microServiceList4AllVersion) {
- deleteServiceAndnoticeRoute(microServiceInfo);
- }
- }
+ if (createOrUpdate == false) {
+ deleteServiceAndnoticeRoute(microServiceInfo);
+ }
- } catch (Exception e) {
- LOGGER.error("delete MicroServiceInfo for all version :serviceName-" + serviceName +" throw exception", e);
+ saveServiceAndnoticeRoute(microServiceInfo);
- }
- }
+ MicroServiceFullInfo newMicroServiceInfo = MicroServiceFullService.getInstance()
+ .getMicroServiceInstance(microServiceInfo.getServiceName(), microServiceInfo.getVersion());
- public synchronized void deleteMicroService(String serviceName, String version) {
- if ("null".equals(version)) {
- version = "";
- }
- serviceName = serviceName.replace("*", "/");
- RouteUtil.checkServiceNameAndVersion(serviceName, version);
+ return newMicroServiceInfo;
- try {
+ } catch (UnprocessableEntityException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ExtendedInternalServerErrorException(
+ "save MicroServiceInfo fail :[serviceName]" + microServiceInfo.getServiceName()
+ + "[version]" + microServiceInfo.getVersion() + e.getMessage());
+ }
- MicroServiceFullInfo microServiceInfo =
- MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
+ }
- if (microServiceInfo == null) {
- LOGGER.error("delete MicroServiceInfo FAIL:serviceName-" + serviceName + ",version-"+ version + " not fond ");
- } else {
- deleteServiceAndnoticeRoute(microServiceInfo);
- }
+ public synchronized void deleteMicroService4AllVersion(String serviceName) {
+ try {
+ List<MicroServiceFullInfo> microServiceList4AllVersion =
+ MicroServiceFullService.getInstance().getAllVersionsOfTheService(serviceName);
- } catch (ExtendedNotFoundException e) {
- throw e;
- } catch (Exception e) {
+ if (microServiceList4AllVersion.size() == 0) {
+ LOGGER.info("delete MicroServiceInfo for All Version Fail:serviceName-" + serviceName + " not fond");
+ } else {
+ for (MicroServiceFullInfo microServiceInfo : microServiceList4AllVersion) {
+ deleteServiceAndnoticeRoute(microServiceInfo);
+ }
+ }
- throw new ExtendedInternalServerErrorException("delete MicroServiceInfo serviceName-" + serviceName + ",version-" + version+e.getMessage());
+ } catch (Exception e) {
+ LOGGER.error("delete MicroServiceInfo for all version :serviceName-" + serviceName + " throw exception", e);
+ }
}
- }
+ public synchronized void deleteMicroService(String serviceName, String version) {
+ if ("null".equals(version)) {
+ version = "";
+ }
+ serviceName = serviceName.replace("*", "/");
- public synchronized void deleteMicroServiceInstance(String serviceName, String version,
- String ip, String port) {
- if ("null".equals(version)) {
- version = "";
- }
- serviceName = serviceName.replace("*", "/");
+ RouteUtil.checkServiceNameAndVersion(serviceName, version);
- RouteUtil.checkServiceNameAndVersion(serviceName, version);
+ try {
- if (!RegExpTestUtil.ipRegExpTest(ip)) {
- throw new UnprocessableEntityException("delete MicroServiceInfo FAIL:IP(" + ip+ ")is not a valid IP address");
- }
+ MicroServiceFullInfo microServiceInfo =
+ MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
- if (!RegExpTestUtil.portRegExpTest(port)) {
- throw new UnprocessableEntityException("delete MicroServiceInfo FAIL:Port(" + port + ")is not a valid Port address");
- }
+ if (microServiceInfo == null) {
+ LOGGER.error("delete MicroServiceInfo FAIL:serviceName-" + serviceName + ",version-" + version
+ + " not fond ");
+ } else {
+ deleteServiceAndnoticeRoute(microServiceInfo);
+ }
- try {
- MicroServiceFullInfo microServiceInfo =
- MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
- if (microServiceInfo == null) {
- throw new UnprocessableEntityException("delete MicroServiceInfo FAIL:serviceName-"+ serviceName + ",version-" + version + " not fond ");
- }
+ } catch (ExtendedNotFoundException e) {
+ throw e;
+ } catch (Exception e) {
- Set<Node> nodes = microServiceInfo.getNodes();
+ throw new ExtendedInternalServerErrorException("delete MicroServiceInfo serviceName-" + serviceName
+ + ",version-" + version + e.getMessage());
- boolean ifFindBNode = false;
+ }
- for (Node node : nodes) {
- if (node.getIp().equals(ip) && node.getPort().equals(port)) {
- ifFindBNode = true;
- nodes.remove(node);
- if (nodes.isEmpty()) {
- // delete MicroService
- deleteServiceAndnoticeRoute(microServiceInfo);
- } else {
- // delete Node
- MicroServiceFullService.getInstance().saveMicroServiceInfo2Redis(microServiceInfo);
- RouteNotify.getInstance().noticeRouteListener4Update(serviceName, version,
- microServiceInfo);
- }
+ }
- break;
+ public synchronized void deleteMicroServiceInstance(String serviceName, String version, String ip, String port) {
+ if ("null".equals(version)) {
+ version = "";
}
- }
+ serviceName = serviceName.replace("*", "/");
- if (!ifFindBNode) {
- throw new ExtendedNotFoundException("delete MicroServiceInfo FAIL:serviceName-"+ serviceName + ",version-" + version +",node-" + ip + ":" + port + " not fond ");
- }
+ RouteUtil.checkServiceNameAndVersion(serviceName, version);
+ if (!RegExpTestUtil.ipRegExpTest(ip)) {
+ throw new UnprocessableEntityException(
+ "delete MicroServiceInfo FAIL:IP(" + ip + ")is not a valid IP address");
+ }
- } catch (ExtendedNotFoundException e) {
- throw e;
- } catch (Exception e) {
- throw new ExtendedInternalServerErrorException("delete MicroServiceInfo :serviceName-"+ serviceName + ",version-" + version+",node-" + ip + ":" + port +"throw exception"+e.getMessage());
+ if (!RegExpTestUtil.portRegExpTest(port)) {
+ throw new UnprocessableEntityException(
+ "delete MicroServiceInfo FAIL:Port(" + port + ")is not a valid Port address");
+ }
- }
- }
+ try {
+ MicroServiceFullInfo microServiceInfo =
+ MicroServiceFullService.getInstance().getMicroServiceInstance(serviceName, version);
+
+ if (microServiceInfo == null) {
+ throw new UnprocessableEntityException("delete MicroServiceInfo FAIL:serviceName-" + serviceName
+ + ",version-" + version + " not fond ");
+ }
+
+ Set<Node> nodes = microServiceInfo.getNodes();
+
+ boolean ifFindBNode = false;
+
+ for (Node node : nodes) {
+ if (node.getIp().equals(ip) && node.getPort().equals(port)) {
+ ifFindBNode = true;
+ nodes.remove(node);
+
+ if (nodes.isEmpty()) {
+ // delete MicroService
+ deleteServiceAndnoticeRoute(microServiceInfo);
+ } else {
+ // delete Node
+ MicroServiceFullService.getInstance().saveMicroServiceInfo2Redis(microServiceInfo);
+ RouteNotify.getInstance().noticeRouteListener4Update(serviceName, version, microServiceInfo);
+ }
+ break;
+ }
+ }
- public void deleteServiceAndnoticeRoute(MicroServiceFullInfo service) throws Exception {
+ if (!ifFindBNode) {
+ throw new ExtendedNotFoundException("delete MicroServiceInfo FAIL:serviceName-" + serviceName
+ + ",version-" + version + ",node-" + ip + ":" + port + " not fond ");
+ }
- try {
- // Delete the redis record
- MicroServiceFullService.getInstance().deleteMicroService(service.getServiceName(),
- service.getVersion());
- LOGGER.info("delete MicroServiceInfo And notice to Route success:[serviceName]"+ service.getServiceName() + "[version]" + service.getVersion());
- // Notify the listeners
- RouteNotify.getInstance().noticeRouteListener4Delete(service);
-
- } catch (Exception e) {
- LOGGER.error("delete MicroService And synchro to Route:[serviceName]"+ service.getServiceName() + "[version]" + service.getVersion()+" throw exception", e);
- throw e;
+ } catch (ExtendedNotFoundException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ExtendedInternalServerErrorException("delete MicroServiceInfo :serviceName-" + serviceName
+ + ",version-" + version + ",node-" + ip + ":" + port + "throw exception" + e.getMessage());
+
+ }
+
}
- }
- public void saveServiceAndnoticeRoute(MicroServiceFullInfo service) throws Exception {
- try {
- // save the redis record
- MicroServiceFullService.getInstance().saveMicroServiceInfo2Redis(service);
-
- LOGGER.info("save MicroServiceInfo And notice to Route success:[serviceName]"+ service.getServiceName() + "[version]" + service.getVersion());
+ public void deleteServiceAndnoticeRoute(MicroServiceFullInfo service) throws Exception {
- // Notify the listeners
- RouteNotify.getInstance().noticeRouteListener4Add(service);
+ try {
+ // Delete the redis record
+ MicroServiceFullService.getInstance().deleteMicroService(service.getServiceName(), service.getVersion());
+ LOGGER.info("delete MicroServiceInfo And notice to Route success:[serviceName]" + service.getServiceName()
+ + "[version]" + service.getVersion());
+ // Notify the listeners
+ RouteNotify.getInstance().noticeRouteListener4Delete(service);
- } catch (Exception e) {
- LOGGER.error("save MicroServiceInfo And synchro to Route fail :[serviceName]" + service.getServiceName()+ "[version]" + service.getVersion() + " throw exception", e);
- throw e;
+ } catch (Exception e) {
+ LOGGER.error("delete MicroService And synchro to Route:[serviceName]" + service.getServiceName()
+ + "[version]" + service.getVersion() + " throw exception", e);
+ throw e;
+ }
}
- }
- public Set<String> getAllVersion(String serviceName) {
- Set<String> serviceVersionSet = new HashSet<String>();
- try {
- String pattern = MicroServiceUtil.getServiceKey(serviceName, "*");
- Set<String> serviceKeySet = RedisAccessWrapper.filterKeys(pattern);
+ public void saveServiceAndnoticeRoute(MicroServiceFullInfo service) throws Exception {
+
+ try {
+ // save the redis record
+ MicroServiceFullService.getInstance().saveMicroServiceInfo2Redis(service);
+ LOGGER.info("save MicroServiceInfo And notice to Route success:[serviceName]" + service.getServiceName()
+ + "[version]" + service.getVersion());
- Pattern serviceKeyRegexPattern = MicroServiceUtil.getServiceKeyRegexPattern();
- for (String serviceKey : serviceKeySet) {
- Matcher matcher = serviceKeyRegexPattern.matcher(serviceKey);
- if (matcher.matches()) {
- serviceVersionSet.add(matcher.group("version"));
+ // Notify the listeners
+ RouteNotify.getInstance().noticeRouteListener4Add(service);
+
+
+ } catch (Exception e) {
+ LOGGER.error("save MicroServiceInfo And synchro to Route fail :[serviceName]" + service.getServiceName()
+ + "[version]" + service.getVersion() + " throw exception", e);
+ throw e;
}
- }
- } catch (Exception e) {
- LOGGER.error("getAllVersion [serviceName]:" + serviceName + " throw exception", e);
}
- return serviceVersionSet;
+ public Set<String> getAllVersion(String serviceName) {
+ Set<String> serviceVersionSet = new HashSet<String>();
+ try {
+ String pattern = MicroServiceUtil.getServiceKey(serviceName, "*");
+ Set<String> serviceKeySet = RedisAccessWrapper.filterKeys(pattern);
+
+
+ Pattern serviceKeyRegexPattern = MicroServiceUtil.getServiceKeyRegexPattern();
+ for (String serviceKey : serviceKeySet) {
+ Matcher matcher = serviceKeyRegexPattern.matcher(serviceKey);
+ if (matcher.matches()) {
+ serviceVersionSet.add(matcher.group("version"));
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error("getAllVersion [serviceName]:" + serviceName + " throw exception", e);
+ }
- }
+ return serviceVersionSet;
+
+ }