aboutsummaryrefslogtreecommitdiffstats
path: root/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service
diff options
context:
space:
mode:
Diffstat (limited to 'apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service')
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/ApiRouteService.java159
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/CustomRouteService.java152
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/IuiRouteService.java151
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/MicroServiceFullService.java220
4 files changed, 682 insertions, 0 deletions
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/ApiRouteService.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/ApiRouteService.java
new file mode 100644
index 0000000..c8265b3
--- /dev/null
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/ApiRouteService.java
@@ -0,0 +1,159 @@
+package org.onap.msb.apiroute.wrapper.service;
+
+import org.onap.msb.apiroute.api.ApiRouteInfo;
+import org.onap.msb.apiroute.api.RouteServer;
+import org.onap.msb.apiroute.wrapper.dao.DAOFactory;
+import org.onap.msb.apiroute.wrapper.dao.route.IRouteDAO;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Metadata;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Node;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.RouteInfo;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Spec;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+
+public class ApiRouteService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ApiRouteService.class);
+ private static final ApiRouteService instance = new ApiRouteService();
+ private IRouteDAO routeDAO = DAOFactory.getRouteDAO();
+
+ private ApiRouteService() {
+ }
+
+ public static ApiRouteService getInstance() {
+ return instance;
+ }
+
+ public void saveApiRouteService2Redis(ApiRouteInfo apiRouteInfo, String routeKey) throws Exception {
+ if(apiRouteInfo ==null){
+ throw new Exception("input apiRouteInfo to be saved is null!");
+ }
+ RouteInfo routeInfo = APIRouteAdapter.toRouteInfo(apiRouteInfo);
+ routeDAO.saveRoute(routeKey, routeInfo);
+ }
+
+ public long deleteApiRouteService2Redis(String routeKey) throws Exception {
+ return routeDAO.deleteRoute(routeKey);
+ }
+
+ public long deleteMultiApiRouteService2Redis(String routeKeyPattern) throws Exception {
+ return routeDAO.deleteMultiRoute(routeKeyPattern);
+ }
+
+ public ApiRouteInfo getApiRouteInstance(String routeKey) throws Exception {
+ ApiRouteInfo apiRouteInfo = null;
+ RouteInfo routeInfo = null;
+ routeInfo = routeDAO.queryRoute(routeKey);
+ if(routeInfo!=null) {
+ apiRouteInfo = APIRouteAdapter.fromRouteInfo(routeInfo);
+ }
+ return apiRouteInfo;
+ }
+
+ public List<ApiRouteInfo> getMultiApiRouteInstances(String apiRedisKeyPattern) throws Exception {
+ List<ApiRouteInfo> apiRouteList = new ArrayList<>();
+ List<RouteInfo> routeInfoList = routeDAO.queryMultiRoute(apiRedisKeyPattern);
+ for (RouteInfo routeInfo : routeInfoList) {
+ if (routeInfo != null) {
+ ApiRouteInfo apiRouteInfo = APIRouteAdapter.fromRouteInfo(routeInfo);;
+ apiRouteList.add(apiRouteInfo);
+ }
+ }
+ return apiRouteList;
+ }
+
+ public void updateApiRouteStatus2Redis(String routeKey,String status) throws Exception {
+ RouteInfo routeInfo = routeDAO.queryRoute(routeKey);
+ if(routeInfo != null){
+ routeInfo.setStatus(status);
+ routeDAO.saveRoute(routeKey,routeInfo);
+ }else{
+ throw new Exception("service to be updated is not exist! Update failed");
+ }
+ }
+}
+
+class APIRouteAdapter {
+ public static RouteInfo toRouteInfo(ApiRouteInfo apiRouteInfo) {
+ RouteInfo routeInfo = new RouteInfo();
+ routeInfo.setApiVersion(apiRouteInfo.getVersion());
+ routeInfo.setStatus(apiRouteInfo.getStatus());
+
+
+ Spec spec = new Spec();
+ spec.setVisualRange(apiRouteInfo.getVisualRange());
+ spec.setUrl(apiRouteInfo.getUrl().trim());
+ spec.setPublish_port(apiRouteInfo.getPublish_port());
+ spec.setHost(apiRouteInfo.getHost());
+ spec.setApijson(apiRouteInfo.getApiJson());
+ spec.setApijsontype(apiRouteInfo.getApiJsonType());
+ spec.setMetricsUrl(apiRouteInfo.getMetricsUrl());
+ spec.setConsulServiceName(apiRouteInfo.getConsulServiceName());
+ spec.setUseOwnUpstream(apiRouteInfo.getUseOwnUpstream());
+ spec.setPublish_protocol(apiRouteInfo.getPublishProtocol());
+ spec.setEnable_ssl(apiRouteInfo.isEnable_ssl());
+ spec.setControl(apiRouteInfo.getControl());
+ RouteServer[] routeServers = apiRouteInfo.getServers();
+ List<Node> nodeList = new ArrayList<>();
+ for (RouteServer server: routeServers){
+ Node node = new Node();
+ node.setIp(server.getIp());
+ node.setPort(Integer.parseInt(server.getPort()));
+ node.setWeight(server.getWeight());
+ nodeList.add(node);
+ }
+ spec.setNodes(nodeList.toArray(new Node[]{}));
+ routeInfo.setSpec(spec);
+
+ Metadata metadata = new Metadata();
+ metadata.setName(apiRouteInfo.getServiceName());
+ metadata.setNamespace(apiRouteInfo.getNamespace());
+ Calendar now = Calendar.getInstance();
+ now.set(Calendar.MILLISECOND, 0);
+ metadata.setUpdateTimestamp(now.getTime());
+ routeInfo.setMetadata(metadata);
+
+ return routeInfo;
+ }
+
+ public static ApiRouteInfo fromRouteInfo(RouteInfo routeInfo) {
+ ApiRouteInfo apiRouteInfo = new ApiRouteInfo();
+
+ apiRouteInfo.setVersion(routeInfo.getApiVersion());
+ apiRouteInfo.setStatus(routeInfo.getStatus());
+
+ Spec spec = routeInfo.getSpec();
+ apiRouteInfo.setVisualRange(spec.getVisualRange());
+ apiRouteInfo.setUrl(spec.getUrl());
+ apiRouteInfo.setPublish_port(spec.getPublish_port());
+ apiRouteInfo.setHost(spec.getHost());
+ apiRouteInfo.setApiJson(spec.getApijson());
+ apiRouteInfo.setApiJsonType(spec.getApijsontype());
+ apiRouteInfo.setMetricsUrl(spec.getMetricsUrl());
+ apiRouteInfo.setConsulServiceName(spec.getConsulServiceName());
+ apiRouteInfo.setUseOwnUpstream(spec.getUseOwnUpstream());
+ apiRouteInfo.setPublishProtocol(spec.getPublish_protocol());
+ apiRouteInfo.setEnable_ssl(spec.isEnable_ssl());
+ apiRouteInfo.setControl(spec.getControl());
+ Node[] nodes = spec.getNodes();
+ List<RouteServer> routeServerList = new ArrayList<>();
+ for (Node node: nodes){
+ RouteServer routeServer = new RouteServer();
+ routeServer.setIp(node.getIp());
+ routeServer.setPort(String.valueOf(node.getPort()));
+ routeServer.setWeight(node.getWeight());
+ routeServerList.add(routeServer);
+ }
+ apiRouteInfo.setServers(routeServerList.toArray(new RouteServer[]{}));
+
+ Metadata metadata = routeInfo.getMetadata();
+ apiRouteInfo.setServiceName(metadata.getName());
+ apiRouteInfo.setNamespace(metadata.getNamespace());
+
+ return apiRouteInfo;
+ }
+} \ No newline at end of file
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/CustomRouteService.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/CustomRouteService.java
new file mode 100644
index 0000000..6ea680e
--- /dev/null
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/CustomRouteService.java
@@ -0,0 +1,152 @@
+package org.onap.msb.apiroute.wrapper.service;
+
+import org.onap.msb.apiroute.api.CustomRouteInfo;
+import org.onap.msb.apiroute.api.RouteServer;
+import org.onap.msb.apiroute.wrapper.dao.DAOFactory;
+import org.onap.msb.apiroute.wrapper.dao.route.IRouteDAO;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Metadata;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Node;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.RouteInfo;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Spec;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+
+public class CustomRouteService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomRouteService.class);
+
+ private static final CustomRouteService instance = new CustomRouteService();
+ private IRouteDAO routeDAO = DAOFactory.getRouteDAO();
+
+ private CustomRouteService() {
+ }
+
+ public static CustomRouteService getInstance() {
+ return instance;
+ }
+
+ public void saveCustomRouteService2Redis(CustomRouteInfo customRouteInfo, String routeKey) throws Exception {
+ if(customRouteInfo ==null){
+ throw new Exception("input customRouteInfo to be saved is null!");
+ }
+ RouteInfo routeInfo = CustomRouteAdapter.toRouteInfo(customRouteInfo);
+ routeDAO.saveRoute(routeKey, routeInfo);
+ }
+
+ public long deleteCustomRouteService2Redis(String routeKey) throws Exception {
+ return routeDAO.deleteRoute(routeKey);
+ }
+
+ public long deleteMultiCustomRouteService2Redis(String routeKeyPattern) throws Exception {
+ return routeDAO.deleteMultiRoute(routeKeyPattern);
+ }
+
+ public CustomRouteInfo getCustomRouteInstance(String routeKey) throws Exception {
+ CustomRouteInfo customRouteInfo = null;
+ RouteInfo routeInfo = null;
+ routeInfo = routeDAO.queryRoute(routeKey);
+ if(routeInfo!=null) {
+ customRouteInfo = CustomRouteAdapter.fromRouteInfo(routeInfo);
+ }
+ return customRouteInfo;
+ }
+
+ public List<CustomRouteInfo> getMultiCustomRouteInstances(String customRedisKeyPattern) throws Exception {
+ List<CustomRouteInfo> customRouteList = new ArrayList<>();
+ List<RouteInfo> routeInfoList = routeDAO.queryMultiRoute(customRedisKeyPattern);
+ for (RouteInfo routeInfo : routeInfoList) {
+ if (routeInfo != null) {
+ CustomRouteInfo customRouteInfo = CustomRouteAdapter.fromRouteInfo(routeInfo);;
+ customRouteList.add(customRouteInfo);
+ }
+ }
+ return customRouteList;
+ }
+
+ public void updateCustomRouteStatus2Redis(String routeKey,String status) throws Exception {
+ RouteInfo routeInfo = routeDAO.queryRoute(routeKey);
+ if(routeInfo != null){
+ routeInfo.setStatus(status);
+ routeDAO.saveRoute(routeKey,routeInfo);
+ }else{
+ throw new Exception("service to be updated is not exist! Update failed");
+ }
+ }
+
+}
+
+class CustomRouteAdapter {
+ public static RouteInfo toRouteInfo(CustomRouteInfo customRouteInfo) {
+ RouteInfo routeInfo = new RouteInfo();
+ routeInfo.setStatus(customRouteInfo.getStatus());
+
+
+ Spec spec = new Spec();
+ spec.setVisualRange(customRouteInfo.getVisualRange());
+ spec.setUrl(customRouteInfo.getUrl().trim());
+ spec.setPublish_port(customRouteInfo.getPublish_port());
+ spec.setHost(customRouteInfo.getHost());
+ spec.setConsulServiceName(customRouteInfo.getConsulServiceName());
+ spec.setUseOwnUpstream(customRouteInfo.getUseOwnUpstream());
+ spec.setPublish_protocol(customRouteInfo.getPublishProtocol());
+ spec.setEnable_ssl(customRouteInfo.isEnable_ssl());
+ spec.setControl(customRouteInfo.getControl());
+ RouteServer[] routeServers = customRouteInfo.getServers();
+ List<Node> nodeList = new ArrayList<>();
+ for (RouteServer server: routeServers){
+ Node node = new Node();
+ node.setIp(server.getIp());
+ node.setPort(Integer.parseInt(server.getPort()));
+ node.setWeight(server.getWeight());
+ nodeList.add(node);
+ }
+ spec.setNodes(nodeList.toArray(new Node[]{}));
+ routeInfo.setSpec(spec);
+
+ Metadata metadata = new Metadata();
+ metadata.setName(customRouteInfo.getServiceName());
+ metadata.setNamespace(customRouteInfo.getNamespace());
+ Calendar now = Calendar.getInstance();
+ now.set(Calendar.MILLISECOND, 0);
+ metadata.setUpdateTimestamp(now.getTime());
+ routeInfo.setMetadata(metadata);
+
+ return routeInfo;
+ }
+
+ public static CustomRouteInfo fromRouteInfo(RouteInfo routeInfo) {
+ CustomRouteInfo customRouteInfo = new CustomRouteInfo();
+ customRouteInfo.setStatus(routeInfo.getStatus());
+
+ Spec spec = routeInfo.getSpec();
+ customRouteInfo.setVisualRange(spec.getVisualRange());
+ customRouteInfo.setUrl(spec.getUrl());
+ customRouteInfo.setPublish_port(spec.getPublish_port());
+ customRouteInfo.setHost(spec.getHost());
+ customRouteInfo.setConsulServiceName(spec.getConsulServiceName());
+ customRouteInfo.setUseOwnUpstream(spec.getUseOwnUpstream());
+ customRouteInfo.setPublishProtocol(spec.getPublish_protocol());
+ customRouteInfo.setEnable_ssl(spec.isEnable_ssl());
+ customRouteInfo.setControl(spec.getControl());
+ Node[] nodes = spec.getNodes();
+ List<RouteServer> routeServerList = new ArrayList<>();
+ for (Node node: nodes){
+ RouteServer routeServer = new RouteServer();
+ routeServer.setIp(node.getIp());
+ routeServer.setPort(String.valueOf(node.getPort()));
+ routeServer.setWeight(node.getWeight());
+ routeServerList.add(routeServer);
+ }
+ customRouteInfo.setServers(routeServerList.toArray(new RouteServer[]{}));
+
+ Metadata metadata = routeInfo.getMetadata();
+ customRouteInfo.setServiceName(metadata.getName());
+ customRouteInfo.setNamespace(metadata.getNamespace());
+
+ return customRouteInfo;
+ }
+} \ No newline at end of file
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/IuiRouteService.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/IuiRouteService.java
new file mode 100644
index 0000000..c46cb75
--- /dev/null
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/IuiRouteService.java
@@ -0,0 +1,151 @@
+package org.onap.msb.apiroute.wrapper.service;
+
+import org.onap.msb.apiroute.api.IuiRouteInfo;
+import org.onap.msb.apiroute.api.RouteServer;
+import org.onap.msb.apiroute.wrapper.dao.DAOFactory;
+import org.onap.msb.apiroute.wrapper.dao.route.IRouteDAO;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Metadata;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Node;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.RouteInfo;
+import org.onap.msb.apiroute.wrapper.dao.route.bean.Spec;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+
+public class IuiRouteService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(CustomRouteService.class);
+
+ private static final IuiRouteService instance = new IuiRouteService();
+ private IRouteDAO routeDAO = DAOFactory.getRouteDAO();
+
+ private IuiRouteService() {
+ }
+
+ public static IuiRouteService getInstance() {
+ return instance;
+ }
+
+ public void saveIuiRouteService2Redis(IuiRouteInfo iuiRouteInfo, String routeKey) throws Exception {
+ if(iuiRouteInfo ==null){
+ throw new Exception("input apiRouteInfo to be saved is null!");
+ }
+ RouteInfo routeInfo = IuiRouteAdapter.toRouteInfo(iuiRouteInfo);
+ routeDAO.saveRoute(routeKey, routeInfo);
+ }
+
+ public long deleteIuiRouteService2Redis(String routeKey) throws Exception {
+ return routeDAO.deleteRoute(routeKey);
+ }
+
+ public long deleteMultiIuiRouteService2Redis(String routeKeyPattern) throws Exception {
+ return routeDAO.deleteMultiRoute(routeKeyPattern);
+ }
+
+ public IuiRouteInfo getIuiRouteInstance(String routeKey) throws Exception {
+ IuiRouteInfo iuiRouteInfo = null;
+ RouteInfo routeInfo = null;
+ routeInfo = routeDAO.queryRoute(routeKey);
+ if(routeInfo!=null) {
+ iuiRouteInfo = IuiRouteAdapter.fromRouteInfo(routeInfo);
+ }
+ return iuiRouteInfo;
+ }
+
+ public List<IuiRouteInfo> getMultiIuiRouteInstances(String apiRedisKeyPattern) throws Exception {
+ List<IuiRouteInfo> iuiRouteList = new ArrayList<>();
+ List<RouteInfo> routeInfoList = routeDAO.queryMultiRoute(apiRedisKeyPattern);
+ for (RouteInfo routeInfo : routeInfoList) {
+ if (routeInfo != null) {
+ IuiRouteInfo iuiRouteInfo = IuiRouteAdapter.fromRouteInfo(routeInfo);;
+ iuiRouteList.add(iuiRouteInfo);
+ }
+ }
+ return iuiRouteList;
+ }
+
+ public void updateIuiRouteStatus2Redis(String routeKey,String status) throws Exception {
+ RouteInfo routeInfo = routeDAO.queryRoute(routeKey);
+ if(routeInfo != null){
+ routeInfo.setStatus(status);
+ routeDAO.saveRoute(routeKey,routeInfo);
+ }else{
+ throw new Exception("service to be updated is not exist! Update failed");
+ }
+ }
+
+}
+
+class IuiRouteAdapter {
+ public static RouteInfo toRouteInfo(IuiRouteInfo iuiRouteInfo) {
+ RouteInfo routeInfo = new RouteInfo();
+ routeInfo.setStatus(iuiRouteInfo.getStatus());
+
+
+ Spec spec = new Spec();
+ spec.setVisualRange(iuiRouteInfo.getVisualRange());
+ spec.setUrl(iuiRouteInfo.getUrl().trim());
+ spec.setPublish_port(iuiRouteInfo.getPublish_port());
+ spec.setHost(iuiRouteInfo.getHost());
+ spec.setConsulServiceName(iuiRouteInfo.getConsulServiceName());
+ spec.setUseOwnUpstream(iuiRouteInfo.getUseOwnUpstream());
+ spec.setPublish_protocol(iuiRouteInfo.getPublishProtocol());
+ spec.setEnable_ssl(iuiRouteInfo.isEnable_ssl());
+ spec.setControl(iuiRouteInfo.getControl());
+ RouteServer[] routeServers = iuiRouteInfo.getServers();
+ List<Node> nodeList = new ArrayList<>();
+ for (RouteServer server: routeServers){
+ Node node = new Node();
+ node.setIp(server.getIp());
+ node.setPort(Integer.parseInt(server.getPort()));
+ node.setWeight(server.getWeight());
+ nodeList.add(node);
+ }
+ spec.setNodes(nodeList.toArray(new Node[]{}));
+ routeInfo.setSpec(spec);
+
+ Metadata metadata = new Metadata();
+ metadata.setName(iuiRouteInfo.getServiceName());
+ metadata.setNamespace(iuiRouteInfo.getNamespace());
+ Calendar now = Calendar.getInstance();
+ now.set(Calendar.MILLISECOND, 0);
+ metadata.setUpdateTimestamp(now.getTime());
+ routeInfo.setMetadata(metadata);
+ return routeInfo;
+ }
+
+ public static IuiRouteInfo fromRouteInfo(RouteInfo routeInfo) {
+ IuiRouteInfo iuiRouteInfo = new IuiRouteInfo();
+ iuiRouteInfo.setStatus(routeInfo.getStatus());
+
+ Spec spec = routeInfo.getSpec();
+ iuiRouteInfo.setVisualRange(spec.getVisualRange());
+ iuiRouteInfo.setUrl(spec.getUrl());
+ iuiRouteInfo.setPublish_port(spec.getPublish_port());
+ iuiRouteInfo.setHost(spec.getHost());
+ iuiRouteInfo.setConsulServiceName(spec.getConsulServiceName());
+ iuiRouteInfo.setUseOwnUpstream(spec.getUseOwnUpstream());
+ iuiRouteInfo.setPublishProtocol(spec.getPublish_protocol());
+ iuiRouteInfo.setEnable_ssl(spec.isEnable_ssl());
+ iuiRouteInfo.setControl(spec.getControl());
+ Node[] nodes = spec.getNodes();
+ List<RouteServer> routeServerList = new ArrayList<>();
+ for (Node node: nodes){
+ RouteServer routeServer = new RouteServer();
+ routeServer.setIp(node.getIp());
+ routeServer.setPort(String.valueOf(node.getPort()));
+ routeServer.setWeight(node.getWeight());
+ routeServerList.add(routeServer);
+ }
+ iuiRouteInfo.setServers(routeServerList.toArray(new RouteServer[]{}));
+
+ Metadata metadata = routeInfo.getMetadata();
+ iuiRouteInfo.setServiceName(metadata.getName());
+ iuiRouteInfo.setNamespace(metadata.getNamespace());
+
+ return iuiRouteInfo;
+ }
+} \ No newline at end of file
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/MicroServiceFullService.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/MicroServiceFullService.java
new file mode 100644
index 0000000..af005ae
--- /dev/null
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/service/MicroServiceFullService.java
@@ -0,0 +1,220 @@
+package org.onap.msb.apiroute.wrapper.service;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.onap.msb.apiroute.api.MicroServiceFullInfo;
+import org.onap.msb.apiroute.wrapper.dao.DAOFactory;
+import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
+import org.onap.msb.apiroute.wrapper.dao.service.IServiceDAO;
+import org.onap.msb.apiroute.wrapper.dao.service.bean.Metadata;
+import org.onap.msb.apiroute.wrapper.dao.service.bean.ServiceInfo;
+import org.onap.msb.apiroute.wrapper.dao.service.bean.Spec;
+import org.onap.msb.apiroute.wrapper.util.MicroServiceUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.ImmutableSet;
+
+public class MicroServiceFullService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(MicroServiceFullService.class);
+
+ private static MicroServiceFullService instance = new MicroServiceFullService();
+
+ private IServiceDAO serviceDAO = DAOFactory.getServiceDAO();
+
+ private MicroServiceFullService() {
+ }
+
+ public static MicroServiceFullService getInstance() {
+ return instance;
+ }
+
+ public List<MicroServiceFullInfo> getAllMicroServiceInstances() throws Exception {
+ String serviceKeyPattern = MicroServiceUtil.getPrefixedKey("*");
+
+ List<MicroServiceFullInfo> microServiceFullInfoList = new ArrayList<>();
+ List<ServiceInfo> serviceInfoList = serviceDAO.queryMultiService(serviceKeyPattern);
+ for (ServiceInfo serviceInfo : serviceInfoList) {
+ if (serviceInfo != null) {
+ MicroServiceFullInfo microServiceFullInfo = MicroServiceFullAdapter.fromServiceInfo(serviceInfo);
+ ;
+ microServiceFullInfoList.add(microServiceFullInfo);
+ }
+ }
+ return microServiceFullInfoList;
+ }
+
+ public Set<String> getAllMicroServiceKey() throws Exception {
+ final Set<String> builder = new HashSet<String>();
+
+ String serviceKeyPattern = MicroServiceUtil.getPrefixedKey("*");
+ Set<String> serviceKeySet = RedisAccessWrapper.filterKeys(serviceKeyPattern);
+
+ Pattern serviceKeyRegexPattern = MicroServiceUtil.getServiceKeyRegexPattern();
+ for (String serviceKey : serviceKeySet) {
+ Matcher matcher = serviceKeyRegexPattern.matcher(serviceKey);
+ if (matcher.matches()) {
+ builder.add(matcher.group("servicename"));
+ }
+ }
+ return builder;
+ }
+
+ public void saveMicroServiceInfo2Redis(MicroServiceFullInfo microServiceFullInfo) throws Exception {
+ if(microServiceFullInfo ==null){
+ throw new Exception("input microServiceInfo to be saved is null!");
+ }
+ ServiceInfo serviceInfo = MicroServiceFullAdapter.toServiceInfo(microServiceFullInfo);
+ String serviceKey = MicroServiceUtil.getServiceKey(microServiceFullInfo.getServiceName(),microServiceFullInfo.getVersion());
+ serviceDAO.saveService(serviceKey,serviceInfo);
+ }
+
+ public void updateMicroServiceStatus(String serviceName, String version, String status)
+ throws Exception {
+ if (null == version || "null".equals(version)) {
+ version = "";
+ }
+ String serviceKey = MicroServiceUtil.getServiceKey(serviceName, version);
+ ServiceInfo serviceInfo = serviceDAO.queryService(serviceKey);
+ if(serviceInfo != null){
+ serviceInfo.setStatus(status);
+ serviceDAO.saveService(serviceKey,serviceInfo);
+ }
+ }
+
+ public boolean existsMicroServiceInstance(String serviceName, String version)
+ throws Exception {
+ if (null == version || "null".equals(version)) {
+ version = "";
+ }
+ String serviceKey = MicroServiceUtil.getServiceKey(serviceName, version);
+ return RedisAccessWrapper.isExist(serviceKey);
+ }
+
+ public MicroServiceFullInfo getMicroServiceInstance(String serviceName, String version)
+ throws Exception {
+ if (null == version || "null".equals(version)) {
+ version = "";
+ }
+ String serviceKey = MicroServiceUtil.getServiceKey(serviceName, version);
+
+ MicroServiceFullInfo microServiceInfo = null;
+
+ ServiceInfo serviceInfo = null;
+ serviceInfo = serviceDAO.queryService(serviceKey);
+ if(serviceInfo!=null) {
+ microServiceInfo = MicroServiceFullAdapter.fromServiceInfo(serviceInfo);
+ }
+ return microServiceInfo;
+ }
+
+ /**
+ * query all the versions of the given ServiceName
+ * @param serviceName
+ * @return
+ * @throws Exception
+ */
+ public List<MicroServiceFullInfo> getAllVersionsOfTheService(String serviceName) throws Exception {
+ String serviceKeyPattern = MicroServiceUtil.getPrefixedKey(serviceName, "*");
+
+ List<MicroServiceFullInfo> microServiceFullInfoList = new ArrayList<>();
+ List<ServiceInfo> serviceInfoList = serviceDAO.queryMultiService(serviceKeyPattern);
+ for (ServiceInfo serviceInfo : serviceInfoList) {
+ if (serviceInfo != null) {
+ MicroServiceFullInfo microServiceFullInfo = MicroServiceFullAdapter.fromServiceInfo(serviceInfo);
+ microServiceFullInfoList.add(microServiceFullInfo);
+ }
+ }
+ return microServiceFullInfoList;
+ }
+
+ public void deleteMicroService(String serviceName, String version) throws Exception {
+ if (null == version || "null".equals(version)) {
+ version = "";
+ }
+ String serviceKey = MicroServiceUtil.getServiceKey(serviceName, version);
+ serviceDAO.deleteService(serviceKey);
+ }
+
+ public long deleteMultiMicroService(String keyPattern) throws Exception {
+ return serviceDAO.deleteMultiService(keyPattern);
+ }
+}
+
+class MicroServiceFullAdapter {
+ public static ServiceInfo toServiceInfo(MicroServiceFullInfo microServiceFullInfo) {
+ ServiceInfo serviceInfo = new ServiceInfo();
+ serviceInfo.setApiVersion(microServiceFullInfo.getVersion());
+ serviceInfo.setStatus(microServiceFullInfo.getStatus());
+
+
+ Spec spec = new Spec();
+ spec.setVisualRange(microServiceFullInfo.getVisualRange());
+ spec.setUrl(microServiceFullInfo.getUrl());
+ spec.setPublish_port(microServiceFullInfo.getPublish_port());
+ spec.setHost(microServiceFullInfo.getHost());
+ spec.setProtocol(microServiceFullInfo.getProtocol());
+ spec.setLb_policy(microServiceFullInfo.getLb_policy());
+ spec.setEnable_ssl(microServiceFullInfo.isEnable_ssl());
+ Set<org.onap.msb.apiroute.api.Node> nodeSet = microServiceFullInfo.getNodes();
+ List<org.onap.msb.apiroute.wrapper.dao.service.bean.Node> serviceNodeList = new ArrayList<>();
+ for (org.onap.msb.apiroute.api.Node node : nodeSet) {
+ org.onap.msb.apiroute.wrapper.dao.service.bean.Node serviceNode = new org.onap.msb.apiroute.wrapper.dao.service.bean.Node();
+ serviceNode.setIp(node.getIp());
+ serviceNode.setPort(node.getPort());
+ serviceNode.setTtl(node.getTtl());
+ serviceNodeList.add(serviceNode);
+ }
+ spec.setNodes(serviceNodeList.toArray(new org.onap.msb.apiroute.wrapper.dao.service.bean.Node[]{}));
+ serviceInfo.setSpec(spec);
+
+ Metadata metadata = new Metadata();
+ metadata.setName(microServiceFullInfo.getServiceName());
+ metadata.setNamespace(microServiceFullInfo.getNamespace());
+ Calendar now = Calendar.getInstance();
+ now.set(Calendar.MILLISECOND, 0);
+ metadata.setUpdateTimestamp(now.getTime());
+ serviceInfo.setMetadata(metadata);
+
+ return serviceInfo;
+ }
+
+ public static MicroServiceFullInfo fromServiceInfo(ServiceInfo serviceInfo) {
+ MicroServiceFullInfo microServiceFullInfo = new MicroServiceFullInfo();
+
+ microServiceFullInfo.setVersion(serviceInfo.getApiVersion());
+ microServiceFullInfo.setStatus(serviceInfo.getStatus());
+
+ Spec spec = serviceInfo.getSpec();
+ microServiceFullInfo.setVisualRange(spec.getVisualRange());
+ microServiceFullInfo.setUrl(spec.getUrl());
+ microServiceFullInfo.setPath(spec.getPath());
+ microServiceFullInfo.setPublish_port(spec.getPublish_port());
+ microServiceFullInfo.setHost(spec.getHost());
+ microServiceFullInfo.setProtocol(spec.getProtocol());
+ microServiceFullInfo.setLb_policy(spec.getLb_policy());
+ microServiceFullInfo.setEnable_ssl(spec.isEnable_ssl());
+ org.onap.msb.apiroute.wrapper.dao.service.bean.Node[] serviceNodes = spec.getNodes();
+ List<org.onap.msb.apiroute.api.Node> nodeList = new ArrayList<>();
+ for (org.onap.msb.apiroute.wrapper.dao.service.bean.Node serviceNode : serviceNodes) {
+ org.onap.msb.apiroute.api.Node node = new org.onap.msb.apiroute.api.Node();
+ node.setIp(serviceNode.getIp());
+ node.setPort(String.valueOf(serviceNode.getPort()));
+ node.setTtl(serviceNode.getTtl());
+ nodeList.add(node);
+ }
+ microServiceFullInfo.setNodes(new HashSet<org.onap.msb.apiroute.api.Node>(nodeList));
+
+ Metadata metadata = serviceInfo.getMetadata();
+ microServiceFullInfo.setServiceName(metadata.getName());
+ microServiceFullInfo.setNamespace(metadata.getNamespace());
+
+ return microServiceFullInfo;
+ }
+}