Skip to content

Commit 71b8603

Browse files
authored
[#1519] ServiceCombRegistration add host/port etc. api implement. (#1522) (#1525)
1 parent bfb283b commit 71b8603

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

integration-tests/discovery-servicecomb-tests/order-consumer/src/main/java/com/huaweicloud/sample/ServiceCombRegistrationController.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@
1616
*/
1717
package com.huaweicloud.sample;
1818

19+
import java.util.List;
20+
import java.util.Map;
21+
1922
import org.apache.servicecomb.service.center.client.model.Microservice;
2023
import org.apache.servicecomb.service.center.client.model.MicroserviceInstance;
2124
import org.apache.servicecomb.service.center.client.model.MicroserviceInstanceStatus;
2225
import org.springframework.beans.factory.annotation.Autowired;
26+
import org.springframework.beans.factory.annotation.Value;
2327
import org.springframework.web.bind.annotation.RequestMapping;
2428
import org.springframework.web.bind.annotation.RestController;
2529

@@ -31,6 +35,9 @@
3135
public class ServiceCombRegistrationController {
3236
private final ServiceCombRegistration serviceCombRegistration;
3337

38+
@Value("${server.port:8080}")
39+
private String port;
40+
3441
@Autowired
3542
public ServiceCombRegistrationController(
3643
ServiceCombRegistration serviceCombRegistration) {
@@ -50,6 +57,15 @@ public boolean testMicroserviceInfoCorrect() {
5057
assertTrue(microserviceInstance.getProperties().get("x-test").equals("value"));
5158
assertTrue(microserviceInstance.getProperties().get("x-test2").equals("value2"));
5259
assertTrue(microserviceInstance.getStatus() == MicroserviceInstanceStatus.UP);
60+
61+
Map<String, String> metaData = serviceCombRegistration.getMetadata();
62+
assertTrue(metaData.size() == 3);
63+
assertTrue(!serviceCombRegistration.isSecure());
64+
assertTrue(Integer.parseInt(port) == serviceCombRegistration.getPort());
65+
List<String> endpoints = serviceCombRegistration.getMicroserviceInstance().getEndpoints();
66+
assertTrue(endpoints.get(0).contains(serviceCombRegistration.getHost()));
67+
String host = serviceCombRegistration.getHost();
68+
assertTrue(host.equals(serviceCombRegistration.getUri().getHost()));
5369
return true;
5470
}
5571

spring-cloud-huawei-service-engine/service-engine-discovery/src/main/java/com/huaweicloud/servicecomb/discovery/discovery/MicroserviceHandler.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ public class MicroserviceHandler {
6363

6464
private static final String INSTANCE_PROPS = "SERVICECOMB_INSTANCE_PROPS";
6565

66+
private static String instanceAddress;
67+
6668
public static Microservice createMicroservice(BootstrapProperties bootstrapProperties) {
6769
DiscoveryBootstrapProperties discoveryBootstrapProperties = bootstrapProperties.getDiscoveryBootstrapProperties();
6870
MicroserviceProperties microserviceProperties = bootstrapProperties.getMicroserviceProperties();
@@ -138,6 +140,7 @@ public static MicroserviceInstance createMicroserviceInstance(
138140
} else {
139141
address = discoveryBootstrapProperties.getPublishAddress();
140142
}
143+
instanceAddress = address;
141144
if (discoveryProperties.isSslEnabled()) {
142145
endPoints.add("rest://" + address + ":" + discoveryProperties.getPort() + "?sslEnabled="
143146
+ discoveryProperties.isSslEnabled());
@@ -206,4 +209,8 @@ private static Map<String, String> parseProps(String... value) {
206209
.filter(v -> v.length == 2)
207210
.collect(Collectors.toMap(v -> v[0], v -> v[1]));
208211
}
212+
213+
public static String getInstanceAddress() {
214+
return instanceAddress;
215+
}
209216
}

spring-cloud-huawei-service-engine/service-engine-discovery/src/main/java/com/huaweicloud/servicecomb/discovery/registry/ServiceCombRegistration.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import java.net.URI;
2121
import java.util.Map;
2222

23+
import org.apache.commons.lang3.StringUtils;
2324
import org.apache.servicecomb.service.center.client.model.Microservice;
2425
import org.apache.servicecomb.service.center.client.model.MicroserviceInstance;
26+
import org.springframework.cloud.client.DefaultServiceInstance;
2527
import org.springframework.cloud.client.serviceregistry.Registration;
2628

2729
import com.huaweicloud.service.engine.common.configration.bootstrap.BootstrapProperties;
@@ -43,9 +45,12 @@ public class ServiceCombRegistration implements Registration {
4345

4446
private final DiscoveryBootstrapProperties discoveryBootstrapProperties;
4547

48+
private final DiscoveryProperties discoveryProperties;
49+
4650
public ServiceCombRegistration(BootstrapProperties bootstrapProperties,
4751
DiscoveryProperties discoveryProperties) {
4852
this.discoveryBootstrapProperties = bootstrapProperties.getDiscoveryBootstrapProperties();
53+
this.discoveryProperties = discoveryProperties;
4954
this.microservice = MicroserviceHandler.createMicroservice(bootstrapProperties);
5055
this.microserviceInstance = MicroserviceHandler
5156
.createMicroserviceInstance(bootstrapProperties, discoveryProperties);
@@ -76,26 +81,26 @@ public String getInstanceId() {
7681

7782
@Override
7883
public String getHost() {
79-
throw new IllegalStateException("not supported");
84+
return MicroserviceHandler.getInstanceAddress();
8085
}
8186

8287
@Override
8388
public int getPort() {
84-
throw new IllegalStateException("not supported");
89+
return StringUtils.isEmpty(discoveryProperties.getPort()) ? 8080 : Integer.parseInt(discoveryProperties.getPort());
8590
}
8691

8792
@Override
8893
public boolean isSecure() {
89-
throw new IllegalStateException("not supported");
94+
return discoveryProperties.isSslEnabled();
9095
}
9196

9297
@Override
9398
public URI getUri() {
94-
throw new IllegalStateException("not supported");
99+
return DefaultServiceInstance.getUri(this);
95100
}
96101

97102
@Override
98103
public Map<String, String> getMetadata() {
99-
throw new IllegalStateException("not supported");
104+
return microserviceInstance.getProperties();
100105
}
101106
}

0 commit comments

Comments
 (0)