-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
filter.proto
129 lines (114 loc) · 3.33 KB
/
filter.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Copyright 2018 The Kubeflow Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// 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.
syntax = "proto3";
option go_package = "github.com/kubeflow/pipelines/backend/api/v1beta1/go_client";
package api;
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
// Predicate captures individual conditions that must be true for a resource
// being filtered.
message Predicate {
// Op is the operation to apply.
enum Op {
UNKNOWN = 0;
// Operators on scalar values. Only applies to one of |int_value|,
// |long_value|, |string_value| or |timestamp_value|.
EQUALS = 1;
NOT_EQUALS = 2;
GREATER_THAN = 3;
GREATER_THAN_EQUALS = 5;
LESS_THAN = 6;
LESS_THAN_EQUALS = 7;
// Checks if the value is a member of a given array, which should be one of
// |int_values|, |long_values| or |string_values|.
IN = 8;
// Checks if the value contains |string_value| as a substring match. Only
// applies to |string_value|.
IS_SUBSTRING = 9;
}
Op op = 1;
string key = 2;
oneof value {
int32 int_value = 3;
int64 long_value = 4;
string string_value = 5;
// Timestamp values will be converted to Unix time (seconds since the epoch)
// prior to being used in a filtering operation.
google.protobuf.Timestamp timestamp_value = 6;
// Array values below are only meant to be used by the IN operator.
IntValues int_values = 7;
LongValues long_values = 8;
StringValues string_values = 9;
}
}
message IntValues {
repeated int32 values = 1;
}
message StringValues {
repeated string values = 2;
}
message LongValues {
repeated int64 values = 3;
}
// Filter is used to filter resources returned from a ListXXX request.
//
// Example filters:
// 1) Filter runs with status = 'Running'
// filter {
// predicate {
// key: "status"
// op: EQUALS
// string_value: "Running"
// }
// }
//
// 2) Filter runs that succeeded since Dec 1, 2018
// filter {
// predicate {
// key: "status"
// op: EQUALS
// string_value: "Succeeded"
// }
// predicate {
// key: "created_at"
// op: GREATER_THAN
// timestamp_value {
// seconds: 1543651200
// }
// }
// }
//
// 3) Filter runs with one of labels 'label_1' or 'label_2'
//
// filter {
// predicate {
// key: "label"
// op: IN
// string_values {
// value: 'label_1'
// value: 'label_2'
// }
// }
// }
message Filter {
// All predicates are AND-ed when this filter is applied.
repeated Predicate predicates = 1;
}
// This dummy service is required so that grpc-gateway will generate Swagger
// definitions for the Filter message. Otherwise, it does not get generated
// since Filter itself is not used in any of the RPC calls - only a serialized
// encoded version of it is used.
service DummyFilterService {
rpc GetFilter(Filter) returns (Filter) {}
}