blob: ae6167345f067ebe5dc38cddf420a0291eed46d5 [file] [log] [blame]
syntax = "proto3";
package dubbo.mesh.v1alpha1;
option go_package = "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1";
import "api/mesh/options.proto";
// ServiceNameMappingService is a service that mapping application name and
// interface names
service ServiceNameMappingService {
// MappingRegister from dp to cp, data plane register snp information to
// control plane.
rpc MappingRegister(MappingRegisterRequest) returns (MappingRegisterResponse);
// MappingSync from cp to dp, control plane sync snp information to data
// plane. Only in Kubernetes environment without zk/nacos, this rpc works. In
// other case (exists zk/nacos), data plane search in zk/nacos.
//
// data plane and control plane keep a streaming link:
// when Mapping Resource updated, control plane sync Mapping Resource to
// data plane.
rpc MappingSync(stream MappingSyncRequest)
returns (stream MappingSyncResponse);
}
message MappingRegisterRequest {
string namespace = 1;
string applicationName = 2;
repeated string interfaceNames = 3;
string podName = 4;
}
message MappingRegisterResponse {
bool success = 1;
string message = 2;
}
message MappingSyncRequest {
string namespace = 1;
string nonce = 2;
string interfaceName = 3;
}
message MappingSyncResponse {
string nonce = 1;
int64 revision = 2;
repeated Mapping mappings = 3;
}
message Mapping {
option (dubbo.mesh.resource).name = "MappingResource";
option (dubbo.mesh.resource).type = "Mapping";
option (dubbo.mesh.resource).package = "mesh";
option (dubbo.mesh.resource).dds.send_to_global = true;
option (dubbo.mesh.resource).dds.send_to_zone = true;
option (dubbo.mesh.resource).ws.name = "mapping";
option (dubbo.mesh.resource).ws.plural = "mappings";
option (dubbo.mesh.resource).scope_namespace = true;
option (dubbo.mesh.resource).allow_to_inspect = true;
string zone = 1;
string interfaceName = 2;
repeated string applicationNames = 3;
}