github.com/m3db/m3@v1.5.0/src/metrics/generated/proto/pipelinepb/pipeline.proto (about) 1 // Copyright (c) 2018 Uber Technologies, Inc. 2 // 3 // Permission is hereby granted, free of charge, to any person obtaining a copy 4 // of this software and associated documentation files (the "Software"), to deal 5 // in the Software without restriction, including without limitation the rights 6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 // copies of the Software, and to permit persons to whom the Software is 8 // furnished to do so, subject to the following conditions: 9 // 10 // The above copyright notice and this permission notice shall be included in 11 // all copies or substantial portions of the Software. 12 // 13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 // THE SOFTWARE. 20 21 syntax = "proto3"; 22 23 option go_package = "github.com/m3db/m3/src/metrics/generated/proto/pipelinepb"; 24 25 package pipelinepb; 26 27 import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 28 import "github.com/m3db/m3/src/metrics/generated/proto/aggregationpb/aggregation.proto"; 29 import "github.com/m3db/m3/src/metrics/generated/proto/transformationpb/transformation.proto"; 30 31 message AggregationOp { 32 aggregationpb.AggregationType type = 1; 33 } 34 35 message TransformationOp { 36 transformationpb.TransformationType type = 1; 37 } 38 39 message RollupOp { 40 enum Type { 41 GROUP_BY = 0; 42 EXCLUDE_BY = 1; 43 } 44 string new_name = 1; 45 repeated string tags = 2; 46 repeated aggregationpb.AggregationType aggregation_types = 3; 47 Type type = 4; 48 } 49 50 message PipelineOp { 51 enum Type { 52 UNKNOWN = 0; 53 AGGREGATION = 1; 54 TRANSFORMATION = 2; 55 ROLLUP = 3; 56 } 57 Type type = 1; 58 AggregationOp aggregation = 2; 59 TransformationOp transformation = 3; 60 RollupOp rollup = 4; 61 } 62 63 message Pipeline { 64 repeated PipelineOp ops = 1 [(gogoproto.nullable) = false]; 65 } 66 67 // AppliedRollupOp is a rollup operation that has been 68 // applied against a metric. 69 message AppliedRollupOp { 70 bytes id = 1; 71 aggregationpb.AggregationID aggregation_id = 2 [(gogoproto.nullable) = false]; 72 } 73 74 // AppliedPipelineOp is a pipeline operation that has 75 // been applied against a metric. 76 message AppliedPipelineOp { 77 enum Type { 78 UNKNOWN = 0; 79 TRANSFORMATION = 1; 80 ROLLUP = 2; 81 } 82 Type type = 1; 83 TransformationOp transformation = 2 [(gogoproto.nullable) = false]; 84 AppliedRollupOp rollup = 3 [(gogoproto.nullable) = false]; 85 } 86 87 // AppliedPipelineOp is a pipeline containing operations 88 // that have been applied against a metric. 89 message AppliedPipeline { 90 // A custom Unmarshal function exists in custom_unmarshal.go to allow reusing slices. 91 option (gogoproto.unmarshaler) = false; 92 repeated AppliedPipelineOp ops = 1 [(gogoproto.nullable) = false]; 93 }