diff options
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.java | 521 |
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; + + } |