aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/msb/sdk/httpclient/msb/MSBServiceWrapperClient.java
blob: f72f7119df6c010b77e238436b663cf265e4bc1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*******************************************************************************
 * Copyright 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
 * 
 * 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.
 ******************************************************************************/
package org.onap.msb.sdk.httpclient.msb;

import java.util.concurrent.Callable;

import org.onap.msb.sdk.discovery.MSBService;
import org.onap.msb.sdk.discovery.common.RouteException;
import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
import org.onap.msb.sdk.discovery.entity.MicroServiceInfo;
import org.onap.msb.sdk.discovery.entity.NodeAddress;
import org.onap.msb.sdk.discovery.entity.RouteResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class MSBServiceWrapperClient {

  private static final Logger logger = LoggerFactory.getLogger(MSBServiceWrapperClient.class);

  private String msbSvrAddress;

  private MSBService msbService = new MSBService();

  private String nameSpace;

  public MSBServiceWrapperClient(String msbSvrIp, int msbSvrPort) {
    super();
    this.msbSvrAddress = msbSvrIp + ":" + msbSvrPort;

    logger.info("msb service info:msbSvrAddress:{},nameSpace:{}", this.msbSvrAddress,
        this.nameSpace);

  }

  public MicroServiceFullInfo queryMicroServiceInfo(String serviceName, String version)
      throws RouteException {

    return invokeMsb(() -> msbService.queryMicroServiceInfo(msbSvrAddress, serviceName, version));


  }

  private <V> V invokeMsb(Callable<V> callable) throws RouteException {
    try {
      return callable.call();
    } catch (Exception e) {
      logger.error("msb service info:msbSvrAddress:" + this.msbSvrAddress, e);
      if (e instanceof RouteException) {
        throw (RouteException) e;
      } else {
        throw new RuntimeException(e);
      }
    }

  }


  /**
   * 注册微服务-默认追加方式,在msb上注册服务信息,服务的信息都可以填充在MicroServiceInfo上,包括:租户的信息等
   * 
   * @param microServiceInfo 微服务注册实体类
   * @throws RouteException
   * @return MicroServiceFullInfo
   */
  public MicroServiceFullInfo registerMicroServiceInfo(MicroServiceInfo msinfo)
      throws RouteException {

    return invokeMsb(() -> msbService.registerMicroServiceInfo(msbSvrAddress, msinfo));
  }



  /**
   * 注册微服务,在msb上注册服务信息,服务的信息都可以填充在MicroServiceInfo上,包括:租户的信息等
   * 
   * @param microServiceInfo 微服务注册实体类
   * @param createOrUpdate true:新增或追加更新 ,false:重新添加
   * @throws RouteException
   * @return MicroServiceFullInfo
   */
  public MicroServiceFullInfo registerMicroServiceInfo(MicroServiceInfo msinfo,
      boolean createOrUpdate) throws RouteException {

    return invokeMsb(
        () -> msbService.registerMicroServiceInfo(msbSvrAddress, msinfo, createOrUpdate));
  }



  /**
   * @Title cancelMicroServiceInfo
   * @Description TODO(注销全部微服务)
   * @param serviceName 服务名[必填,若自定义服务名包含/,用*代替]
   * @param version 版本号[若无版本号,传空字符串]
   * @throws RouteException
   * @return RouteResult
   */
  public RouteResult cancelMicroServiceInfo(String serviceName, String version)
      throws RouteException {
    return invokeMsb(() -> msbService.cancelMicroServiceInfo(msbSvrAddress, serviceName, version));
  }



  /**
   * 注销单个微服务
   * 
   * @param serviceName 服务名[必填,若自定义服务名包含/,用*代替]
   * @param version 版本号[若无版本号,传空字符串]
   * @param ip
   * @param port
   * @throws RouteException
   * @return RouteResult
   */

  public RouteResult cancelMicroServiceInfo(String serviceName, String version, String ip,
      String port) throws RouteException {

    return invokeMsb(
        () -> msbService.cancelMicroServiceInfo(msbSvrAddress, serviceName, version, ip, port));
  }


  public String getMsbSvrAddress() {
    return msbSvrAddress;
  }



  /**
   * 请求服务实例TTL健康检查,默认使用本租户的信息
   * 
   * @param serviceName 服务名
   * @param version 版本号[若无版本号,传空字符串]
   * @param ip 实例IP
   * @param port 实例端口
   * @throws RouteException
   * @return CheckNode
   */
  public NodeAddress healthCheckbyTTL(String serviceName, String version, String ip, String port)
      throws RouteException {

    return invokeMsb(
        () -> msbService.healthCheckbyTTL(msbSvrAddress, serviceName, version, ip, port));

  }



}