blob: 70de3a4659330921d179b1a8e72729f7e8fd31e5 [file] [log] [blame]
syntax = "proto3";
package dubbo.mesh.v1alpha1;
option go_package = "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1";
import "envoy/service/discovery/v3/discovery.proto";
import "google/protobuf/any.proto";
import "google/protobuf/duration.proto";
service DubboDiscoveryService {
rpc StreamDubboResources(stream envoy.service.discovery.v3.DiscoveryRequest)
returns (stream envoy.service.discovery.v3.DiscoveryResponse);
}
message DubboResource {
message Meta {
string name = 1;
string mesh = 2;
string version = 5;
map<string, string> labels = 6;
}
Meta meta = 1;
google.protobuf.Any spec = 2;
}
message ZoneHealthCheckRequest {}
message ZoneHealthCheckResponse {
// The the interval that the global control plane
// expects between health check pings
google.protobuf.Duration interval = 1;
}
service GlobalDDSService {
// StreamXDSConfigs is logically a service exposed by Zone CP so Global CP can
// execute Config Dumps. It is however represented by bi-directional streaming
// to leverage existing connection from Zone CP to Global CP.
rpc StreamXDSConfigs(stream XDSConfigResponse)
returns (stream XDSConfigRequest);
// StreamStats is logically a service exposed by Zone CP so Global CP can
// execute dubbo-dp stats requests. It is however represented by
// bi-directional streaming to leverage existing connection from Zone CP to
// Global CP.
rpc StreamStats(stream StatsResponse) returns (stream StatsRequest);
// StreamStats is logically a service exposed by Zone CP so Global CP can
// execute dubbo-dp clusters request. It is however represented by
// bi-directional streaming to leverage existing connection from Zone CP to
// Global CP.
rpc StreamClusters(stream ClustersResponse) returns (stream ClustersRequest);
// HealthCheck allows us to implement a health check that works across
// proxies, unlike HTTP/2 PING frames.
rpc HealthCheck(ZoneHealthCheckRequest) returns (ZoneHealthCheckResponse);
}
// DDSSyncService is a service exposed by the control-plane for the
// synchronization of the resources between zone and global control-plane.
service DDSSyncService {
// GlobalToZoneSync is logically a service exposed by global control-plane
// that allows zone control plane to connect and synchronize resources from
// the global control-plane to the zone control-plane. It uses delta xDS from
// go-control-plane and responds only with the changes to the resources.
rpc GlobalToZoneSync(stream envoy.service.discovery.v3.DeltaDiscoveryRequest)
returns (stream envoy.service.discovery.v3.DeltaDiscoveryResponse);
// ZoneToGlobalSync is logically a service exposed by global control-plane
// that allows zone control plane to connect and synchronize resources to
// the global control-plane. It uses delta xDS from go-control-plane and
// responds only with the changes to the resources.
rpc ZoneToGlobalSync(stream envoy.service.discovery.v3.DeltaDiscoveryResponse)
returns (stream envoy.service.discovery.v3.DeltaDiscoveryRequest);
}
// XDSConfigRequest is a request for XDS Config Dump that is executed on Zone
// CP.
message XDSConfigRequest {
// RequestID is a UUID of a request so we can correlate requests with response
// on one stream.
string request_id = 1;
// Type of resource (Dataplane, ZoneIngress, ZoneEgress)
string resource_type = 2;
// Name of the resource on which we execute config dump.
string resource_name = 3;
// Mesh of the resource on which we execute config dump. Should be empty for
// ZoneIngress, ZoneEgress.
string resource_mesh = 4;
}
// XDSConfigRequest is a response containing result of XDS Config Dump execution
// on Zone CP.
message XDSConfigResponse {
// RequestID is a UUID that was set by the Global CP.
string request_id = 1;
oneof result {
// Error that was captured by the Zone CP when executing XDS Config Dump.
string error = 2;
// The XDS Config that is a successful result of XDS Config dump execution.
bytes config = 3;
}
}
// StatsRequest is a request for dubbo-dp stats that is executed on Zone CP.
message StatsRequest {
// RequestID is a UUID of a request so we can correlate requests with response
// on one stream.
string request_id = 1;
// Type of resource (Dataplane, ZoneIngress, ZoneEgress)
string resource_type = 2;
// Name of the resource on which we execute dubbo-dp stats request.
string resource_name = 3;
// Mesh of the resource on which we execute dubbo-dp stats request.
// Should be empty for ZoneIngress, ZoneEgress.
string resource_mesh = 4;
}
// StatsResponse is a response containing result of dubbo-dp stats execution on
// Zone CP.
message StatsResponse {
// RequestID is a UUID that was set by the Global CP.
string request_id = 1;
oneof result {
// Error that was captured by the Zone CP when executing dubbo-dp stats
// request.
string error = 2;
// The stats content that is a successful result of dubbo-dp stats
// execution.
bytes stats = 3;
}
}
// ClustersRequest is a request for dubbo-dp clusters that is executed on Zone
// CP.
message ClustersRequest {
// RequestID is a UUID of a request so we can correlate requests with response
// on one stream.
string request_id = 1;
// Type of resource (Dataplane, ZoneIngress, ZoneEgress)
string resource_type = 2;
// Name of the resource on which we execute dubbo-dp clusters request.
string resource_name = 3;
// Mesh of the resource on which we execute dubbo-dp clusters request.
// Should be empty for ZoneIngress, ZoneEgress.
string resource_mesh = 4;
}
// ClustersResponse is a response containing result of dubbo-dp clusters
// execution on Zone CP.
message ClustersResponse {
// RequestID is a UUID that was set by the Global CP.
string request_id = 1;
oneof result {
// Error that was captured by the Zone CP when executing dubbo-dp clusters
// request.
string error = 2;
// The clusters content that is a successful result of dubbo-dp clusters
// execution.
bytes clusters = 3;
}
}