Skip to content

Commit

Permalink
feat:优化配置中心相关接口定义&支持查询服务契约 (#456)
Browse files Browse the repository at this point in the history
  • Loading branch information
chuntaojun authored Jan 17, 2024
1 parent ab1e63e commit 05141fd
Show file tree
Hide file tree
Showing 34 changed files with 1,199 additions and 66 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.tencent.polaris.api.utils.StringUtils;

import java.util.Map;
import java.util.Objects;

/**
Expand Down Expand Up @@ -30,6 +31,7 @@ public enum EventType {
RATE_LIMITING,
SERVICE,
FAULT_DETECTING,
SERVICE_CONTRACT,
}

private final ServiceKey serviceKey;
Expand Down Expand Up @@ -90,7 +92,6 @@ public static ServiceEventKeyBuilder builder() {
}

public static final class ServiceEventKeyBuilder {

private ServiceKey serviceKey;
private EventType eventType;

Expand All @@ -108,7 +109,8 @@ public ServiceEventKeyBuilder eventType(EventType eventType) {
}

public ServiceEventKey build() {
return new ServiceEventKey(serviceKey, eventType);
ServiceEventKey serviceEventKey = new ServiceEventKey(serviceKey, eventType);
return serviceEventKey;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class ServiceEventKeyTest {
@Test
public void verifyCase1() {
int receiveExceptionCnt = 0;
int expectExceptionCnt = 6;
int expectExceptionCnt = EventType.values().length - 1;
for (EventType eventType : EventType.values()) {
try {
ServiceEventKey key = new ServiceEventKey(new ServiceKey("", ""), eventType);
Expand All @@ -41,7 +41,7 @@ public void verifyCase1() {
@Test
public void verifyCase2() {
int receiveExceptionCnt = 0;
int expectExceptionCnt = 6;
int expectExceptionCnt = EventType.values().length - 1;
for (EventType eventType : EventType.values()) {
try {
ServiceEventKey key = new ServiceEventKey(new ServiceKey("test_ns", ""), eventType);
Expand All @@ -56,7 +56,7 @@ public void verifyCase2() {
@Test
public void verifyCase3() {
int receiveExceptionCnt = 0;
int expectExceptionCnt = 6;
int expectExceptionCnt = EventType.values().length - 1;
for (EventType eventType : EventType.values()) {
try {
ServiceEventKey key = new ServiceEventKey(new ServiceKey("", "test_svc"), eventType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ public interface ConfigFile extends ConfigFileMetadata {
*/
boolean hasContent();

String getMd5();

/**
* Adding a config file change listener, will trigger a callback when the config file is published
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
package com.tencent.polaris.configuration.api.core;

import com.tencent.polaris.api.plugin.configuration.ConfigFileResponse;
import com.tencent.polaris.configuration.api.rpc.ConfigPublishRequest;
import com.tencent.polaris.configuration.api.rpc.CreateConfigFileRequest;
import com.tencent.polaris.configuration.api.rpc.ReleaseConfigFileRequest;
import com.tencent.polaris.configuration.api.rpc.UpdateConfigFileRequest;

/**
* @author fabian4 2023-03-08
Expand All @@ -31,13 +35,15 @@ public interface ConfigFilePublishService {
* @param fileGroup file group of config file
* @param fileName file name
*/
@Deprecated
ConfigFileResponse createConfigFile(String namespace, String fileGroup, String fileName, String content);

/**
* Create the configuration file
*
* @param configFileMetadata config file metadata
*/
@Deprecated
ConfigFileResponse createConfigFile(ConfigFileMetadata configFileMetadata, String content);

/**
Expand All @@ -47,13 +53,15 @@ public interface ConfigFilePublishService {
* @param fileGroup file group of config file
* @param fileName file name
*/
@Deprecated
ConfigFileResponse updateConfigFile(String namespace, String fileGroup, String fileName, String content);

/**
* Update the configuration file
*
* @param configFileMetadata config file metadata
*/
@Deprecated
ConfigFileResponse updateConfigFile(ConfigFileMetadata configFileMetadata, String content);

/**
Expand All @@ -63,12 +71,46 @@ public interface ConfigFilePublishService {
* @param fileGroup file group of config file
* @param fileName file name
*/
@Deprecated
ConfigFileResponse releaseConfigFile(String namespace, String fileGroup, String fileName);

/**
* Release the configuration file
*
* @param configFileMetadata config file metadata
*/
@Deprecated
ConfigFileResponse releaseConfigFile(ConfigFileMetadata configFileMetadata);

/**
* 创建一个配置文件
*
* @param request {@link CreateConfigFileRequest}
* @return {@link ConfigFileResponse}
*/
ConfigFileResponse create(CreateConfigFileRequest request);

/**
* 更新配置文件
*
* @param request {@link UpdateConfigFileRequest}
* @return {@link ConfigFileResponse}
*/
ConfigFileResponse update(UpdateConfigFileRequest request);

/**
* 发布对应的配置文件,发布后客户端可见
*
* @param request {@link ReleaseConfigFileRequest}
* @return {@link ConfigFileResponse}
*/
ConfigFileResponse release(ReleaseConfigFileRequest request);

/**
* 创建/更新并发布配置文件,如果携带了 casMd5 参数,表示会根据 case 能力进行选自行动哦配置发布
*
* @param request {@link ConfigPublishRequest}
* @return {@link ConfigFileResponse}
*/
ConfigFileResponse upsertAndPublish(ConfigPublishRequest request);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
/*
* Tencent is pleased to support the open source community by making Polaris available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* 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 com.tencent.polaris.configuration.api.rpc;

import java.util.HashMap;
import java.util.Map;

public class ConfigPublishRequest {

private String namespace;

private String group;

private String filename;

private String content;

private String casMd5 = "";

private String releaseName = "";

private Map<String, String> labels = new HashMap<>();

public String getNamespace() {
return namespace;
}

public void setNamespace(String namespace) {
this.namespace = namespace;
}

public String getGroup() {
return group;
}

public void setGroup(String group) {
this.group = group;
}

public String getFilename() {
return filename;
}

public void setFilename(String filename) {
this.filename = filename;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public String getCasMd5() {
return casMd5;
}

public void setCasMd5(String casMd5) {
this.casMd5 = casMd5;
}

public String getReleaseName() {
return releaseName;
}

public void setReleaseName(String releaseName) {
this.releaseName = releaseName;
}

public Map<String, String> getLabels() {
return labels;
}

public void setLabels(Map<String, String> labels) {
this.labels = labels;
}

public void verify() {

}

@Override
public String toString() {
return "ConfigPublishRequest{" +
"namespace='" + namespace + '\'' +
", group='" + group + '\'' +
", filename='" + filename + '\'' +
", content='" + content + '\'' +
", casMd5='" + casMd5 + '\'' +
", releaseName='" + releaseName + '\'' +
", labels=" + labels +
'}';
}

public static Builder builder() {
return new Builder();
}

public static final class Builder {
private String namespace;
private String group;
private String filename;
private String content;
private String casMd5;
private String releaseName;
private Map<String, String> labels;

private Builder() {
}

public Builder namespace(String namespace) {
this.namespace = namespace;
return this;
}

public Builder group(String group) {
this.group = group;
return this;
}

public Builder filename(String filename) {
this.filename = filename;
return this;
}

public Builder content(String content) {
this.content = content;
return this;
}

public Builder casMd5(String casMd5) {
this.casMd5 = casMd5;
return this;
}

public Builder releaseName(String releaseName) {
this.releaseName = releaseName;
return this;
}

public Builder labels(Map<String, String> labels) {
this.labels = labels;
return this;
}

public ConfigPublishRequest build() {
ConfigPublishRequest configPublishRequest = new ConfigPublishRequest();
configPublishRequest.setNamespace(namespace);
configPublishRequest.setGroup(group);
configPublishRequest.setFilename(filename);
configPublishRequest.setContent(content);
configPublishRequest.setCasMd5(casMd5);
configPublishRequest.setReleaseName(releaseName);
configPublishRequest.setLabels(labels);
return configPublishRequest;
}
}
}
Loading

0 comments on commit 05141fd

Please sign in to comment.