diff --git a/pkg/services/billing/service.pb.go b/pkg/services/billing/service.pb.go new file mode 100644 index 000000000..e13e7fb36 Binary files /dev/null and b/pkg/services/billing/service.pb.go differ diff --git a/pkg/services/billing/service.proto b/pkg/services/billing/service.proto new file mode 100644 index 000000000..6c06cc0f6 --- /dev/null +++ b/pkg/services/billing/service.proto @@ -0,0 +1,87 @@ +syntax = "proto3"; + +package billing; + +option go_package = "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/billing"; + +// `BillingService` provides an interface to get usage statistics. +service BillingService { + // Returns list that contains container usage statistic. + rpc ListContainers(ListContainersRequest) returns (ListContainersResponse); +} + +// Signature of some message. +message Signature { + // Public key used for signing. + bytes key = 1; + + // Binary signature. + bytes signature = 2; +} + +message ListContainersRequest { + message Body { + // Container IDs to get container metrics. Not required. Maximum count is + // 10000 items. + repeated bytes container_id = 1; + // Max items count in the response. Not required. Default value is 1000. Not + // applicable if container_id is specified. Maximum value is 10000. + uint32 limit = 2; + // Next page token used to continue listing. Not required. If null or empty, + // listing starts from the beginning. + bytes next_page_token = 3; + } + + Body body = 1; + Signature signature = 2; +} + +message ListContainersResponse { + message Body { + message ContainerInfo { + message Count { + uint64 phy = 1; + uint64 logic = 2; + uint64 user = 3; + } + message Size { uint64 logic = 1; } + message Attributes { + // Container owner's wallet bytes. + bytes owner_wallet = 1; + // Container zone. + string zone = 2; + } + enum Status { + // Undefined status, default value. + UNDEFINED = 0; + // Container is available. + AVAILABLE = 1; + // Container is deleted. + DELETED = 2; + } + + // Container ID. + bytes container_id = 1; + // Container status. + Status container_status = 2; + // Container attributes. May be null if container attributes are + // unavailable for current moment or container already deleted. + Attributes attributes = 3; + // Count of the objects in container. + Count count = 4; + // Size of the objects in container. + Size size = 5; + } + + repeated ContainerInfo result = 1; + // Next page token used to get next batch. If returned value is null or + // empty, then listing completed. + bytes next_page_token = 2; + // Returned result is partial. This could happend if some shards are in + // degraded mode or returned an error. + bool partial = 3; + } + + Body body = 1; + Signature signature = 2; +} \ No newline at end of file diff --git a/pkg/services/billing/service_frostfs.pb.go b/pkg/services/billing/service_frostfs.pb.go new file mode 100644 index 000000000..c5ada111f Binary files /dev/null and b/pkg/services/billing/service_frostfs.pb.go differ diff --git a/pkg/services/billing/service_grpc.pb.go b/pkg/services/billing/service_grpc.pb.go new file mode 100644 index 000000000..be81d72e0 Binary files /dev/null and b/pkg/services/billing/service_grpc.pb.go differ