diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..7e7eb1a
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,42 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/go
+{
+ "name": "Go",
+ "image": "mcr.microsoft.com/devcontainers/go:0-1-bullseye",
+
+ // Configure tool-specific properties.
+ "customizations": {
+ // Configure properties specific to VS Code.
+ "vscode": {
+ // Set *default* container specific settings.json values on container create.
+ "settings": {
+ "go.toolsManagement.checkForUpdates": "local",
+ "go.useLanguageServer": true,
+ "go.gopath": "/go"
+ },
+ "extensions": [
+ "k--kato.intellij-idea-keybindings"
+ ]
+ }
+ },
+
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ "features": {
+ "ghcr.io/devcontainers/features/desktop-lite:1": {},
+ "ghcr.io/devcontainers/features/docker-in-docker:2": {},
+ "ghcr.io/devcontainers/features/go:1": {},
+ "ghcr.io/devcontainers/features/rust:1": {},
+ "ghcr.io/devcontainers/features/sshd:1": {},
+ "ghcr.io/dhoeric/features/k9s:1": {},
+ "ghcr.io/guiyomh/features/goreleaser:0": {}
+ }
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ // "postCreateCommand": "go version",
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
diff --git a/.ko.yaml b/.ko.yaml
deleted file mode 100644
index 64bba94..0000000
--- a/.ko.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-#defaultBaseImage: docker.io/library/ubuntu:bionic
-
-defaultBaseImage: gcr.io/dmeshgate/ugate-dev:latest
-
diff --git a/.run/go-ugate.run.xml b/.run/go-ugate.run.xml
deleted file mode 100644
index 880c1db..0000000
--- a/.run/go-ugate.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.run/ugate-alice.run.xml b/.run/ugate-alice.run.xml
index 456bc11..3d6ba76 100644
--- a/.run/ugate-alice.run.xml
+++ b/.run/ugate-alice.run.xml
@@ -1,15 +1,15 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
diff --git a/.run/ugate-bob.run.xml b/.run/ugate-bob.run.xml
index 50fa2a8..240fbfc 100644
--- a/.run/ugate-bob.run.xml
+++ b/.run/ugate-bob.run.xml
@@ -1,15 +1,15 @@
-
-
-
+
+
+
-
+
-
+
diff --git a/.run/ugate-carol.run.xml b/.run/ugate-carol.run.xml
deleted file mode 100644
index 639327a..0000000
--- a/.run/ugate-carol.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.run/ugate-gate.run.xml b/.run/ugate-gate.run.xml
index 492edb9..f84581b 100644
--- a/.run/ugate-gate.run.xml
+++ b/.run/ugate-gate.run.xml
@@ -1,6 +1,5 @@
-
diff --git a/.run/ugate-s1.run.xml b/.run/ugate-s1.run.xml
deleted file mode 100644
index 3764101..0000000
--- a/.run/ugate-s1.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.run/ugate.run.xml b/.run/ugate.run.xml
index d29072c..95dcd46 100644
--- a/.run/ugate.run.xml
+++ b/.run/ugate.run.xml
@@ -1,3 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..88c8610
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,15 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "echo",
+ "type": "shell",
+ "command": "make",
+ "problemMatcher": [],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ }
+ ]
+}
diff --git a/Makefile b/Makefile
index 5951d1e..0bcd005 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
-OUT=${ROOT_DIR}/out
+OUT=${ROOT_DIR}/../out/ugate
#IMAGE ?= gcr.io/dmeshgate/ugate
REPO ?= ghcr.io/costinm/ugate
@@ -14,14 +14,21 @@ deploy: deploy/cloudrun deploy/helm
deploy/cloudrun: docker push/ugate run/cloudrun
+
deploy/helm: docker push/ugate run/helm
docker:
docker build -t ${IMAGE}:latest .
docker/dev:
- #docker pull golang:latest
- docker build -t ${IMAGE}-dev:latest -f tools/dev/Dockerfile tools/dev
+ docker build -t ${IMAGE}-dev:latest -f tools/dev/Dockerfile.devbase \
+ tools/dev
+
+docker/dev-istio:
+ #docker pull gcr.io/istio-testing/build-tools:master-latest
+ docker build -t ${IMAGE}-dev-istio:latest -f tools/dev/Dockerfile.istio-dev \
+ tools/dev
+ docker push ${IMAGE}-dev-istio:latest
push/dev:
docker push ${IMAGE}-dev:latest
@@ -29,6 +36,21 @@ push/dev:
run/dev:
docker run -it --entrypoint /bin/bash gcr.io/dmeshgate/ugate-dev:latest
+docker/devui:
+ #docker pull golang:latest
+ docker build -t ${IMAGE}-dev:cinamon-latest -f tools/dev/Dockerfile.cinamon tools/dev
+
+push/devui:
+ docker push ${IMAGE}-dev:cinamon-latest
+
+run/devui:
+ docker run -it \
+ --entrypoint /bin/bash \
+ --rm --name dev \
+ -p 18080:8080 -p 32000:22000 -p 8444:8444 \
+ -v /x/sync/dmesh-src/ugate-ws:/work \
+ ${IMAGE}-dev:cinamon-latest
+
run/docker-image:
docker run -P -v /ws/dmesh-src/work/s1:/var/lib/istio \
-v ${ROOT_DIR}:/ws \
@@ -74,11 +96,11 @@ fw/kiali:
# Build with docker: 26 sec
# Both use skaffold
# Faster than docker.
-push/ko:
- (cd cmd/ugate && ko publish . --bare)
-
-deps/ko:
- go install github.com/google/ko@latest
+#push/ko:
+# (cd cmd/ugate && ko publish . --bare)
+#
+#deps/ko:
+# go install github.com/google/ko@latest
# Run ugate in cloudrun.
# Storage: Env variables, GCP resources (buckets,secrets,k8s)
@@ -138,10 +160,6 @@ test/iptables:
iptables-save |grep ISTIO > ${OUT}/iptables_443_5201.out
diff ${OUT}/iptables_443_5201.out cmd/ugate/testdata/iptables/iptables_443_5201.out
-okteto:
- # curl https://get.okteto.com -sSfL | sh
- okteto up
-
HOSTS=c1 home
## For debug
@@ -166,15 +184,32 @@ update:
deps:
go install github.com/bufbuild/buf/cmd/buf@latest
+ go install istio.io/tools/cmd/protoc-gen-docs@latest
+ go install istio.io/tools/cmd/protoc-gen-crds@latest
+
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install github.com/bufbuild/connect-go/cmd/protoc-gen-connect-go@latest
+ go install github.com/mikefarah/yq/v4@latest
# debug tool for std grpc - need http/tcp equivalent
go install -v github.com/grpc-ecosystem/grpcdebug@latest
# Test tool
go install github.com/bojand/ghz/cmd/ghz@latest
+ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
+ chmod +x ./kubectl
+ mv ./kubectl /usr/local/bin
+
+ go install github.com/knusbaum/go9p/cmd/mount9p@latest
+ go install github.com/knusbaum/go9p/cmd/export9p@latest
+ go install github.com/knusbaum/go9p/cmd/import9p@latest
+
+
proto-gen: PATH:=${HOME}/go/bin:${PATH}
proto-gen:
cd proto && buf generate
+
+
+# Other options:
+# GOEXPERIMENT=boringcrypto and "-tags boringcrypto"
diff --git a/cmd/capture.sh b/cmd/capture.sh
index 961a42b..0f626bf 100755
--- a/cmd/capture.sh
+++ b/cmd/capture.sh
@@ -2,26 +2,144 @@
PROXY_HOME=${PROXY_HOME:-/ws/istio-proxy}
-function nat_setup() {
- groupadd -g 1337 istio
- mkdir /opt/dmesh
- mkdir /opt/dmesh/bin
- mkdir /var/dmesh
- chgrp istio /opt/dmesh
- chgrp istio /opt/dmesh/bin
- chgrp istio /var/dmesh
- chmod 775 /var/dmesh
-}
+HTTP_PORT=14080
+U=${GWUSER:-build} # istio-proxy
+PROXY_GID="1337"
-# Fow for network packet to app:
+# Flow for network packet to app:
# raw/pre -> conntrack -> mangle/pre -> nat/pre -> route -> mangle/in -> filter/in -> sock
#
# Flow from app to net;
# route -> raw/out -> conntrack -> mangle/out -> route -> nat/out -> filter/out -> mangle/post -> nat/post
-
# Local IPs: hostname -I
+# Naming:
+# DMESH_${TABLE}_${HOOK}_${SUFFIX}
+# The hook is pre, post, out
+#
+
+
+# For port 80 - we don't need tproxy or redirect - DNAT works too !
+function http() {
+ # From: https://v2.gost.run/en/redirect/, etc - no need of tproxy or original dst for HTTP or for SNI routing
+ # This can also be sent directly to another host (TODO: check on pods)
+ iptables -t nat -A OUTPUT -p tcp --dport 82 \
+ -j DNAT \
+ --to-destination 127.0.0.1:${HTTP_PORT}
+
+ #--match multiport ! --dports 15001,1080 \
+
+}
+
+function init_tun() {
+ local D=${1:-0}
+ local T=dmesh${D}
+ local TIP=10.16.${D}.1
+
+ ip tuntap add dev $T mode tun user $U group 1337
+ # No IP6 address - confuses linux
+ ip addr add $TIP/24 dev $T
+ #ip route add fd:8::0/64 dev $T
+ ip link set $T up
+
+ echo 2 > /proc/sys/net/ipv4/conf/$T/rp_filter
+
+ #iptables -t filter -A DMESH_FILTER_IN -i dmesh1 -j LOG --log-prefix "dmesh1-f-in "
+ #iptables -t filter -A DMESH_FILTER_IN -i $T -j ACCEPT
+ #ip6tables -t filter -A DMESH_FILTER_IN -i $T -j ACCEPT
+
+ # Mark packets
+ #iptables -t mangle -A DMESH_MANGLE_PRE -i $T -j MARK --set-mark 1337
+ #ip6tables -t mangle -A DMESH_MANGLE_PRE -i $T -j MARK --set-mark 1337
+
+ # VIPs (services) and mesh IPs assigned to nodes are routed to the tun
+ # This is the easy part - there is no real destination, 'real' hosts require
+ # special processing if the router runs in same namespace, since it needs to
+ # send packets to the real route/interface.
+
+ #ip addr add 2001:470:1f04:429::3/128 dev dmesh1
+ #ip route add 2001:470:1f04:429:80::0/65 dev dmesh1
+ #ip route add fd:0${D}::/16 dev dmesh1
+ ip route add 10.1.${D}.0/24 dev $T
+
+ # Anything marked with 1001 will be routed to dmesh1 interface
+ # This is in addition to all VIPs and other ranges with normal routes.
+ #
+ ip rule add fwmark 100${D} lookup 100${D}
+ #ip route add ::/0 dev dmesh1 src 2001:470:1f04:429::3 table 1338
+ #ip route add ::/0 dev $T table 100${D}
+ #ip route add 0.0.0.0/0 dev $T table 100${D}
+ ip route add local 0.0.0.0/0 dev lo table 100${D}
+
+ # Can't use -o with PREROUTING and tproxu - just i
+ iptables -t mangle -A PREROUTING -i $T -p tcp \
+ -j TPROXY --tproxy-mark 100${D} --on-port 14006
+ iptables -t mangle -A PREROUTING -i $T -p udp \
+ -j TPROXY --tproxy-mark 100${D} --on-port 14006
+
+}
+
+function init_veth() {
+ local MARK=6
+
+ ip netns add mesh
+
+ ip link add dev veth-mesh type veth peer name veth-hostmesh
+ ip link set veth-mesh netns mesh
+
+ ip -n mesh addr add 10.253.2.1/24 dev veth-mesh
+ ip netns exec mesh route add default dev veth-mesh
+
+ ip addr add 10.253.1.1/24 dev veth-hostmesh
+
+ # VIPs (services and istio virtual pod IPs) - standard route is sufficient
+ ip route add 10.253.4.0/24 via 10.253.2.1 dev veth-hostmesh
+
+ ip netns exec mesh ip addr
+ ip -n mesh link set dev veth-mesh up
+ ip -n mesh link set dev lo up
+ ip link set dev veth-hostmesh up
+
+ ip -n mesh rule add fwmark $MARK lookup $MARK
+ ip -n mesh route add local 0.0.0.0/0 dev lo table $MARK
+
+ # Not clear if required
+# ip netns exec mesh iptables -t mangle -N DIVERT
+# ip netns exec mesh iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
+# ip netns exec mesh iptables -t mangle -A DIVERT -j MARK --set-mark $MARK
+# ip netns exec mesh iptables -t mangle -A DIVERT -j ACCEPT
+
+ ip netns exec mesh iptables -t mangle -A PREROUTING -i veth-mesh -p tcp \
+ -j TPROXY --tproxy-mark $MARK --on-port 14006
+ # Ugate must run in this namespace - or pass a socket there
+
+}
+
+function del_veth() {
+ ip link del dev vm1
+
+ # https://gist.github.com/NiceRath/900f115f216c942283584c41baeb209f
+ # Delete all
+ nft flush ruleset
+ nft list ruleset
+}
+
+function del_tun() {
+ local D=${1:-0}
+ local T=dmesh${D}
+
+ iptables -t mangle -D PREROUTING -i $T -p tcp \
+ -j TPROXY --tproxy-mark 100${D} --on-port 14006
+ iptables -t mangle -D PREROUTING -i $T -p udp \
+ -j TPROXY --tproxy-mark 100${D} --on-port 14006
+
+ ip rule delete from all fwmark 100${D} lookup 100${D}
+ ip route flush table 100${D}
+
+ ip link set $T down
+ ip tuntap del dev $T mode tun || true
+}
# Once, at boot time. Can be cleaned with dmeshclean
#
@@ -32,85 +150,74 @@ function nat_setup() {
#
# Example:
# iptables -t mangle -A DMESH_MANGLE_OUT -j MARK -p tcp -m tcp --dport 5227 --set-mark 1338
-function dmeshinit() {
- U=${GWUSER:-costin} # istio-proxy
-
- # Run with 'sg'
-
- ip tuntap add dev dmesh1 mode tun user $U group 1337
- ip addr add 10.12.0.5 dev dmesh1
+function onBoot() {
+ #
+ sysctl -w net.ipv4.ip_forward=1
- # No IP6 address - confuses linux
- ip link set dmesh1 up
- # Accept anything from dmesh1
+ # Create the jump tables - for easy cleanup and org
iptables -t filter -N DMESH_FILTER_IN
ip6tables -t filter -N DMESH_FILTER_IN
- iptables -t filter -A INPUT -j DMESH_FILTER_IN
- ip6tables -t filter -A INPUT -j DMESH_FILTER_IN
- #iptables -t filter -A DMESH_FILTER_IN -i dmesh1 -j LOG --log-prefix "dmesh1-f-in "
- iptables -t filter -A DMESH_FILTER_IN -i dmesh1 -j ACCEPT
- ip6tables -t filter -A DMESH_FILTER_IN -i dmesh1 -j ACCEPT
-
- # Mark packets from dmesh1
iptables -t mangle -N DMESH_MANGLE_PRE
ip6tables -t mangle -N DMESH_MANGLE_PRE
- iptables -t mangle -A PREROUTING -j DMESH_MANGLE_PRE
- ip6tables -t mangle -A PREROUTING -j DMESH_MANGLE_PRE
- iptables -t mangle -A DMESH_MANGLE_PRE -i dmesh1 -j MARK --set-mark 1337
- ip6tables -t mangle -A DMESH_MANGLE_PRE -i dmesh1 -j MARK --set-mark 1337
-
iptables -t mangle -N DMESH
ip6tables -t mangle -N DMESH
-
# Output from apps: what is included and what is not.
iptables -t mangle -N DMESH_MANGLE_OUT
ip6tables -t mangle -N DMESH_MANGLE_OUT
-
# Common/fixed configuration for mangle/OUTPUT
# This applies to packets sent from local applications
iptables -t mangle -N DMESH_MANGLE_OUT_START
ip6tables -t mangle -N DMESH_MANGLE_OUT_START
+
+ # Hook the tables at the appropriate points
+ iptables -t mangle -A PREROUTING -j DMESH_MANGLE_PRE
+ ip6tables -t mangle -A PREROUTING -j DMESH_MANGLE_PRE
+ iptables -t filter -A INPUT -j DMESH_FILTER_IN
+ ip6tables -t filter -A INPUT -j DMESH_FILTER_IN
iptables -t mangle -A OUTPUT -j DMESH_MANGLE_OUT_START
ip6tables -t mangle -A OUTPUT -j DMESH_MANGLE_OUT_START
+ # All
+ # Istio also has ISTIO_OUTPUT on nat
+
+ #init_tun 1
+ init_tun 0
+
+
# Istio-proxy
iptables -t mangle -A DMESH_MANGLE_OUT_START -m owner --gid-owner $U -j RETURN
ip6tables -t mangle -A DMESH_MANGLE_OUT_START -m owner --gid-owner $U -j RETURN
+
# Localhost
iptables -t mangle -A DMESH_MANGLE_OUT_START -d 127.0.0.1/32 -j RETURN
ip6tables -t mangle -A DMESH_MANGLE_OUT_START -d ::1/128 -j RETURN
+
iptables -t mangle -A DMESH_MANGLE_OUT_START -j DMESH_MANGLE_OUT
ip6tables -t mangle -A DMESH_MANGLE_OUT_START -j DMESH_MANGLE_OUT
- iptables -t mangle -A OUTPUT -j DMESH_MANGLE_OUT
- ip6tables -t mangle -A OUTPUT -j DMESH_MANGLE_OUT
-
- #
- echo 2 > /proc/sys/net/ipv4/conf/dmesh1/rp_filter
- sysctl -w net.ipv4.ip_forward=1
- #ip addr add 2001:470:1f04:429::3/128 dev dmesh1
- #ip route add 2001:470:1f04:429:80::0/65 dev dmesh1
- ip route add fd::/8 dev dmesh1
- ip route add 10.10.0.0/16 dev dmesh1
- ip route add 10.12.0.0/16 dev dmesh1
- # Anything marked with 1338 will be routed to dmesh1 interface
- ip rule add fwmark 1338 lookup 1338
- #ip route add ::/0 dev dmesh1 src 2001:470:1f04:429::3 table 1338
- ip route add ::/0 dev dmesh1 table 1338
- ip route add 0.0.0.0/0 dev dmesh1 src 10.12.0.5 table 1338
- # 1337 means deliver to local host
+ # 1337 means deliver to local host - this is used with TPROXY
+ # Requires root and transparent.
ip rule add fwmark 1337 lookup 1337
ip rule add iif dmesh1 lookup 1337
+
ip route add local 0.0.0.0/0 dev lo table 1337
#ip route add local ::/0 dev lo table 1337
- # All
- iptables -t mangle -A PREROUTING -i dmesh1 -j TPROXY --tproxy-mark 1337/0xffffffff --on-port 15006
- iptables -t mangle -A PREROUTING -o dmesh1 -j TPROXY --tproxy-mark 1337/0xffffffff --on-port 15006
+ # Istio uses:
+ # iptables -t mangle -A ISTIO_TPROXY ! -d 127.0.0.1/32 -p tcp -j TPROXY --tproxy-mark 1337/0xffffffff --on-port 15006
+
+ # Optimization for established:
+ # iptables -t mangle -A ISTIO_INBOUND -p tcp -m socket -j ISTIO_DIVERT || echo "No socket match support"
+}
+
+function debug() {
+ ip rule list
+ ip -s -d -a route list table all | grep -v "table local" |grep -v "table main"
+
}
function dmeshclean() {
@@ -120,6 +227,8 @@ function dmeshclean() {
ip rule delete from all fwmark 1337 lookup 1337
ip route flush table 1337
+ # Must first -F (flush), then delete the rule using (-D) then delete the chain (-X)
+
iptables -t mangle -F DMESH_MANGLE_OUT
iptables -t mangle -F DMESH_MANGLE_OUT_START
iptables -t mangle -F DMESH
@@ -145,41 +254,12 @@ function dmeshclean() {
ip6tables -t mangle -X DMESH_MANGLE_PRE
ip6tables -t mangle -X DMESH_MANGLE_OUT
ip6tables -t mangle -X DMESH
-
- ip link set dmesh1 down
-
- ip tuntap del dev dmesh1 mode tun || true
-}
-
-# Gateway mode, running as istio-proxy
-function dmeshbg() {
- cd $PROXY_HOME
-
- ./dmesh > ./proxy.log 2>&1 &
- echo $! > ./proxy.pid
-}
-
-# Gateway mode, running as istio-proxy
-function dmeshbggw() {
- cd $PROXY_HOME
- export DMESH_IF=none
- ./dmesh
}
-function dmeshgw() {
- cp /ws/dmesh/bin/dmesh ${PROXY_HOME}/dmesh
- chown istio-proxy ${PROXY_HOME}/dmesh
- su -s /bin/bash -c "/usr/local/bin/dmeshroot.sh runbggw" istio-proxy
-}
-function dmeshon() {
- cp /ws/dmesh/bin/dmesh ${PROXY_HOME}/dmesh
- chown istio-proxy ${PROXY_HOME}/dmesh
- su -s /bin/sh -c "/usr/local/bin/dmeshroot.sh runbg" istio-proxy
- capture
-}
-# This is the main function to capture outbound traffic, by marking it to 1338 which is routed to dmesh tun device.
+# This is the main function to capture outbound traffic, by marking it to 1338 which is routed
+# to dmesh tun device.
function capture() {
ip6tables -t mangle -F DMESH_MANGLE_OUT
iptables -t mangle -F DMESH_MANGLE_OUT
@@ -205,6 +285,111 @@ function capture() {
# Capture everything else
iptables -t mangle -A DMESH_MANGLE_OUT -j MARK --set-mark 1338
ip6tables -t mangle -A DMESH_MANGLE_OUT -j MARK --set-mark 1338
+ iptables -t mangle -A DMESH_MANGLE_OUT -j ACCEPT
+ ip6tables -t mangle -A DMESH_MANGLE_OUT -j ACCEPT
+}
+
+function ipt() {
+ local A=$*
+
+ iptables $A
+ ip6tables $A
+}
+
+function istio_iptable_output() {
+ local OR=${OUTBOUND_IP_RANGES_INCLUDE:-10.15.0.0/16,10.16.0.0/16}
+ IFS=,
+
+ IPTCMD=${IPTCMD:-iptables -t nat }
+
+ ${IPTCMD} -F ISTIO_OUTPUT
+
+ iptables -t mangle -A DMESH_MANGLE_PRE --match mark --mark 12 -j RETURN
+ iptables -t mangle -A DMESH_MANGLE_POST --match mark --mark 12 -j RETURN
+ ${IPTCMD} -A ISTIO_OUTPUT --match mark --mark 12 -j RETURN
+
+ # Apply port based exclusions. Must be applied before connections back to self
+ # are redirected.
+ if [ -n "${OUTBOUND_PORTS_EXCLUDE}" ]; then
+ for port in ${OUTBOUND_PORTS_EXCLUDE}; do
+ ${IPTCMD} -A ISTIO_OUTPUT --dport "${port}" -j RETURN
+ done
+ fi
+
+ # 127.0.0.6 is bind connect from inbound passthrough cluster
+ ${IPTCMD} -A ISTIO_OUTPUT -o lo -s 127.0.0.6/32 -j RETURN
+
+ # Redirect app calls back to itself via Envoy when using the service VIP or endpoint
+ # address, e.g. appN => Envoy (client) => Envoy (server) => appN.
+ ${IPTCMD} -A ISTIO_OUTPUT -o lo ! -d 127.0.0.1/32 -j ISTIO_TPROXY
+
+ ${IPTCMD} -A ISTIO_OUTPUT -m owner --uid-owner 0 -j RETURN
+ for gid in ${PROXY_GID}; do
+ # Avoid infinite loops. Don't redirect Envoy traffic directly back to
+ # Envoy for non-loopback traffic.
+ ${IPTCMD} -A ISTIO_OUTPUT -m owner --gid-owner "${gid}" -j RETURN
+ done
+
+ # Skip redirection for Envoy-aware applications and
+ # container-to-container traffic both of which explicitly use
+ # localhost.
+ ${IPTCMD} -A ISTIO_OUTPUT -d 127.0.0.1/32 -j RETURN
+
+ if "${OR}" == "*" ; then
+ # Must be mangle table
+ iptables -t mangle -A DMESH_MANGLE_OUT -p udp -j MARK --set-mark 1337
+ iptables -t mangle -A DMESH_MANGLE_PRE -p udp -j ISTIO_TPROXY
+ else
+ for cidr in ${OR}; do
+ iptables -t mangle -A DMESH_MANGLE_OUT -p udp -d ${cidr} -j MARK --set-mark 1337
+ iptables -t mangle -A DMESH_MANGLE_PRE -p udp -d ${cidr} -j ISTIO_TPROXY
+ done
+ fi
+
+ iptables -t mangle -A DMESH_MANGLE_PRE -j RETURN
+
+ #${IPTCMD} -A ISTIO_OUTPUT -j MARK --set-mark 1337
+
+}
+
+
+function captureOptIn() {
+ local PORTS=$1
+ ip6tables -t mangle -F DMESH_MANGLE_OUT
+ iptables -t mangle -F DMESH_MANGLE_OUT
+
+ iptables -t mangle -F ISTIO_INBOUND
+
+ if [ "${INBOUND_PORTS_INCLUDE}" == "*" ]; then
+
+ # Makes sure SSH is not redirected
+ iptables -t mangle -A ISTIO_INBOUND -p tcp --dport 22 -j RETURN
+
+ # Apply any user-specified port exclusions.
+ if [ -n "${INBOUND_PORTS_EXCLUDE}" ]; then
+ for port in ${INBOUND_PORTS_EXCLUDE}; do
+ iptables -t mangle -A ISTIO_INBOUND --dport "${port}" -j RETURN
+ done
+ fi
+
+ # If an inbound packet belongs to an established socket, route it to the
+ # loopback interface.
+ iptables -t mangle -A ISTIO_INBOUND -m socket -j ISTIO_DIVERT || echo "No socket match support"
+
+ # Otherwise, it's a new connection. Redirect it using TPROXY.
+ iptables -t mangle -A ISTIO_INBOUND -j ISTIO_TPROXY
+
+ else
+
+ for port in ${INBOUND_PORTS_INCLUDE}; do
+ iptables -t mangle -A ISTIO_INBOUND --dport "${port}" -m socket -j ISTIO_DIVERT || echo "No socket match support"
+ iptables -t mangle -A ISTIO_INBOUND --dport "${port}" -j ISTIO_TPROXY
+ done
+ fi
+
+ iptables -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 80 \
+ --set-mark 1338
+
}
function capture_in() {
@@ -221,51 +406,50 @@ function capture_in() {
iptables -t mangle -A DMESH_MANGLE_PRE -j MARK --set-mark 1338
}
-function dmeshoff() {
- ip6tables -t mangle -F DMESH_MANGLE_OUT
- iptables -t mangle -F DMESH_MANGLE_OUT
- kill -9 $(cat /ws/istio-proxy/proxy.pid)
+
+# "init" )
+# dmeshinit ;;
+# "start" )
+# dmeshon ;;
+# "capture" )
+# capture ;;
+# "run" )
+# dmeshon ;;
+# "gw" )
+# dmeshgw ;;
+# "runbg" )
+# dmeshbg ;;
+# "runbggw" )
+# dmeshbggw ;;
+# "dnson" )
+# captureDNSRedir ;;
+#
+# "dnsoff" )
+# captureDNSStop ;;
+#
+# "stop" )
+# dmeshoff ;;
+# "clean" )
+# dmeshoff
+#
+# dmeshclean ;;
+
+function help() {
+ echo "'init' must be called once, followed by start/stop "
+ echo
+ echo "start: start proxy, running as istio-proxy/1337"
+ echo "stop: stop proxy and interception"
+ echo
+ echo "gw: run as istio-proxy, gatway mode"
+ echo
+ echo "dnson/dnsoff: enable dns capture"
+ echo
+ echo "init: prepare"
+ echo "clean: remove routes, devices and iptables"
}
-case "$1" in
- "init" )
- dmeshinit ;;
- "start" )
- dmeshon ;;
- "capture" )
- capture ;;
- "run" )
- dmeshon ;;
- "gw" )
- dmeshgw ;;
- "runbg" )
- dmeshbg ;;
- "runbggw" )
- dmeshbggw ;;
- "dnson" )
- captureDNSRedir ;;
-
- "dnsoff" )
- captureDNSStop ;;
-
- "stop" )
- dmeshoff ;;
- "clean" )
- dmeshoff
-
- dmeshclean ;;
-
- * )
- echo "'init' must be called once, followed by start/stop "
- echo
- echo "start: start proxy, running as istio-proxy/1337"
- echo "stop: stop proxy and interception"
- echo
- echo "gw: run as istio-proxy, gatway mode"
- echo
- echo "dnson/dnsoff: enable dns capture"
- echo
- echo "init: prepare"
- echo "clean: remove routes, devices and iptables"
- ;;
-esac
+
+
+CMD=$1
+shift
+$CMD $*
diff --git a/cmd/capture_tproxy.sh b/cmd/capture_tproxy.sh
deleted file mode 100644
index 97b00ab..0000000
--- a/cmd/capture_tproxy.sh
+++ /dev/null
@@ -1,255 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# Once: ipt_init ( can be reverted with ipt_reset)
-# - will set common hooks and rules
-#
-# tunup/tundown - setup dmesh1 and prepare for capture
-
-# Create common tables for dmesh.
-# DMESH + MANGLE|NAT + PRE|POST|OUT
-# ISTIO_REDIRECT
-# ISTIO_DIVERT - set mark
-# ISTIO_TPROXY - set port, mark
-
-PROXY_GID="1337"
-#addgroup --gid 1337 istio-proxy
-
-
-function ipt_init() {
- # When using TPROXY, create a new chain for routing all inbound traffic to
- # Envoy. Any packet entering this chain gets marked with the ${INBOUND_TPROXY_MARK} mark,
- # so that they get routed to the loopback interface in order to get redirected to Envoy.
- # In the ISTIO_INBOUND chain, '-j ISTIO_DIVERT' reroutes to the loopback
- # interface.
- # Mark all inbound packets.
- iptables -t mangle -N ISTIO_DIVERT
-
- # TODO: only TCP ?
- iptables -t mangle -A ISTIO_DIVERT -j MARK --set-mark 1337
- iptables -t mangle -A ISTIO_DIVERT -j ACCEPT
-
- # Create a new chain for redirecting inbound traffic to the common Envoy
- # port.
- # In the ISTIO_INBOUND chain, '-j RETURN' bypasses Envoy and
- # '-j ISTIO_TPROXY' redirects to Envoy.
- iptables -t mangle -N ISTIO_TPROXY
- iptables -t mangle -A ISTIO_TPROXY ! -d 127.0.0.1/32 -p tcp -j TPROXY --tproxy-mark 1337/0xffffffff --on-port 15006
-
- # Route all packets marked in chain ISTIO_DIVERT using routing table ${INBOUND_TPROXY_ROUTE_TABLE}.
- ip -f inet rule add fwmark 1337 lookup 133
- # In routing table ${INBOUND_TPROXY_ROUTE_TABLE}, create a single default rule to route all traffic to
- # the loopback interface.
- ip -f inet route add local default dev lo table 133
-
- iptables -t mangle -N ISTIO_INBOUND
- # Bypass tproxy for established sockets
- iptables -t mangle -A ISTIO_INBOUND -p tcp -m socket -j ISTIO_DIVERT || echo "No socket match support"
- iptables -t mangle -A PREROUTING -p tcp -j ISTIO_INBOUND
-
- iptables -t nat -N ISTIO_OUTPUT
- iptables -t nat -A OUTPUT -p tcp -j ISTIO_OUTPUT
-
- iptables -t filter -N DMESH_FILTER_IN
- iptables -t filter -A INPUT -j DMESH_FILTER_IN
-
- iptables -t filter -N DMESH_FILTER_OUT
- iptables -t filter -A OUTPUT -j DMESH_FILTER_OUT
-
- iptables -t filter -N DMESH_FILTER_FWD
- iptables -t filter -A FORWARD -j DMESH_FILTER_FWD
-
- iptables -t nat -N DMESH_TCP_PRE
- iptables -t nat -A PREROUTING -p tcp -j DMESH_TCP_PRE
-
- iptables -t mangle -N DMESH_MANGLE_PRE
- iptables -t mangle -A PREROUTING -j DMESH_MANGLE_PRE
-
- iptables -t mangle -N DMESH_MANGLE_POST
- iptables -t mangle -A POSTROUTING -j DMESH_MANGLE_POST
-
- iptables -t mangle -N DMESH_MANGLE_OUT
- iptables -t mangle -A OUTPUT -j DMESH_MANGLE_OUT
-
- # Per user/gid mark must be set on OUTPUT (or POSTROUTE). We set a mark.
- #GID=$(id -g costin)
- iptables -t mangle -A DMESH_MANGLE_OUT -m owner --gid-owner ${PROXY_GID} -j MARK --set-mark 12
- iptables -t mangle -A DMESH_MANGLE_OUT -m owner --gid-owner ${PROXY_GID} -j RETURN
-
- #iptables -t mangle -A ISTIO_DIVERT -j LOG -p udp --log-prefix "dmesh-divert-udp"
- #iptables -t mangle -A ISTIO_DIVERT -j LOG -p tcp --log-prefix "dmesh-divert-tcp"
-
- #iptables -t mangle -A ISTIO_TPROXY -j LOG --log-prefix "dmesh-tproxy"
-
-
- # In routing table ${INBOUND_TPROXY_ROUTE_TABLE}, create a single default rule to route all traffic to
- # the loopback interface.
-
- #ip rule list
- #ip -s -d -a route list table all | grep -v "table local" |grep -v "table main"
-
-}
-
-# Opposite of init - delete the interception
-function ipt_clean() {
- # Flush and delete the istio chains.
- iptables -t nat -F ISTIO_OUTPUT 2>/dev/null
- iptables -t mangle -F ISTIO_INBOUND 2>/dev/null
-
- iptables -t mangle -F DMESH_MANGLE_POST
- iptables -t mangle -F DMESH_MANGLE_PRE
-
- iptables -t filter -F DMESH_FILTER_IN
- iptables -t filter -F DMESH_FILTER_OUT
- iptables -t filter -F DMESH_FILTER_FWD
-}
-
-# Clean and delete all tables created by DMESH
-function ipt_reset() {
- ipt_clean
-
- iptables -t mangle -F ISTIO_DIVERT 2>/dev/null
- iptables -t mangle -F ISTIO_TPROXY 2>/dev/null
- iptables -t mangle -F DMESH_MANGLE_OUT
- iptables -t nat -F DMESH_TCP_PRE
-
- ip rule delete from all fwmark 1337 lookup 133
- ip -f inet route del local default dev lo table 133
-
- # Make sure we're in clean state
- iptables -t mangle -D POSTROUTING -j DMESH_MANGLE_POST
- iptables -t mangle -D PREROUTING -j DMESH_MANGLE_PRE
- iptables -t mangle -D OUTPUT -j DMESH_MANGLE_OUT
- iptables -t mangle -D PREROUTING -p tcp -j ISTIO_INBOUND
- iptables -t nat -D OUTPUT -p tcp -j ISTIO_OUTPUT
-
- iptables -t filter -D FORWARD -j DMESH_FILTER_FWD
- iptables -t filter -D INPUT -j DMESH_FILTER_IN
- iptables -t filter -D OUTPUT -j DMESH_FILTER_OUT
- iptables -t nat -D PREROUTING -p tcp -j DMESH_TCP_PRE
-
- iptables -t nat -X DMESH_TCP_PRE
-
- iptables -t mangle -X ISTIO_TPROXY
- iptables -t mangle -X ISTIO_DIVERT
- iptables -t mangle -X ISTIO_INBOUND
- iptables -t nat -X ISTIO_OUTPUT
-
- iptables -t mangle -X DMESH_MANGLE_POST
- iptables -t mangle -X DMESH_MANGLE_PRE
- iptables -t mangle -X DMESH_MANGLE_OUT
- iptables -t filter -X DMESH_FILTER_IN
- iptables -t filter -X DMESH_FILTER_OUT
- iptables -t filter -X DMESH_FILTER_FWD
-}
-
-# Simplified istio iptables script.
-# Constants:
-# - ISTIO_TPROXY_MARK=1337
-# - route table 133
-# - proxy port 15001 for outbound, 15004 for inbound
-#
-
-# Based on INBOUND_PORT_INCLUDE/EXCLUDE, set capture for in ports.
-# This is redirected from PREROUTING table
-function istio_iptable_input() {
- iptables -t mangle -F ISTIO_INBOUND
-
- if [ "${INBOUND_PORTS_INCLUDE}" == "*" ]; then
-
- # Makes sure SSH is not redirected
- iptables -t mangle -A ISTIO_INBOUND -p tcp --dport 22 -j RETURN
-
- # Apply any user-specified port exclusions.
- if [ -n "${INBOUND_PORTS_EXCLUDE}" ]; then
- for port in ${INBOUND_PORTS_EXCLUDE}; do
- iptables -t mangle -A ISTIO_INBOUND --dport "${port}" -j RETURN
- done
- fi
-
- # If an inbound packet belongs to an established socket, route it to the
- # loopback interface.
- iptables -t mangle -A ISTIO_INBOUND -m socket -j ISTIO_DIVERT || echo "No socket match support"
-
- # Otherwise, it's a new connection. Redirect it using TPROXY.
- iptables -t mangle -A ISTIO_INBOUND -j ISTIO_TPROXY
-
- else
-
- for port in ${INBOUND_PORTS_INCLUDE}; do
- iptables -t mangle -A ISTIO_INBOUND --dport "${port}" -m socket -j ISTIO_DIVERT || echo "No socket match support"
- iptables -t mangle -A ISTIO_INBOUND --dport "${port}" -j ISTIO_TPROXY
- done
- fi
-}
-
-function istio_iptable_output() {
- local OR=${OUTBOUND_IP_RANGES_INCLUDE:-10.15.0.0/16,10.16.0.0/16}
- IFS=,
-
- IPTCMD=${IPTCMD:-iptables -t nat }
-
- ${IPTCMD} -F ISTIO_OUTPUT
-
- iptables -t mangle -A DMESH_MANGLE_PRE --match mark --mark 12 -j RETURN
- iptables -t mangle -A DMESH_MANGLE_POST --match mark --mark 12 -j RETURN
- ${IPTCMD} -A ISTIO_OUTPUT --match mark --mark 12 -j RETURN
-
- # Apply port based exclusions. Must be applied before connections back to self
- # are redirected.
- if [ -n "${OUTBOUND_PORTS_EXCLUDE}" ]; then
- for port in ${OUTBOUND_PORTS_EXCLUDE}; do
- ${IPTCMD} -A ISTIO_OUTPUT --dport "${port}" -j RETURN
- done
- fi
-
- # 127.0.0.6 is bind connect from inbound passthrough cluster
- ${IPTCMD} -A ISTIO_OUTPUT -o lo -s 127.0.0.6/32 -j RETURN
-
- # Redirect app calls back to itself via Envoy when using the service VIP or endpoint
- # address, e.g. appN => Envoy (client) => Envoy (server) => appN.
- ${IPTCMD} -A ISTIO_OUTPUT -o lo ! -d 127.0.0.1/32 -j ISTIO_TPROXY
-
- ${IPTCMD} -A ISTIO_OUTPUT -m owner --uid-owner 0 -j RETURN
- for gid in ${PROXY_GID}; do
- # Avoid infinite loops. Don't redirect Envoy traffic directly back to
- # Envoy for non-loopback traffic.
- ${IPTCMD} -A ISTIO_OUTPUT -m owner --gid-owner "${gid}" -j RETURN
- done
-
- # Skip redirection for Envoy-aware applications and
- # container-to-container traffic both of which explicitly use
- # localhost.
- ${IPTCMD} -A ISTIO_OUTPUT -d 127.0.0.1/32 -j RETURN
-
- if "${OR}" == "*" ; then
- # Must be mangle table
- iptables -t mangle -A DMESH_MANGLE_OUT -p udp -j MARK --set-mark 1337
- iptables -t mangle -A DMESH_MANGLE_PRE -p udp -j ISTIO_TPROXY
- else
- for cidr in ${OR}; do
- iptables -t mangle -A DMESH_MANGLE_OUT -p udp -d ${cidr} -j MARK --set-mark 1337
- iptables -t mangle -A DMESH_MANGLE_PRE -p udp -d ${cidr} -j ISTIO_TPROXY
- done
- fi
-
- iptables -t mangle -A DMESH_MANGLE_PRE -j RETURN
-
- #${IPTCMD} -A ISTIO_OUTPUT -j MARK --set-mark 1337
-
-}
-
-
-# Outbound capture, using iptables TPROXY.
-function ipt_capture_udp() {
-
- #iptables -t mangle -A DMESH_MANGLE_PRE -d 127.0.0.1/32 -j RETURN
-
-
- # Outbound
- iptables -t mangle -A DMESH_MANGLE_PRE --match mark --mark 1337 -j ISTIO_TPROXY
-
-}
-
-
-
diff --git a/cmd/capture_tun.sh b/cmd/capture_tun.sh
index b62068f..32add28 100644
--- a/cmd/capture_tun.sh
+++ b/cmd/capture_tun.sh
@@ -12,7 +12,7 @@
function tunRoute() {
# Find default GW
- # 'default via 192.168.0.254 dev wlp2s0 proto dhcp metric 600 '
+ # 'default via 192.168.0.254 dev wlp2s0 proto dhcp metrics 600 '
GW=$(/sbin/ip route | awk '/default/ { print $3 }')
echo $GW > /tmp/DEFAULT_GW
diff --git a/cmd/egress_tproxy.sh b/cmd/egress_tproxy.sh
new file mode 100644
index 0000000..d86f7ef
--- /dev/null
+++ b/cmd/egress_tproxy.sh
@@ -0,0 +1,209 @@
+#!/usr/bin/env bash
+
+# Egress capture.
+#
+
+PROXY_GID="1337"
+
+# Port for capturing mesh services ( istio compat, load balancing ).
+EPORT=${EPORT:-15001}
+
+function egress_routes() {
+ ip -6 addr add ::6/128 dev lo
+
+ # The marked packets are routed to lo
+ ip -4 rule add fwmark ${EPORT} lookup ${EPORT}
+ ip -4 route add local default dev lo table ${EPORT}
+
+ ip -6 rule add fwmark ${EPORT} lookup ${EPORT}
+ ip -6 route add local default dev lo table ${EPORT}
+}
+
+function egress_routes_clean() {
+ ip -4 rule delete from all fwmark ${EPORT} lookup ${EPORT}
+ ip -4 -f inet route del local default dev lo table ${EPORT}
+
+ ip -6 rule delete from all fwmark ${EPORT} lookup ${EPORT}
+ ip -6 -f inet route del local default dev lo table ${EPORT}
+}
+
+function egress_tables() {
+ egress_routes $EPORT
+ _egress_tables "iptables" "127.0.0.1/32"
+ _egress_tables "ip6tables" "::1/128"
+}
+
+function _egress_tables() {
+ local iptables=$1
+ local LOCAL_RANGE=$2
+
+ # This table determines what gets marked - marks will result in a route to lo, and redirected
+ ${iptables} -t mangle -N DMESH_MANGLE_OUT
+ ${iptables} -t mangle -A OUTPUT -j DMESH_MANGLE_OUT
+
+
+ # This will redirect to tproxy anything on lo that is marked by the other rules
+ ${iptables} -t mangle -N DMESH_TPROXY
+ ${iptables} -t mangle -A PREROUTING -j DMESH_TPROXY
+
+ ${iptables} -t mangle -N DMESH_CAPTURE_EGRESS
+ ${iptables} -t mangle -A DMESH_CAPTURE_EGRESS -j MARK --set-mark ${EPORT}
+ ${iptables} -t mangle -A DMESH_CAPTURE_EGRESS -j ACCEPT
+
+ ${iptables} -t mangle -N DMESH_CAPTURE_MESH
+ ${iptables} -t mangle -A DMESH_CAPTURE_MESH -j MARK --set-mark ${MPORT}
+ ${iptables} -t mangle -A DMESH_CAPTURE_MESH -j ACCEPT
+
+ ${iptables} -t mangle -N DMESH_CAPTURE_POD
+ ${iptables} -t mangle -A DMESH_CAPTURE_POD -j MARK --set-mark ${PPORT}
+ ${iptables} -t mangle -A DMESH_CAPTURE_POD -j ACCEPT
+
+ # Added to prerouting, will redirect to tproxy:
+ # - all TCP and UDP with the mark
+ # - received on loopback
+ # - but not having dest on the loopback
+ #
+ # All outbound traffic to be captured will be routed using a special table that
+ # has default route set to loopback interface.
+ ${iptables} -t mangle -A DMESH_TPROXY -i lo -d ${LOCAL_RANGE} -j RETURN
+
+ ${iptables} -t mangle -A DMESH_TPROXY --match mark --mark ${EPORT} -p tcp -i lo ! -d ${LOCAL_RANGE} -j TPROXY --tproxy-mark ${EPORT}/0xffffffff --on-port ${EPORT}
+ ${iptables} -t mangle -A DMESH_TPROXY --match mark --mark ${EPORT} -p udp -i lo ! -d ${LOCAL_RANGE} -j TPROXY --tproxy-mark ${EPORT}/0xffffffff --on-port ${EPORT}
+ ${iptables} -t mangle -A DMESH_TPROXY --match mark --mark ${MPORT} -p tcp -i lo ! -d ${LOCAL_RANGE} -j TPROXY --tproxy-mark ${MPORT}/0xffffffff --on-port ${MPORT}
+ ${iptables} -t mangle -A DMESH_TPROXY --match mark --mark ${MPORT} -p udp -i lo ! -d ${LOCAL_RANGE} -j TPROXY --tproxy-mark ${MPORT}/0xffffffff --on-port ${MPORT}
+ ${iptables} -t mangle -A DMESH_TPROXY --match mark --mark ${PPORT} -p tcp -i lo ! -d ${LOCAL_RANGE} -j TPROXY --tproxy-mark ${PPORT}/0xffffffff --on-port ${PPORT}
+ ${iptables} -t mangle -A DMESH_TPROXY --match mark --mark ${PPORT} -p udp -i lo ! -d ${LOCAL_RANGE} -j TPROXY --tproxy-mark ${PPORT}/0xffffffff --on-port ${PPORT}
+
+}
+
+# Empty the configurable chains
+function egress_clean() {
+ iptables -t mangle -F DMESH_MANGLE_OUT
+ ip6tables -t mangle -F DMESH_MANGLE_OUT
+}
+
+function egress_reset() {
+ egress_clean
+ _egress_reset iptables
+ _egress_reset ip6tables
+}
+
+function _egress_reset() {
+ local iptables=$1
+
+ # Flush the tables
+ ${iptables} -t mangle -F DMESH_CAPTURE_POD
+ ${iptables} -t mangle -F DMESH_CAPTURE_EGRESS
+ ${iptables} -t mangle -F DMESH_CAPTURE_MESH
+ ${iptables} -t mangle -F DMESH_TPROXY
+
+ # Remove the tables from the top chains
+ ${iptables} -t mangle -D PREROUTING -j DMESH_TPROXY
+ ${iptables} -t mangle -D OUTPUT -j DMESH_MANGLE_OUT
+
+ # Remove the tables - now empty and not used
+ ${iptables} -t mangle -X DMESH_CAPTURE_POD
+ ${iptables} -t mangle -X DMESH_CAPTURE_EGRESS
+ ${iptables} -t mangle -X DMESH_CAPTURE_MESH
+ ${iptables} -t mangle -X DMESH_TPROXY
+ ${iptables} -t mangle -X DMESH_MANGLE_OUT
+}
+
+# Decides which packets will be captured.
+function egress_capture() {
+ iptables -t mangle -A DMESH_MANGLE_OUT -o lo -s 127.0.0.6/32 -j RETURN
+ ip6tables -t mangle -A DMESH_MANGLE_OUT -o lo -s ::6/128 -j RETURN
+
+ # Loopback not impacted
+ iptables -t mangle -A DMESH_MANGLE_OUT -o lo -d 127.0.0.0/8 -j RETURN
+
+ # Instead: pod and VIP range explicitly captured
+ # Redirect app calls back to itself via Envoy when using the service VIP or endpoint
+ # address, e.g. appN => Envoy (client) => Envoy (server) => appN.
+ #iptables -t mangle -A DMESH_MANGLE_OUT -o lo ! -d 127.0.0.1/32 -j ISTIO_IN_REDIRECT
+ if [ ${#ipv4_ranges_exclude[@]} -gt 0 ]; then
+ for cidr in "${ipv4_ranges_exclude[@]}"; do
+ iptables -t nat -A ISTIO_OUTPUT -d "${cidr}" -j RETURN
+ done
+ fi
+
+ _egress_capture iptables
+ _egress_capture ip6tables
+
+ # For Service CIDR ranges - redirect to LB service port
+ # For Pod CIDR ranges - redirect to pod port
+
+ # Everything else is public IP - redirect to egress port.
+
+}
+
+function _egress_capture() {
+ local iptables=$1
+
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -m owner --gid-owner ${PROXY_GID} -j RETURN
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -m owner --uid-owner 0 -j RETURN
+
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 22 -j RETURN
+
+ if [ -n "${OUTBOUND_PORTS_EXCLUDE}" ]; then
+ for port in ${OUTBOUND_PORTS_EXCLUDE}; do
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p tcp --dport "${port}" -j RETURN
+ done
+ fi
+
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 15007 -j RETURN
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 15008 -j RETURN
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 15009 -j RETURN
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 15010 -j RETURN
+
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 9999 -j DMESH_CAPTURE_EGRESS
+ ${iptables} -t mangle -A DMESH_MANGLE_OUT -p udp --dport 9999 -j DMESH_CAPTURE_EGRESS
+
+
+ #iptables -t mangle -A DMESH_MANGLE_PRE -m socket --transparent -j MARK --set-mark ${EPORT}
+}
+
+function egress_capture6() {
+ ip6tables -t mangle -A DMESH_MANGLE_OUT -p tcp --dport 9999 -j MARK --set-mark ${EPORT}
+ ip6tables -t mangle -A DMESH_MANGLE_OUT -p udp --dport 9999 -j MARK --set-mark ${EPORT}
+}
+
+export TUNUSER=${TUNUSER:-istio-proxy}
+export N=${N:-0}
+
+# Capture using a TUN - gVisor or lwip.
+function egress_tun() {
+ ip tuntap add dev dmesh${N} mode tun user ${TUNUSER} group ${TUNUSER}
+ ip addr add 10.11.${N}.1/24 dev dmesh${N}
+ # IP6 address may confuse linux
+ ip -6 addr add fd::1:${N}/64 dev dmesh${N}
+ ip link set dmesh${N} up
+
+ # Route various ranges to dmesh1 - the gate can't initiate its own
+ # connections to those ranges. Service VIPs can also use this simpler model.
+ # ip route add fd::/8 dev ${N}
+ ip route add 10.10.${N}.0/24 dev dmesh${N}
+
+
+ # Don't remember why this was required
+ echo 2 > /proc/sys/net/ipv4/conf/dmesh${N}/rp_filter
+ sysctl -w net.ipv4.ip_forward=1
+}
+
+function egress_tun_cleanup() {
+ # App must be stopped
+ ip tuntap del dev dmesh${N} mode tun
+
+ # ip rule delete fwmark 1{N}1 priority 10 lookup 1{N}1
+ # ip route del default dev dmesh${N} table 1{N}1
+
+ # ip rule del fwmark 1{N}0 lookup 1{N}0
+ # ip rule del iif dmesh${N} lookup 1{N}0
+ # ip route del local 0.0.0.0/0 dev lo table 1{N}0
+}
+
+
+
+if [[ "$1" != "" ]]; then
+ $1
+fi
diff --git a/cmd/go.mod b/cmd/go.mod
new file mode 100644
index 0000000..d45904e
--- /dev/null
+++ b/cmd/go.mod
@@ -0,0 +1,17 @@
+module github.com/costinm/ugate/cmd
+
+go 1.21
+
+replace github.com/costinm/ugate => ../
+
+replace github.com/costinm/ssg-mesh => ../../ssh-mesh
+
+require (
+ github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d // indirect
+ github.com/eycorsican/go-tun2socks v1.16.11 // indirect
+ github.com/songgao/water v0.0.0-20190725173103-fd331bda3f4b // indirect
+ golang.org/x/crypto v0.17.0 // indirect
+ golang.org/x/exp v0.0.0-20231219180239-dc181d75b848 // indirect
+ golang.org/x/net v0.10.0 // indirect
+ golang.org/x/sys v0.15.0 // indirect
+)
diff --git a/cmd/run.sh b/cmd/run.sh
new file mode 100644
index 0000000..f892917
--- /dev/null
+++ b/cmd/run.sh
@@ -0,0 +1,53 @@
+
+# Gateway mode, running as istio-proxy
+function dmeshbg() {
+ cd $PROXY_HOME
+
+ ./dmesh > ./proxy.log 2>&1 &
+ echo $! > ./proxy.pid
+}
+
+# Gateway mode, running as istio-proxy
+function dmeshbggw() {
+ cd $PROXY_HOME
+ export DMESH_IF=none
+ ./dmesh
+}
+
+function dmeshgw() {
+ cp /ws/dmesh/bin/dmesh ${PROXY_HOME}/dmesh
+ chown istio-proxy ${PROXY_HOME}/dmesh
+ su -s /bin/bash -c "/usr/local/bin/dmeshroot.sh runbggw" istio-proxy
+}
+
+function dmeshon() {
+ cp /ws/dmesh/bin/dmesh ${PROXY_HOME}/dmesh
+ chown istio-proxy ${PROXY_HOME}/dmesh
+ su -s /bin/sh -c "/usr/local/bin/dmeshroot.sh runbg" istio-proxy
+ capture
+}
+
+function dmeshoff() {
+ ip6tables -t mangle -F DMESH_MANGLE_OUT
+ iptables -t mangle -F DMESH_MANGLE_OUT
+ kill -9 $(cat /ws/istio-proxy/proxy.pid)
+}
+
+# Setup the dirs and user/group.
+function setup_dirs() {
+ groupadd -g 1337 istio
+
+ mkdir /opt/dmesh
+ mkdir /opt/dmesh/bin
+ mkdir /var/dmesh
+
+ chgrp istio /opt/dmesh
+ chgrp istio /opt/dmesh/bin
+ chgrp istio /var/dmesh
+
+ chmod 775 /var/dmesh
+}
+
+CMD=$1
+shift
+$CMD $*
diff --git a/cmd/test.sh b/cmd/test.sh
index eace4f0..683afa8 100755
--- a/cmd/test.sh
+++ b/cmd/test.sh
@@ -20,14 +20,15 @@ _do_start() {
}
prepare_root() {
- sudo TUNDEV=0 ./setup.sh setup
- sudo TUNDEV=1 ./setup.sh setup
+ sudo ./capture.sh init_tun 0
+ sudo ./capture.sh init_tun 1
}
# setup test rig
# Alice: 6400, gvisor=(10.11.0.x, 10.10.0.x),
test_setup() {
_do_start iperf3 ${TOP} iperf3 -s
+
_do_start gate ${TOP}/cmd/ugate/testdata/gate ${TOP}/build/ugate
_do_start alice ${TOP}/cmd/ugate/testdata/alice ${TOP}/build/ugate
_do_start bob ${TOP}/cmd/ugate/testdata/bob ${TOP}/build/ugate
@@ -69,7 +70,3 @@ test_run() {
#
}
-test_cleanup() {
- TUNDEV=0 sudo setup.sh clean
- TUNDEV=1 sudo setup.sh clean
-}
diff --git a/ugated/cmd/README.md b/cmd/ugated/README.md
similarity index 100%
rename from ugated/cmd/README.md
rename to cmd/ugated/README.md
diff --git a/ugated/cmd/run.sh b/cmd/ugated/run.sh
similarity index 100%
rename from ugated/cmd/run.sh
rename to cmd/ugated/run.sh
diff --git a/ugated/cmd/skaffold.yaml b/cmd/ugated/skaffold.yaml
similarity index 86%
rename from ugated/cmd/skaffold.yaml
rename to cmd/ugated/skaffold.yaml
index 419735a..4b370cc 100644
--- a/ugated/cmd/skaffold.yaml
+++ b/cmd/ugated/skaffold.yaml
@@ -9,7 +9,7 @@ build:
format: "2006-01-02_15-04"
artifacts:
- - image: grc.io/dmeshgate/ugate
+ - image: costinm/ugate
context: .
sync:
@@ -18,20 +18,15 @@ build:
dest: "www"
custom:
- buildCommand: ../../bin/ko-build.sh
+ buildCommand: make build
dependencies:
- # Explicit - can also guess from Dockerfile
paths:
- "../../pkg/**"
- - "../../ext/**"
- "."
- "go.mod"
- "go.sum"
deploy:
-# kubectl:
-# manifests:
-# - ../../k8s/ugate/templates/*
helm:
releases:
- name: ugate
diff --git a/cmd/ugated/ugate.yaml b/cmd/ugated/ugate.yaml
new file mode 100644
index 0000000..746bc38
--- /dev/null
+++ b/cmd/ugated/ugate.yaml
@@ -0,0 +1,153 @@
+# Example config file - ugated uses the current directory, and in IDEs the default is the same as the binary.
+# 'testdata' has more configs, including a test CA.
+#
+#
+
+
+## Port-based listeners.
+# - 'whitebox' egress - listen on 127.0.0.1, forwardTo
+# - forward: listen on :port, forwardTo dest
+# - 'input': listen on :port, forwardTo localhost or empty
+
+# Hosts represents pre-configured nodes.
+# Key is the DNS name or VIP.
+# If a host is not found here, discovery will be used ( DNS, control plane)
+hosts:
+ localiperf:
+ addr: localhost:15102
+
+ # Live test server
+ h.webinf.info:
+ addr: h.webinf.info:443
+# id: B5B6KYYUBVKCX4PWPWSWAIHW2X2D3Q4HZPJYWZ6UECL2PAODHTFA
+#
+# c1.webinf.info:
+# addr: c1.webinf.info:15007
+
+# Remote accept request (reverse forward, "-R")
+# Will also include relays, stun, etc.
+# TODO: could also be part of the hosts: definition, include a list
+# of ports. This way we don't dup the public key.
+remoteAccept:
+ h.webinf.info: "B5B6KYYUBVKCX4PWPWSWAIHW2X2D3Q4HZPJYWZ6UECL2PAODHTFA"
+
+ c1.webinf.info: ""
+
+# If using K8S for token auth. If a cert is missing this will also be used
+# with Citadel.
+#
+# If a cert is provisioned, will be extracted from the cert.
+# namespace: test
+# serviceaccount: default
+
+
+clusters:
+ # Special cluster name used for XDS config.
+ # If set XDS will be used. If not set, but if a default k8s cluster is found
+ # a request for istio-system/mesh-env config map is made to get the address
+ # and istiod certificate, as well as additional settings for GCP.
+ # This can include a cacert - but if certs are provisioned, the workload identity root
+ # will be used.
+# istiod.istio-system.svc:15012:
+# addr: 34.69.72.163:15012
+# tokenSource: istio-ca
+#
+
+ example.test.svc:8080:
+ id: example.test.svc:8080
+ addr: 1.2.3.4:8080
+
+ # Alternative way to configure K8S GKE clusters.
+ # By default .kube/config and KUBECONFIG will be used to create k8s clusters.
+ # A cluster named "k8s" will be set as the default cluster and used for k8s tokens.
+# gke_PROJECTID_LOCATION_CLUSTER:
+# # certificate-authority-data:
+# cacert: |
+# -----BEGIN CERTIFICATE-----
+# MII...
+# -----END CERTIFICATE-----
+# addr: ...
+# # Extracted from the Secret.
+# token: Bearer ....
+basePort: 13000
+
+dst:
+ # Key is used a FQDN, if not explicitly configured
+ # If VIP is missing - it can be resolved via DNS.
+
+ # A service.
+ echo.svc.mymesh.internal:
+ vip:
+ - "10.1.1.10"
+
+ # A host
+ echo.w.mymesh.internal:
+ addr: "127.0.0.1" # :14010
+
+# All possible listeners
+listeners:
+
+ # ======== Egress
+ # Local traffic, will send to original dst or secure depending on dst.
+
+ tpudp:
+ port: 14002
+ protocol: tproxy_udp
+
+ socks:
+ port: 14003
+ protocol: socks
+
+ tproxy:
+ port: 14006
+ protocol: tproxy
+
+ httpproxy:
+ port: 14005
+ protocol: http_proxy
+
+ # ======= HBone / multiplexed ingress
+
+ # SSH-secured inbound connections
+ # Will forward to local ports just like HBone.
+ ssh:
+ port: 14022
+ protocol: ssh
+
+ # Plain text HTTP/2
+ hbonec:
+ port: 14001
+ protocol: hbonec
+
+ # Plain text HTTP/1.1
+ hbone1:
+ port: 14004
+ protocol: hbone1
+
+ # TLS - H2 or H1
+ hbone:
+ port: 14008
+ protocol: hbone
+
+ # ======= Admin/debug port
+ admin:
+ port: 14000
+ protocol: admin
+
+ # ======== Regular listeners
+ udp:
+ port: 14009
+ protocol: udp
+
+ mqtt:
+ port: 14009
+ protocol: mqtt
+
+ echo:
+ port: 14010
+ protocol: echo
+
+
+ ipfs:
+ port: 14011
+ protocol: ipfs
diff --git a/tools/provision.sh b/cmd/ugated/ugate_default.yaml
similarity index 100%
rename from tools/provision.sh
rename to cmd/ugated/ugate_default.yaml
diff --git a/cmd/ugated/ugated.go b/cmd/ugated/ugated.go
new file mode 100644
index 0000000..1ddf271
--- /dev/null
+++ b/cmd/ugated/ugated.go
@@ -0,0 +1,163 @@
+package main
+
+import (
+ "context"
+ "fmt"
+ "github.com/costinm/ugate/pkg/ipfs"
+ "log"
+ _ "net/http/pprof"
+ "os"
+
+ "github.com/costinm/meshauth"
+ meshauth_util "github.com/costinm/meshauth/util"
+ sshd "github.com/costinm/ssh-mesh"
+ "github.com/costinm/ugate"
+ "github.com/costinm/ugate/ugated"
+ "sigs.k8s.io/yaml"
+
+ _ "github.com/costinm/ugate/pkg/ext/gvisor"
+ //_ "github.com/costinm/ugate/pkg/ext/ipfs"
+ _ "github.com/costinm/ugate/pkg/ext/lwip"
+
+ "golang.org/x/exp/slog"
+)
+
+// Multiprotocol mesh gateway
+//
+// - iptables capture
+// - option to use mTLS - if the network is secure ( ipsec or equivalent ) no encryption
+// - detect TLS and pass it through
+// - inbound: extract metadata
+// - DNS and DNS capture (if root)
+// - control plane using webpush messaging
+// - webRTC and H2 for mesh communication
+// - convert from H2/H1, based on local port config.
+// - SOCKS and PROXY
+//
+// This does not include TUN+lwIP, which is now only used with AndroidVPN in
+// JNI mode (without many of the extras).
+func main() {
+ ctx := context.Background()
+ // First step in a 'main' app is to bootstrap
+ // - identity - certs, JWTs, other sources - maybe self-signed if first boot
+ // - control plane and core config/discovery services - MDS, k8s, XDS
+ // - env variables and local files to locate the CP and overrides/defaults
+
+ // SetCert configs from the current dir and var/lib/dmesh, or env variables
+ // Writes to current dir.
+ // TODO: other config sources, based on env
+
+ // Use the detected config storage to load mesh settings
+ meshCfg := &ugate.MeshSettings{}
+ basecfg := meshauth_util.FindConfig("ugate", ".yaml")
+ if basecfg != nil {
+ err := yaml.Unmarshal(basecfg, meshCfg)
+ if err != nil {
+ panic(err)
+ }
+ }
+
+ // ===== SSH protocol config =================
+ //
+ sshCfg := &meshCfg.SSHConfig
+
+ // SetCert keys, certs, configs from ~/.ssh/ - unless ssh was configured in the base config
+ if sshCfg.Private == "" {
+ sshd.EnvSSH(sshCfg)
+ }
+
+ // From sshm.go
+ authn := meshauth.NewAuthn(&sshCfg.AuthnConfig)
+
+ if len(sshCfg.AuthnConfig.Issuers) > 0 {
+ err := authn.FetchAllKeys(ctx, sshCfg.AuthnConfig.Issuers)
+ if err != nil {
+ log.Println("Issuers", err)
+ }
+ sshCfg.TokenChecker = authn.CheckJwtMap
+ }
+
+ // ========== Mesh Auth ======================
+ // TODO: use SSH config to bootstrap
+
+ // init defaults for the rest
+ if meshCfg.BasePort == 0 {
+ meshCfg.BasePort = 14000
+ }
+
+ // Initialize the authentication and core config, using env
+ // variables, detection and local files.
+ meshAuth, _ := meshauth.FromEnv(&meshCfg.MeshCfg)
+ if meshAuth.Cert == nil {
+ // If no Cert was found - generate a self-signed for bootstrap.
+ // Additional mesh certs can be added later, if a control plane is found.
+ meshAuth.InitSelfSigned("")
+ // TODO: only if mesh control plane not set.
+ meshAuth.SaveCerts(".")
+ }
+
+ // ========= UGateHandlers routing and extensions ===========
+
+ ug := ugate.New(meshAuth, meshCfg)
+
+ if ug.Listeners["hbonec"] == nil {
+ // Set if running in a knative env, or if an Envoy/ambient runs as a sidecar to handle
+ // TLS, QUIC, H2. In this mode only standard H2/MASQUE are supported, with
+ // reverse connections over POST or websocket.
+ knativePort := os.Getenv("PORT")
+ haddr := ""
+ if knativePort != "" {
+ haddr = ":" + knativePort
+ } else {
+ haddr = fmt.Sprintf("0.0.0.0:%d", meshCfg.BasePort)
+ }
+ ug.Listeners["hbonec"] =
+ &meshauth.PortListener{
+ Address: haddr,
+ Protocol: "hbonec"}
+ }
+
+ if ug.Listeners["ssh"] == nil {
+ ug.Listeners["ssh"] = &meshauth.PortListener{
+ Address: fmt.Sprintf(":%d", meshCfg.BasePort + 22),
+ Protocol: "ssh"}
+ }
+ if ug.Listeners["socks"] == nil {
+ ug.Listeners["socks"] = &meshauth.PortListener{
+ Address: fmt.Sprintf("127.0.0.1:%d", meshCfg.BasePort + 8),
+ Protocol: "socks"}
+ }
+ if ug.Listeners["tproxy"] == nil {
+ ug.Listeners["tproxy"] = &meshauth.PortListener{
+ Address: fmt.Sprintf(":%d", meshCfg.BasePort + 6),
+ Protocol: "tproxy"}
+ }
+ if ug.Listeners["quic"] == nil {
+ ug.Listeners["quic"] = &meshauth.PortListener{
+ Address: fmt.Sprintf(":%d", meshCfg.BasePort + 9),
+ Protocol: "quic"}
+ }
+
+ // Register core protocols.
+ ugated.Init(ug)
+
+ ipfs.Init(ug)
+
+ ug.Start()
+ // Start a SSH mesh node. This allows other authorized local nodes to jump and a debug
+ // interface.
+
+ for _, h := range ug.StartFunctions {
+ go h(ug)
+ }
+
+ // Log - may be sent to otel.
+ slog.Info("ugate/start",
+ "meshEnv", ug.Auth.ID,
+ "name", ug.Auth.Name,
+ "basePort", ug.BasePort,
+ "pub", meshauth.PublicKeyBase32SHA(meshauth.PublicKey(ug.Auth.Cert.PrivateKey)),
+ "vip", ug.Auth.VIP6)
+
+ meshauth_util.MainEnd()
+}
diff --git a/cmd/wp/testdata/sub_browser1.json b/cmd/wp/testdata/sub_browser1.json
deleted file mode 100644
index eb6f19f..0000000
--- a/cmd/wp/testdata/sub_browser1.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "endpoint": "https://updates.push.services.mozilla.com/push/v1/gAAAAABXMRmjsxpU7aqwHIKnC41PvQDkn5dqAL2S0Geq-2DtG7H6W6Geql1YMpihJ6GeHtg-SNfUCX4lLfxAyMLu7JVZRFH_4bXL_MhgXIqWWIQcGGx5YnGdvvtOaf82EmyOpoWvlf0E",
- "keys": {
- "auth": "S0DdWigLjQ-5j4Ug9McYgQ",
- "p256dh": "BIRCXK5p71SKDo7Gy8gaXLnLsvJRjSyoxim9MVEQgL2Mb5YCXUdbjJXcU_sdhmwSm6T5NWTfJ1hwmn8cph8Jw98"
- }
-}
diff --git a/cmd/wp/wp.go b/cmd/wp/wp.go
deleted file mode 100644
index 1162853..0000000
--- a/cmd/wp/wp.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package main
-
-import (
- "bytes"
- "encoding/base64"
- "flag"
- "fmt"
- "io/ioutil"
- "net/http"
- "net/http/httputil"
- "os"
-
- "github.com/costinm/meshauth"
- "github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/ugatesvc"
- msgs "github.com/costinm/ugate/webpush"
-)
-
-var (
- to = flag.String("to", "", "Destination. A config file or env variable required")
- data = flag.String("data", "", "Message to send, if empty stdin will be used")
- verbose = flag.Bool("v", false, "Verbose messages")
-)
-
-var hc *http.Client
-
-// Send a signed and encrypted message to a node, using Webpush protocol.
-//
-// This is used for control and events.
-func main() {
- flag.Parse()
-
- config := ugatesvc.NewConf("./", "./var/lib/dmesh/")
- authz, _ := meshauth.FromEnv("", false)
-
- // Use ug as transport - will route to the mesh nodes.
- ug := ugatesvc.New(config, authz, nil)
-
- hc = &http.Client{
- Transport: ug,
- }
-
- sendMessage(config, *to, authz, *verbose, *data)
-}
-
-// Send an encrypted message to a node.
-func sendMessage(config ugate.ConfStore, toS string, vapid *meshauth.MeshAuth, show bool, msg string) {
- var err error
- if msg == "" {
- msgB, err := ioutil.ReadAll(os.Stdin)
- if err != nil {
- fmt.Println("Failed to read message")
- os.Exit(3)
- }
- msg = string(msgB)
- }
-
- destURL := ""
- var destPubK []byte
- var authk []byte
-
- // Format expected to be same as the browser sub in webpush
- subs := ugate.ConfStr(config, "sub_"+toS, "")
- if subs != "" {
- to, err := msgs.SubscriptionFromJSON([]byte(subs))
- if err != nil {
- fmt.Println("Invalid endpoint "+flag.Arg(1), err)
- os.Exit(3)
- }
- destURL = to.Endpoint
- destPubK = to.Key
- authk = to.Auth
- if len(authk) == 0 {
- authk = []byte{1}
- }
- }
-
- ec := meshauth.NewContextSend(destPubK, authk)
- c, _ := ec.Encrypt([]byte(msg))
-
- ah := vapid.VAPIDToken(destURL)
-
- if show {
- payload64 := base64.StdEncoding.EncodeToString(c)
- cmd := "echo -n " + payload64 + " | base64 -d > /tmp/$$.bin; curl -XPOST --data-binary @/tmp/$$.bin"
- cmd += " -proxy 127.0.0.1:5224"
- cmd += " -Httl:0"
- cmd += " -H\"authorization:" + ah + "\""
- fmt.Println(cmd + " " + destURL)
-
- return
- }
-
- req, _ := http.NewRequest("POST", destURL, bytes.NewBuffer(c))
- req.Header.Add("ttl", "0")
- req.Header.Add("authorization", ah)
- req.Header.Add("Content-Encoding", "aes128gcm")
-
- res, err := hc.Do(req)
-
- if res == nil {
- fmt.Println("Failed to send ", err)
-
- } else if err != nil {
- fmt.Println("Failed to send ", err)
-
- } else if res.StatusCode != 201 {
- //dmpReq, err := httputil.DumpRequest(req, true)
- //fmt.Printf(string(dmpReq))
- dmp, _ := httputil.DumpResponse(res, true)
- fmt.Println(string(dmp))
- fmt.Println("Failed to send ", err, res.StatusCode)
-
- } else if *verbose {
- dmpReq, _ := httputil.DumpRequest(req, true)
- fmt.Printf(string(dmpReq))
- dmp, _ := httputil.DumpResponse(res, true)
- fmt.Printf(string(dmp))
- }
-}
diff --git a/docs/2023-06-9-updated-design.md b/docs/2023-06-9-updated-design.md
new file mode 100644
index 0000000..171d6d4
--- /dev/null
+++ b/docs/2023-06-9-updated-design.md
@@ -0,0 +1,32 @@
+# Simplified design
+
+## Local Protocols
+
+- SOCKS5 - shadowsocks compatible
+- TUN - for compat with Android
+- TPROXY - for Istio ztunnel compat
+- Iptables - fallback
+- HA Proxy protocol
+
+Some inter-process communication between local containers, vm or processes is also
+important, doesn't need encryption and can avoid memcopy and serialization:
+
+- Binder
+- flatbuffers ?
+- UDS
+
+## Remote protocols
+
+- HBone - for compat with Istio, browsers (CONNECT)
+- WebRTC
+
+## Firewall bypassing
+
+Use standard TURN servers - with authentication and encryption.
+This should work with browsers out of box, and may share infra.
+
+Why: well established protocols, secure enough for browsers and RTC
+
+As a 'remote gateway' server, it needs to listen on the Gateway ports and initiate
+WebRTC to the behind-firewal servers. The goal is to avoid permanent idle connections
+and share any firewall holes for UDP and TCP.
diff --git a/docs/2024-02-01-updated-design.md b/docs/2024-02-01-updated-design.md
new file mode 100644
index 0000000..ebd2bc8
--- /dev/null
+++ b/docs/2024-02-01-updated-design.md
@@ -0,0 +1,77 @@
+# Protocols
+
+Like ambient, the HTTP and TCP separation is restored.
+
+As the core mesh protocol - I'm moving back to SSH. I want to test an alternative to HBONE (to validate that other
+protocols can be plugged), and I think SSH is a more useful protocol for devices and integrations.
+
+No longer using Quic or H3 - instead WebRTC and webtransport, as they have more support in browsers and are 'user space'.
+
+Basic support for HBONE/CONNECT is intended for interop with Istio and HTTP-based infra (cloudrun).
+
+Core protocols for listeners:
+- SSH - main mesh - on default port
+- hbone and hbonec - http handlers configured with the protocol handlers, on default port.
+- HTTP, including H2C
+- HTTPS, including H2. The listener also accepts TLS routes (SNI).
+- MQTT
+- SOCKS5
+- webrtc
+- webtransport
+
+Extended protocols:
+- ws
+- quic
+- h2r
+- ipfs
+
+
+
+# Routing
+
+Coupling any particular routing or LB with the data plane is not ideal.
+
+Instead, the data/mesh layer is expected to integrate with a 'metadata system' that may provide information about
+any particular destination. DNS is probably the best common option, but K8S, XDS servers and other options exist.
+
+UGate provides a Dialer and RoundTrip API, as well as egress proxy protocols - iptables, socks, http proxy, tun.
+
+The primary addressing is based on FQDN - HTTP, socks, Dial(), http_proxy have an address which is used as the key in
+the discovery system or local config to find the metadata.
+
+
+## IP-based mesh
+
+TUN, iptables only have access to an IP:port - just like Istio sidecars. Based on istio mistakes, this uses a more
+restricted approach:
+
+- dedicated ports - 80, 443, 8080, ... - based on the port we can terminate http, http2 or sniff TLS and extract a FQDN, which will be used instead.
+- for any other port, a PTR lookup to the MDS server or the local config should return a FQDN.
+
+Once the FQDN and metadata are available - it will follow the same model as FQDN-based routing.
+
+### XDS discovery
+
+TODO: If an XDS server is configured, it should be used first - expecting ambient or istio records.
+
+### K8S discovery
+
+If running in K8S env, the apiserver can be queried for config (not watched!). A per-node or larger cache should be used.
+
+### DNS discovery
+
+As a baseline, a secure DNS with DANE, TXT and other records is expected.
+
+
+
+## Self-assigned identity
+
+Original design was centered around a self-assigned public key identity. Other protocols use the same model, and it is still
+worth exploring. Each workload still gets a unique public key, which is mapped to a IPv6 VIP and FQDN.
+
+As suffix, ".m", "h.mesh.internal", "h.mesh.example.com", ".m.example.com" could be used.
+
+When a client uses the 'self-assigned' FQDN or VIP, the following rules are used:
+- VIP is mapped to FQDN first.
+- local discovery (mDNS, local DNS, etc) are used for the FQDN to get A record.
+- connection will validate the public key directly - treating it as a DANE record.
diff --git a/docs/ambient.md b/docs/ambient.md
new file mode 100644
index 0000000..1df50df
--- /dev/null
+++ b/docs/ambient.md
@@ -0,0 +1,6 @@
+# Ambient mesh
+
+My take on Istio ambient is a bit different from the official docs.
+
+The fundamental idea of ambient is to separate L4 and L7 (OSI layers was a good
+idea after all).
diff --git a/docs/azure-gw.md b/docs/azure-gw.md
new file mode 100644
index 0000000..019fa4a
--- /dev/null
+++ b/docs/azure-gw.md
@@ -0,0 +1,42 @@
+
+# Azure Gateway notes
+
+https://learn.microsoft.com/en-us/azure/application-gateway/for-containers/overview
+
+- "Application Gateway for Containers" - using Azure Resource Manager
+- user deploys apps using Azure RM, uses Gateway API to configure, with "ALB" controller as CP.
+- VNet for networking
+- "User assigned managed identity"
+
+Features:
+- splitting, mTLS, routing APIs
+- "near real time" updates on add/move pod, routes, probes
+- elastic ingress to AKS
+- *outside of AKS cluster and responsible for ingress*
+- L7 - based on hostname, headers, etc
+- mTLS to backend ( not on frontend !)
+- also support BYO - a Frontend resource should be provisioned first.
+- or fully managed bu ALB
+
+Price:
+- 1 CU = 2500 persistent connections, 2Mbps throughput, 1 compute unit
+- a compute unit is 50 connection/sec with TLS, 10 RPS (!)
+- one instance == 10 CU, equivalent to a pod, mapped to to 10 CU
+- old LB - 0.24/gateway-hour, 0.008 per capacity-unit-h, more for firewall
+- example: 8 instances
+ - 40 CU to handle 88Mbps
+ - $179 fixed plus 467 variable = 646
+ - 80 CU == 800 RPS, 200k persistent connections.
+ - 0 min scale - $323 / month
+
+
+Setup:
+- create network in resource group: `az network alb create`
+- create frontend `az network alb frontend create`
+- delegate subnet - association resource: `az network vnet subnet update --delegations "trafficControlers"`
+- delegate permissions `az role assignment create ...`
+- create association - `az network alb association create ...`
+
+Notes:
+- status address type IPAddress by value is a FQDN !
+-
\ No newline at end of file
diff --git a/docs/closing.md b/docs/closing.md
new file mode 100644
index 0000000..7caae63
--- /dev/null
+++ b/docs/closing.md
@@ -0,0 +1,32 @@
+# Server-first closing
+
+The golang HTTP stack behavior prevents a server from closing the write stream before the client has finished.
+
+The 'FIN' is sent after the 'Handler' method has finished. It is likely other languages and stacks have similar
+behavior.
+
+One option is to implement a raw, low-level H2 framer - this is possible, but would make it difficult to integrate with
+existing applications for 'proxyless' behavior.
+
+The second options is to use some framing. Each data chunk in the HTTP stream will have a prefix - including the length
+of the data frame, and a type to differentiate data and 'close'.
+
+Instead of an arbitrary framing, we can use an existing format - like gRPC stream:
+
+Regular data frames will be encoded as:
+
+- '0'
+- 4 bytes frame length
+- 0x02 - equivalent with tag=0, type=2 (bytes)
+- DATA
+
+Close will be encoded as:
+
+- '0'
+- 4 bytes length - 00 00 00 02
+- 0x08 - tag=1, type=1 (varint)
+- 0 for FIN, 1 for RST (error close)
+- (addional data may follow)
+
+A third option is to fork the http2 implmentation and add a CloseWrite call, which is already a TODO at the top of
+server.go.
diff --git a/docs/core.md b/docs/core.md
new file mode 100644
index 0000000..8de61b0
--- /dev/null
+++ b/docs/core.md
@@ -0,0 +1,53 @@
+# Core protocols and services
+
+## DNS
+
+Everything starts with DNS - it is the backbone of Internet and largest discovery server.
+
+Modern DNS (on the internet) is using DNS-SEC - signed records, and DNS-over-TLS/HTTPS for
+host-to-resolver OR plain DNS over a secure network (IP-Sec). Unfortunately in many cases 'modern'
+is not used, in particular on home networks.
+
+A 'mesh' DNS should:
+- provide extended discovery for pods and metadata (alternative to MDS)
+- security
+- operate in disconnected mode
+
+## DHCP and CNI-IPAM
+
+Most home networks and routers use dnsmasq - a combined DNS and DHCP server. It creates a
+'database' with the allocs in a file - but it is not very distributed. It is however very small.
+
+Docker uses 02:42:IP_ADDR to FF:FF. (02 means 'local admin')
+
+On a mesh, it would be ideal for devices to use public-key based IP overlay addresses for containers
+and apps, and possibly for hosts too, with IPv6 for the core network. Each network segment also
+has FE80:: addresses.
+
+The mesh and DNS/discovery system will need to map pods/containers/devices to hosts and 'via' gateways.
+
+## SAMBA, NFS, WebDAV, S3
+
+Blob storage is commonly used - needs to be secured and discoverable.
+
+## Prometheus, Jaeger, Zinc, Grafana
+
+That provides:
+- a database with key/value based records and '[]float' values
+- a blob database keyed by trace-id and with a 'json' body
+- log storage with search
+- visualisation
+
+## Cert-Manager
+
+ACME certs can also be managed with CLI tools.
+
+## Dynamic DNS registration
+
+For home networks. This is also something 'isolated' VMs, laptops, mobile devices should use -
+using the org DNS.
+
+
+
+
+
diff --git a/docs/crane.md b/docs/crane.md
new file mode 100644
index 0000000..b218375
--- /dev/null
+++ b/docs/crane.md
@@ -0,0 +1,78 @@
+# Crane
+
+Crane is a tool for directly interacting with a OCI registry.
+Using 'gcrane' variant which has gcr.io extensions.
+
+An OCI registry is a HTTP(S) server supporting GET, POST for SHA-based blobs and a small tag->manifest.
+The manifest stores the SHAs of the config and a list of diff.tar.gzip files. Crane can push/pull blobs, and modify
+the manifest and config.
+
+Install: `go install github.com/google/go-containerregistry/cmd/gcrane@latest`
+Or: `docker run --rm gcr.io/go-containerregistry/gcrane`
+
+Basic features:
+- tag - operates directly on the remote, no need to pull/tag/push. Faster than copy.
+- cp - copy from one repo to another, set tag as well.
+- delete
+- mutate - change labels, annotations, entrypoint, cmd, env, user. Can also 'append' a tarball - but must be a real .tar, can't be stdin.
+- append - take base, layer (can be stdin). "--set-base-image-annotation" to include annotation about base for the new image.
+- export - get a tar for the image
+- flatten - single layer, combine all layers
+- ls - list tags in repo
+
+Mutate also takes a "-o" to output a tarball image, or "-t" to tag. If not specified, push to the original image manifest.
+
+Low level:
+- blob - read a single blob, using @sha256..., output a .tar.gz to stdout
+- config - dump image config ( entrypoint, env, layers ? )
+- manifest - shows the list of tar.gz layers. Can be downloaded with blob
+- digest - get image digest by tag
+- pull - oci, legacy or tarball
+
+Advanced:
+- rebase - take last layers from one image, add them to a different image. Replaces old_base with new_base
+- GGCR_EXPERIMENT_ESTARGZ=1 env variable
+
+Library:
+- Source, Sinks - remote, tarball, daemon, layout Image/Write
+- can interact with Docker daemon
+- Index: remote/layout/random
+- Layer: remote, tarball
+
+```shell
+
+crane config gcr.io/istio-testing/proxyv2:1.12-dev-distroless |jq .
+# shows 10 layers - first distroless, second our additions, last 8 small parts of istio
+ "config": {
+ "User": "65532",
+ "Env": [
+ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
+ "SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt",
+ "ISTIO_META_ISTIO_PROXY_SHA=istio-proxy:ff44db02db5a99a7f06c31441c3a5a0f7ce9e2b4",
+ "ISTIO_META_ISTIO_VERSION=1.12-alpha.eae0ae5c1c492ce59ec56f73552a808b91687d58"
+ ],
+ "Entrypoint": [
+ "/usr/local/bin/pilot-agent"
+ ],
+ "WorkingDir": "/",
+ "OnBuild": null
+ },
+
+
+$ gcrane manifest --platform linux/amd64 gcr.io/istio-testing/proxyv2:1.12-dev-distroless |jq .
+
+ https://gcr.io/v2/istio-testing/proxyv2/blobs/sha256:c5dc4f258debef99ad7e7690d50bd879f1193553e0d36747e9626cd7ac3265f8
+ https://storage.googleapis.com/artifacts.istio-testing.appspot.com/containers/images/sha256:c5dc4f258debef99ad7e7690d50bd879f1193553e0d36747e9626cd7ac3265f8
+
+$ gcrane blob gcr.io/istio-testing@sha256:ed95b4ae780017a8aed1e302277312b9def69adfaf61f5fe86a3cc8a626b5b50 | tar tvfz -
+- /var/lib/dpkg/tzdata, netbase, base
+- tzdata: usr/share/zoneinfo /usr/sbin/tzconfig
+- netbase: /etc/protocols,services,rpc,ethertypes
+- /etc/passwd,group, nsswitch,
+- /etc/ssl/certs/ca-certificates.crt
+- base: /etc/host.conf,
+- ./lib/x86_64-linux-gnu/libc-2.31.so
+
+gcrane append -f <(cd ../out/cert-ssh/bin && tar -cf - sshd) -t gcr.io/dmeshgate/ssh-signerd/sshd:latest
+
+```
diff --git a/docs/dev.md b/docs/dev.md
index fdd6457..735f559 100644
--- a/docs/dev.md
+++ b/docs/dev.md
@@ -2,6 +2,10 @@
Few tools that accelerate and simplify the development, and their impact on projects.
+```shell
+curl https://$NAME/ --connect-to $NAME:443:127.0.0.1:15007
+```
+
## Ko
@@ -28,68 +32,6 @@ kind.local == use local kind
Can also cross-build, with "--platform=linux/amd64,linux/arm64"
-# Skaffold
-
-It will also check if any file has changed, and in 'dev' mode
-watch for changed files and re-deploy automatically.
-It can also start a debugger and forward ports.
-
-Without certificates and for faster time: deploy in-cluster registry,
-forward registry port to 5001. In-cluster registry runs on localhost:5001
-
-- use shell script to build - most flexible, easy to plug in ko or other targets
-- schema rewrite/refactoring removes comments.
-
-
-```yaml
-apiVersion: skaffold/v2beta14
-kind: Config
-metadata:
- name: istiod
-...
-
-
-build:
- insecureRegistries:
- - localhost:5001
-
-...
-
- # Building real istiod
- # Due to KO, which uses the image == last component of the go package
- - image: pilot-discovery
- context: /ws/istio-stable/src/istio.io/istio
- custom:
- buildCommand: /ws/dmesh-src/wpgate/bin/build-istiod.sh
- dependencies:
- paths:
- - "pilot/**"
-
- context: .
- custom:
- buildCommand: ../../bin/build-istiod.sh
- dependencies:
- paths:
- - "../../../istio/pilot/**"
-
-deploy:
- kubectl:
- manifests:
- - ns.yaml
- - ../helm/istiod/charts/*.yaml
-
-```
-
-Env variables in the build command:
-
-```shell
-PUSH_IMAGE=true
-IMAGE=gcr.io/dmeshgate/istiod:t-2021-05-15_11-23
-IMAGE_REPO=gcr.io/dmeshgate/istiod
-IMAGE_TAG=t-2021-05-15_11-23
-SKAFFOLD_UPDATE_CHECK=false
-
-```
## Okteto
diff --git a/docs/dns_sni.md b/docs/dns_sni.md
deleted file mode 100644
index 758fc7f..0000000
--- a/docs/dns_sni.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# Notes on DNS and SNI
-
-For TLS, the main routing info is the SNI part of ClientHello.
-
-For compatibility with most clients, it must be a hostname - i.e. subject to:
-- max 256 bytes
-- each label max 63B
-- start with letter, contains letter and digits and "-" (not in first or last).
-
-
-Standard convention for IDN is to start with "xn--" prefix to indicate UTF name.
-IPFS/LibP2P also have the convention to start with a byte identifying the syntax of the rest.
-Starting with a 'type' also makes sure it starts with a letter, and the rest can be
-hex or base32.
-
-DNS allows _ and other binary characters - but this is unlikely to work with TLS clients
-and servers.
-
-https://github.com/multiformats/multibase defines some prefixes to identify the base
-encoding of a string. We also want to use a tag to identify what kind of address it is.
-They use:
-- 'f' = hexadecimal
-- 'b' = base32 (lowercase) - not using 0, 1, 8, 9 or -
-
-For ugate needs, the first label of the domain is used to encode the node ID or dest.
-Since this is a mangled name, we can also use the size for the identifier and presence
-of dashes.
-
-We may support:
-- ugate 32-byte KEY, base32 ( 32 * 8 / 5) = 52 chars, can't be encoded in hex. This is
- the primary format, since it can encode a ED25519 public key or SHA.
-- ugate 8-byte ID, hex: 16hex digits = 16 chars. Base32 is 13 chars, not worth it.
-- ipv4 - simplest is 'i80-10-1-1-2'
-- ipv6 - simplest is 'p80-fd--01' ( : replaced with -) - will have double dash or > 3 dashes
-- alternative - all hex, no dashes: 12 chars for IPv4 and port, 36 chars for IPv6 and port
-
-Since first char must be a letter, and hex and base32 can start with digit, prefixes are used:
-- u - for 32-byte base32 ID
-- f - for 8 byte hex
-- a - for hex IP and port, len determines ipv4 vs ipv6
-- i - for port-ipv4
-- p - for port-ipv6 - max is 36 bytes (16 + 2), leaving 63-36-1=26bytes
-
-The ugate primary port is expected to handle 'BTS'-style communication, with the first
-component used to identify the mesh address. An optional prefix "nXXX-" may identify
-the network. We need to keep the net id short - max 24 bytes.
-
-For short namespace/service, we can also use:
-- s[PORT]--SVC-NS - if len > 63, the truncated SHA with prefix -- can be added as suffix
-- s[PORT]-[NUMBER]-SVC-NS for stateful sets
-
diff --git a/docs/egress_port_listener.md b/docs/egress_port_listener.md
new file mode 100644
index 0000000..fe59085
--- /dev/null
+++ b/docs/egress_port_listener.md
@@ -0,0 +1,45 @@
+K8S:
+API_SERVER/api/v1/namespaces/%s/pods/%s/portforward
+Forwards a local port to the pod, using SPDY or Websocket.
+
+Docs and other options:
+https://blog.ston3o.me/how-to-expose-local-server-behind-firewall/
+- OpenVPN - easy to setup docker container
+- upnpc
+- tor
+ ngrok - free 40 con/min
+ pagekite - py, $3/month
+ bleenco/localtunnel (go)
+ localtunnel/localtunnel (js)
+ yaler - commercial
+ inlets / rancher remote dialer
+
+socks bind standard - not commonly implemented
+
+ssh -R remote_server_ip:12345:localhost:12345
+- multiplexed over ssh TCP con, flow control per socket
+
+
+```
+ byte SSH_MSG_CHANNEL_OPEN
+ string "forwarded-tcpip"
+ uint32 sender channel
+
+ uint32 initial window size
+ uint32 maximum packet size
+
+ string address that was connected
+ uint32 port that was connected
+
+ string originator IP address
+ uint32 originator port
+```
+
+concourse TSA - uses ssh, default 2222
+'beacon' is effectively using ssh command to forward ports
+"golang.org/x/crypto/ssh"
+https://github.com/concourse/tsa/blob/master/tsacmd/server.go
+
+Rancher 'Reverse Tunneling Dialer' and 'inlets':
+- use websocket - no multiplexing.
+- binary messages, using websocket frames
diff --git a/docs/gamma_issues.md b/docs/gamma_issues.md
new file mode 100644
index 0000000..2ff0ac1
--- /dev/null
+++ b/docs/gamma_issues.md
@@ -0,0 +1,197 @@
+# GAMMA issues and alternatives
+
+## Background
+
+GAMMA is a workgroup attempting to apply the K8S Gateway API and model for 'mesh'.
+
+The term 'mesh' is defined in a different way by each product - but generally
+in K8S context refers to policies applied on the communication between workloads and
+Services.
+
+HttpRoute is the central API. The Gateway API abstracts a reverse proxy / load balancer
+that may route to backends and enforce policies.
+
+A very important decision is that the Gateway implementation may choose to run an
+in-cluster deployment - or may use external multi-tenant infrastructure.
+
+In many cases it is far more efficient to share resources - if one namespace
+needs few 100 qps it is overkill to allocate even 1 CPU - and in most cases
+due to replication even more will be wasted. Sharing a gateway across clusters
+or even tenants can result in lower costs and higher performance, and may
+be easier to manage.
+
+There are also cases where a dedicated deployment is needed - both cases are allowed.
+
+A Gateway is usually associated with a custom DNS domain and external IP - but
+implementations also allow using VPC IPs - or may create K8S Services and use cluster IP.
+It is possible to automate the DNS registration with external DNS servers as well
+as provisioning of ACME or other public certificates.
+
+An L7 request has a number of steps (for https):
+- client DNS resolution - in most cases in K8S this results in a unique 'cluster IP',
+ but for internet gateways it is more common to have shared IPs
+- a TCP connection is opened to the IP - this is handled by L4 routing, and the CNI implementation in K8S handles
+ the cluster IPs
+- SNI with same hostname is sent to the IP, and server can use that to lookup and send a cert
+- server sends back certificates for the SNI, and client checks - typically matching the hostname/SNI, or using a control plane or config to find the expected workload identity (spiffee)
+- after ALPN handshake, the request is processed and "Host" header is matched.
+- based on host, different routes and policies are applied.
+- the request is forwarded to one of the backends.
+
+# ClusterIP and Service limitations
+
+GAMMA is currently defined as associating HttpRoute with a Service - which has
+a cluster IP and sometimes multiple ports. Implementations may choose
+how to implement this - but since the cluster IP and the Service were
+previously handled by CNI as L4 services, some form of interception or redirection
+for the service is needed. The API is pretty much forcing this - there is no
+provision for a client to get a different IP in the DNS resoultion or use the
+previous L4 routing rules. Client must use the Service name (service.namespace.svc.cluster.local),
+will get the cluster IP assigned by K8S and handled by the CNI layer.
+
+That works fine for Istio - either sidecar or ambient - because interception is the
+core functionality. But it is not clear this complexity is the best option, and it forces all
+potential clients to also use Istio.
+
+Running a full gateway with 100s of features next to each worklod has a very large
+cost (operations and resources), so Istio ambient is moving to model where
+the L7 features are handled by "Waypoints", which are shared gateways currently with
+namespace granularity.
+
+However due to the GAMMA semantics - some interception to re-purpose the Service IP is still required.
+
+
+A better approach for many use cases that GAMMA supports is to simply use the
+real Gateway API - with an 'internal' class, as well as using a new hostname. While this
+may require clients to be configured to use a new name - for new applications
+it is not a huge burden. The old name with 'svc.cluster.local' is too tied with
+the ClusterIP, unique service IP - and the old IP are tied to the workings of the CNI.
+
+Istio has put very high priority on the 'user should never have to make changes
+in their app config' - and Ambient puts an even higher priority on 'you should
+not break any existing app'. Both have huge price - and many corner cases.
+
+A developer should be able to make his own choice - and having a simpler architecture
+and lower risk and costs may be worth making few config changes for a lot of users.
+
+There are additional benefits for this approach:
+1. the new DNS may use a managed DNS server and be visible in the entire VPC
+2. user can pick whatever names they want
+3. if they can use a real domain and with ACME DNS channenge they can even get public certs
+4. For HTTP fewer IPs are used - even one per region
+5. Same multi-tenant servers that are used for regular gateways can be used.
+
+All this can be done today using the 'real' Gateway API - for the price of a small
+config change and using a name chosen by the user instead of the fixed K8S naming conventions.
+
+## Native TLS
+
+More and more applications are using client libraries that default to TLS+JWT - for any
+such application interception is going to fail to apply any L7 policy.
+
+The usualy examples in Istio and gamma show apps making http:// requests - and
+the intercepting proxy applying policies. It works because after cluster IP is intercepted
+we can parse the http request and see the path/headers - but it doesn't work
+if the client originates a https or TLS connection.
+
+In the early days it was very common for apps to use plain text in the internal VPC,
+and probably still is - but tools like CertManager make it very easy for apps to
+get certs and frameworks and libraries are starting to be more security aware.
+
+For any app doing native TLS, GAMMA is not practically implementable. Using
+an internal gateway works - if it gets proper name and certificate that is compatible
+with the client libraries, which generally use DNS verification ( spiffee requires
+the apps to use XDS to get the server workload identity - proxyless can do this, but it
+is very rare to have real Gateways use spiffe since it requires all clients to be in the mesh)
+
+# Recommended uses for GAMMA
+
+## Client apps that can't be changed/reconfigured and use http://
+
+If the application can't be changed or reconfigured to use a real Gateway where
+routes are applied - we must be able to apply the HttpRoute on the path from
+client originating the request to the cluster IP of the Service. As mentioned
+above, that typically requires interception in a sidecar or per node - before the
+packets get encrypted by CNI.
+
+If the application can be reconfigured to use a different address - using a real
+gateway avoids all this complexity and has far more flexibility.
+
+It would be best to define an internal Gateway anyways - so future versions
+of the app or clients not running Istio/etc ( not in K8S or env supporting interception)
+can still use the service with the routes/policies.
+
+If the client app is using https:// - mesh implementations using interception can't
+do much against a proper implementation, only option is to point to the
+internal Gateway who can terminate TLS and apply the policies.
+
+## Pods with local host affinity
+
+Most Gateway implementations run Pods or use external shared infrastructure.
+In performance-critical cases it is useful to co-locate related pods using
+affinity - the pods would use node-local paths with higher bandwidth and lower
+latency then ethernet/fiber.
+
+Generally encryption between 2 containers on same machine is not required (or
+very useful) - if the node is compromised it can bypass the protection. Encryption
+is important for over-the-wire and against sniffing or MITM - it does not
+protect against kernel/root on either end.
+
+K8S provides Service options to prefer or require same-node - and usually the
+apps are written to take advantage and not use https:// so are compatible with
+interception-based implementations.
+
+In such case a GAMMA implementation can be better, if it is aware of same-node.
+Ztunnel has this capability - but only for L4. Istio sidecars currently don't.
+I'm not aware of any mesh that can do this yet at L7 - except maybe a per-node
+Waypoint that is not very feasible.
+
+## Proxyless - or 'native' implementations
+
+Istio and gRPC have used the term 'proxyless' to describe native implementations
+of the policies, where libraries or framework code are used to get the configs
+and implement them directly. Routing and load balancing policies would be on
+the client side, authz on the server side.
+
+If client and server are on the same node this can have a huge impact, since
+local communication doesn't require encryption and is significantly faster
+then over-the-wire. Even if the L7 LB was per-node, proxyless has one less hop -
+and running per-node L7 ILB has operational and security costs.
+
+Proxyless can see the internal Gateways and Routes and directly implement the configs.
+
+While benefits are clear, there are costs too:
+- feature gaps - a fully featured Gateway has a lot of features and additional APIs
+- security risks - the external gateways can run on separate nodes and accounts/teams
+- if some sensitive policy, in particular security, is missing there are risks associated with the gap.
+- language and protocol support is limitted - gRPC supports few languages, other protocols are currently Go-only
+- code/binary size increases
+- complexity and bugs in the framework require more frequent builds/updates, sometimes the mesh implementation is order of magnitudes larger than the app code.
+
+A proxyless implementation can be used with GAMMA - it could also be used with an
+internal Gateway, if the control plane decides it can bypass the gateway.
+
+It is critical for implementations to be aware of the server capabilities, in
+particular on Istio-Ambient like implementations. If the server has a sidecar or
+is a proxyless implementation AND all policies are in the supported set, it can
+bypass the Waypoint or Gateway. Otherwise it should still be routed to the middle
+proxy, and NetworkPolicy should restrict direct communication with the backend.
+
+## WASM and Agents
+
+One option for the proxyless issues is to have a Gateway implementation in WASM
+or as a per-node agent - but written as a non-proxy API with some integration with
+the framework.
+
+For example the http or gRPC library would make a UDS or local call to a sidecar
+or per node agent with the hostname, path, headers - and receive back the destination
+IP and metadata (expected CA, what SNI to use, if it is on the same node or requires TLS).
+
+The agents have costs too - and it is useful to have them local. Making multiple
+roundtrips can have a higher cost then a proxy.
+
+A WASM implementation can be a middle ground too and can be linked with the app like
+a proxyless implementation - but would work with more languages and protocols.
+
+This has the same limitations and risks as proxyless, plus 1-2 additional same-node
+RTT.
diff --git a/docs/ip_ranges.md b/docs/ip_ranges.md
index e4c90ef..e915353 100644
--- a/docs/ip_ranges.md
+++ b/docs/ip_ranges.md
@@ -1,15 +1,24 @@
+# Use in dmesh
-https://en.wikipedia.org/wiki/Reserved_IP_addresses
+All nodes, workloads and services have an overlay IPv6 as well as multiple IPs.
+The interface address is usually derived from SHA of the public key.
+
+For network, options are to use the FC::/8 range (not defined, reserved for local),
+or FD::/8, which is specified as 48bit random and 16 bit 'subnet id'.
+
+The 48bit can be derived from the SHA of the fabric public key, subnets may
+define different locations.
-https://datatracker.ietf.org/doc/html/rfc6890 Special-Purpose IP Address Registries
+# Docs and notes
+https://en.wikipedia.org/wiki/Reserved_IP_addresses
+https://datatracker.ietf.org/doc/html/rfc6890 Special-Purpose IP Address Registries
https://datatracker.ietf.org/doc/html/rfc5735 - IPv4
0.0.0.0/8 - 'this network'. Can use 0.0.0.0 as source to 'learn the IP'.
-
10.0.0.0/8
172.16.0.0/12
192.0.2.0/24 - TEST-NET
@@ -20,11 +29,18 @@ https://datatracker.ietf.org/doc/html/rfc5735 - IPv4
100.64.0.0/10 - shared address space https://datatracker.ietf.org/doc/html/rfc6598
-224.0.0.0/4 - multicast
+224.0.0.0/4 - multicast - a huge space that can be used ! 0xE0.00.00.00
-240.0.0.0/4 - future use
+240.0.0.0/4 - future use - 0xF0.00.00.00
-169.254.0.0/16 - link local, auto-config (no DHCP)
+169.254.0.0/16 - link local, auto-config (no DHCP allowed). rfc3927
+ 169.254.169.254 used as MDS. Also DNS in GCP
+ 'can't be used by any router' - but ok on the bridge
+ 169.254.169.123 - NTP in AWS
+ 169.254.169.253 - DNS in AWS
+ 169.254.1.0 to 169.254.254.255 is the range for random addresses, 0 and 169.154.255.0 are free.
+ recommends consistent random generator (MAC?), storing an assigned address, plus ARP probe and announce
+ same domain with ARP announce - i.e. bridge
192.0.0.0/24 - IETF assignments
192.88.99.0/24 - 6to4
diff --git a/docs/localnet.md b/docs/localnet.md
new file mode 100644
index 0000000..3189d26
--- /dev/null
+++ b/docs/localnet.md
@@ -0,0 +1,56 @@
+# Local host and the mesh
+
+Containers and VMs work very hard to act as a separate, standalone machine - with their own network stack and IP address.
+Looking back, we started with 'large' servers shared by many users, batch processes and applications, moved to
+one and then many machines per user and large number of servers in cloud providers. But we also moved back to very
+large servers with many cores and huge memory shared by many users.
+
+For a long time developers using bad abstractions and interfaces had a hard time understanding that a local call
+is very different from a cross-region network call - latency, common errors, marshalling costs. Now we are at
+a point where we need developers to understand that communication between 2 processes on the same machine is
+very different from network calls.
+
+I was ranting about microservices and monoliths craziness - but I think the core of the confusion is the
+continuing attempts to abstract and hide the hardware architecture and differences between network calls
+and communication between 2 processes on the same machine.
+
+K8S provides nice abstractions and mechanisms to schedule pods on specific node pools or nodes. Affinity,
+taints, services with node preference, dedicated node pools can all be used to co-locate specific
+services, preserving the isolation and security boundaries but with 'same machine' instead of 'over the wire'
+semantics.
+
+## mTLS for interprocess communication
+
+Rarely actually necessary - but workloads (proxyless) or sidecars (envoy, ztunnel) can use mTLS even when
+communicating on the same machine. Will still be much faster than over the wire - but most optimizations
+are lost.
+
+If you are considering combining 2 uServices with different security boundaries in a monolith - the
+communication between them will clearly not be mTLS, and having them on the same machine isolated but
+using a local IPC instead of mTLS over TCP is strictly better.
+
+TODO: expand
+
+## Protocols
+
+TCP is the easiest option, with minimal or no code changes when moving uServices to the same machine.
+For same machine you can avoid mTLS - but still need some ways to identify the peer. That's the job of
+an MDS that tracks the pods on the node and can provide the identity.
+
+UDS requires few small changes - but adds ability to strongly identify the peer and to pass file descriptors
+between processes - including shared memory segments that can provide some zero-copy semantics. This works
+for containers - not for VMs running on the same host.
+
+Virtio is probably the best option when the workload needs strongest isolation. Gophers in gVisor provide
+a similar capability.
+
+# Zero copy
+
+The best case is a zero copy mechanism - it is the closest to 'monolith' behavior. Avoiding context switch
+would also be great - Android Binder and few other 'fiber' mechanisms allows this for example.
+
+[Splice and pipes](https://www.kernel.org/doc/html/next/filesystems/splice.html) and the splice call are
+powerful mechanisms enabling some zero copy.
+
+Hugetables and shared memory segments, combined with flatbuffers and uring-like queues is another option.
+
diff --git a/docs/mesh.md b/docs/mesh.md
new file mode 100644
index 0000000..32f251d
--- /dev/null
+++ b/docs/mesh.md
@@ -0,0 +1,87 @@
+# Meshes
+
+Mesh may mean many things, and Istio has further confused the term by arbitrarily adding
+observability, which is a general concept.
+
+I believe 'mesh' is primarily about identity and security across multiple environments,
+and policies and telemetry based on identity and secure information, with the
+secure parts of the Internet and mobile as the largest public mesh.
+
+In regular K8S or on most IPSec/Wireguard/proprietary networks, the policies are expressed
+using authenticated IP address and associated trusted discovery server.
+
+The policies are applied at the network level - by CNI or firewall - the only identity
+they see is the source or dest IP. The low level keys provisioned on each node authenticate
+the IP, so it can't be forged and MITM is not possible. As long as you are in the secure
+network boundaries - and the IP is not re-allocated - you can trust the IP.
+
+Re-allocation and dynamic assignment of IPv4 has important risks and implications, can be
+discussed separately, but secure networks do support static or subnet allocations too
+that are more durable.
+
+Inside the secured network - the associated discovery server holds metadata for the IP.
+For K8S it's extensive - the full Pod spec, including a K8S specific 'account'. In other
+networks it can be just a FQDN (hostname) and associated 'owner'.
+
+## Metadata and Discovery servers
+
+Inside the boundaries of a secure network, we know the IP is authenticated and an ephemeral
+but secure identity. From an application perspective - it is the ONLY information they
+see with the standard POSIX/linux APIs.
+
+Even with Istio sidecars - the mTLS is hidden from the user and the client identity
+only made available as an envoy-specific complex header (XFCC). In Istio ambient things
+are worse for L4 - and with Waypoints it's not yet clear how identity will be passed.
+To make things worse - Istio doesn't even propagate the real source IP with sidecars
+unless TPROXY is used ( and it requires granting high permissions to the sidecar).
+
+Many applications need to make decisions based on the caller identity - and usually
+have their own separate authentication, sometimes using user/password or mTLS or JWTs.
+Use of the source IP is rarely or never used besides logging - and the real source
+is also hidden in Forwarded headers in HTTP and HA-Proxy prefix for TCP.
+
+RFC912 and successors (from 1984) originally titled "Authentication service" defines
+one of the first protocols to map TCP level info available to apps back to
+identity. It takes src/dst ports and issues a request to the remote host. The
+remote host will see the source/dst IP on the callback, and
+use the extra src/dst to lookup the user identiy on its side - and return the
+identity on the host. Assuming the IP network is secure - it mostly works.
+
+Modern metadata servers run on a host-only address (like 169.254.169.254) and provide
+tokens and trusted info from the discovery and auth systems. Like Ident, it needs to
+find caller identity on the local host based on IP - however in most cases they only
+use the IP (local call - either same network namespace or a local container). They
+keep track of all containers running locally - and use the discovery server to
+know identity and metadata.
+
+
+
+## Native mesh - or proxyless
+
+A native mesh handles authentication, security and policy at the application level using
+libraries or frameworks. This is what applications have been doing since the
+discovery of security - what makes it a 'mesh' is the presence of a discovery server
+that primarily provides a mapping between 'mesh identity' and current IP, as well
+as optional security options.
+
+
+## User and host identities
+
+From an application perspective, the pod or host service accounts are not as important
+as a user identity ( or service account ) that owns the data. In many cases for
+container-based and micro-services the identity of container can be treated as
+the identity of the user - howerver even in this case there are multiple containers
+running in multiple environments that hold the same identity.
+
+Modern secure servers attempt to bind user to host - or apply different policies for
+a user depending on the host, for example allow access to less data if user is using
+a device not owned/controlled by the org like a personal phone.
+
+
+
+
+
+
+
+
+
diff --git a/docs/monoliths1.md b/docs/monoliths1.md
new file mode 100644
index 0000000..526e6bc
--- /dev/null
+++ b/docs/monoliths1.md
@@ -0,0 +1,94 @@
+# Monoliths, microservices and the middle ground
+
+Skipping the rant part, it is important to find a middle
+ground where users can take advantage of the benefits of
+microservices with less costs. If the microservices
+are all written in the same language and have about the
+same security blast radius and RBAC permissions - combining
+them in a monolith is not a bad idea, it is quite simple to
+replace the remote calls to local calls and keep things
+modular via reviews.
+
+But this is not the only way, and it is not always the right way.
+
+Modern server environments may have >200 cores (400+ vCPUs) and 10+ TB
+or more RAM. In most prod environments you need at least 3 VMs
+or k8s nodes for redundancy and multiple regions - but it is
+perfectly possible to co-locate all micro-services on all
+VMs. In K8S that would use DaemonSets.
+
+This avoids sending the data over the wire - but it still requires
+serialization and going trough the TCP stack.
+
+The next step is to use pods with multiple containers and UDS
+communication - it avoids the TCP stack, and UDS may send open
+file descriptors which also allows passing shared memory areas.
+But multiple containers on a pod impacts security boundaries.
+
+We could use a CNI interface to inject UDS sockets into each
+pod and allow cross-pod UDS communication - preserving security
+boundaries.
+
+A step further is injecting 'virtio' like interfaces allowing
+shared memory and uring-style communication. UDS or similar
+mechanisms can be used to detect and bootstrap this for containers,
+and if strong isolation is desired real virtio between VMs on
+same hosts can achieve similar 'zero copy'/shared memory communication.
+
+The next problem is that shared memory still requires different
+languages to marshall/unmarshall - or use the shared memory
+natively for the buffers that need to be exchanged. Flatbuffers and
+similar structures make this possible - but I think we should
+look closer to WASM new structure definition as well.
+
+While the new spec is intended for WASM to allow sharing data
+between modules and host or between modules, and is a building
+block for host-provided garbage collection - it is also a good
+mechanism for shared memory communication between VMs on same
+host or containers using shared memory.
+
+# Ideal design (IMHO)
+
+- uServices in same language and same security ( sharing a service
+account, permissions, blast radius ) -> modular monolith
+- different language, same security boundary -> containers on same pod, using
+UDS or shared memory.
+- different security boundary -> different Pods or VMs on same host,
+using UDS/Virtio/shared memory
+
+A single host should be able to hold the entire stack and
+work fully independently - for the most part. Databases and
+lock services would still need to be sharded and span multiple
+hosts - plus some replication, but no wire traffic or TCP/TLS between
+hosts should be needed except for the shared stateful data.
+
+## Ambient
+
+Istio is used to provide secure communication between apps, control
+routing and provide basic telemetry. With ambient we are moving to
+a per-node agent - ztunnel or built into CNI - which will encrypt
+data between nodes but keep local traffic local.
+
+In a world where uServices are optimized to avoid marshalling and wire
+traffic, ztunnel can handle communication using TCP avoiding
+some of the overheads - while still applying network policy and
+some routing.
+
+TODO: make sure 'node affinity' is correctly implemented...
+
+What happens if apps start using UDS or shared memory for the
+same-node communication - and how can we help ? Istio CNI can
+start injecting UDS sockets into each pod ( in the abstract domain)
+allowing communication with ztunnel or a similar per-node agent.
+
+Ztunnel and CNI layer can act as a bus - applying policies and routing the calls, but
+with a zero-copy semantics. Not clear if it can use a uRing interface or UDS
+with shared file descriptros for memory or a combination, we need
+to experiment with this.
+
+Assuming the shared memory follows WASM layout, it will also allow WASM
+'pods' and modules to participate with zero copy semantics.
+
+
+
+
diff --git a/docs/no-lb.md b/docs/no-lb.md
new file mode 100644
index 0000000..948e3ce
--- /dev/null
+++ b/docs/no-lb.md
@@ -0,0 +1,17 @@
+# Load balancing and traffic shifting
+
+UGate is NOT doing either. Use a K8S Gateway (envoy or anything else), no shortage of
+good implementations.
+
+The goal is to provide connectivity:
+1. Form endpoint to endpoint
+2. From gateway to endpoints
+3. From endpoint to gateway.
+
+For HTTP it does need the hostname for routing.
+
+It does include a HTTP service, can serve some http files - and might do minimal route
+on path prefix.
+
+TODO: static config generator for envoy/nginx/caddy ?
+TODO: test alongside gateways
diff --git a/docs/others.md b/docs/others.md
index de545a1..c860ab2 100644
--- a/docs/others.md
+++ b/docs/others.md
@@ -1,3 +1,8 @@
+# Other similar solutions
+
+https://github.com/anderspitman/awesome-tunneling
+
+
# MASQUE and QUIC
@@ -143,3 +148,66 @@ uses unsafe for string/slice
- for websocket
- nb tls
+
+# FRP
+
+- golang
+- v0 -
+- v1 - over complex, envoy/istio like
+
+Deps:
+- socks5 (armon), oidc, beego, kcp-go
+- gorilla ws and mux
+- pion/stun
+- k8s
+- quic
+- https://github.com/pires/go-proxyproto - ha proxy
+
+# Boringproxy
+
+- ssh
+- golang
+
+# pyjam.as
+
+https://tunnel.pyjam.as/
+- requires wg-quic
+
+- wireguard based
+- caddy on server side, UDP to the host
+- uses 'caddy load' API to dynamically add a route to the local caddy
+- single host (good for self-hosting, moderately small VPCs - not high QPS)
+- interesting example to automate wg
+
+# Chisel
+
+- https://github.com/jpillora/chisel
+- ssh over ws
+
+# Bore
+
+- rust
+- not HTTP proxy - just TCP ports
+- may be used with a HTTP proxy like caddy or envoy (with dynamic API)
+- control port and ACCEPT
+- single host
+
+# Rathole
+
+- support TLS, TCP and Noise with keypairs (like wireguard)
+- uses control channel
+- single host
+- faster than frp
+- "Use ngix for http forwarding, with rathole as upstream"
+
+# zrok
+
+- based on openziti
+- net foundry FE or self-hosted
+- Openziti:
+ - tunnels for multiple platforms (incl android)
+ - mTLS and JWT and other authn
+ - no L7 AFAIK
+ - Dial and Bind policy - who can provide or use a service
+- libsodium based - wasm included, ed25519
+- java, c, .net, swift
diff --git a/docs/passenger.md b/docs/passenger.md
new file mode 100644
index 0000000..237bda9
--- /dev/null
+++ b/docs/passenger.md
@@ -0,0 +1,18 @@
+# Passenger vs proxy sidecar
+
+The term 'passenger' is based on ssh PROTOCOL.mux. I suspect many other words are used
+in the industry given the NIH traditions.
+
+A pod-per-node, container-per-pod or process proxy will use a UDS to pass open
+file descriptors, including memory mapped, to the sidecar.
+
+Wayland is a particular example - and makes the ideal protocol so we can reuse the
+VM virtio work driven by ChromeOS. SSH is another broadly used protocol for passengers.
+
+## mTLS SSH passenger
+
+The SSH mux protocol defines a unix domain socket that will be used by ssh clients.
+The server is typically a ssh in multiplex mode - but it can be anything, including
+a ztunnel using mTLS and mesh protocols.
+
+If the mux is set as a jump host - only one UDS is needed.
diff --git a/docs/perf.md b/docs/perf.md
index e846ed8..73c67f1 100644
--- a/docs/perf.md
+++ b/docs/perf.md
@@ -5,6 +5,11 @@ sysctl -w net.core.rmem_max=10000000
ip link set lo mtu 9000
+# Getting flame
+
+docker run uber/go-torch -u http://192.168.3.16:15400/debug/pprof -p -t=30 > torch.svg
+docker run uber/go-torch -u http://192.168.3.16:15200/debug/pprof -p -t=30 > torchbob.svg
+
# Links
https://blog.cloudflare.com/how-to-receive-a-million-packets/
@@ -63,7 +68,7 @@ TCP also has offloading and other optimizations.
pprof & iperf3 -c localhost -p 15201
go tool pprof pprof http://127.0.0.1:15400/debug/pprof/heap
-pprof -http=:8080 /home/costin/pprof/pprof.___3hbone.alloc_objects.alloc_space.inuse_objects.inuse_space.005.pb.gz
+pprof -http=:8080 /home/costin/pprof/pprof.___3ugate.alloc_objects.alloc_space.inuse_objects.inuse_space.005.pb.gz
docker run uber/go-torch -u http://192.168.3.16:15400/debug/pprof -p -t=30 > torch.svg
diff --git a/docs/sni_acl.md b/docs/sni_acl.md
new file mode 100644
index 0000000..fa55761
--- /dev/null
+++ b/docs/sni_acl.md
@@ -0,0 +1,17 @@
+# SNI routing
+
+SNI routing has access only to the destintion address - there is no authenticated info about the caller.
+
+That means:
+
+- should be restricted with NetworkPolicies and similar firewall rules
+ - only allow-listed workloads can connect to the SNI router
+ - SNI router should be restricted to only specific workloads as destinations
+- source info is lost, NetworkPolicies based on IP or labels can't be used on the destination.
+ - however if TLS+auth is used - identity-policies work.
+- ideally only exposed/used on local host (for egress) or specific, rare cases on ingress
+- avoid exposing on a public address, except for explicitly configured addresses where mTLS all the way to the destination workload is required. This is what (original) Istio multi-network does.
+
+A better option is to tunnel mTLS over H2, where the caller can be authenticated and authorized, and additional metadata is available.
+
+SNI routing is intended for 'legacy' applications and compatibility with the current multi-network Istio infrastructure, while HBONE/MASQUE/etc are developed and adopted.
diff --git a/cmd/wp/README.md b/docs/webpush_send.md
similarity index 100%
rename from cmd/wp/README.md
rename to docs/webpush_send.md
diff --git a/envoy/README.md b/envoy/README.md
new file mode 100644
index 0000000..bb3a662
--- /dev/null
+++ b/envoy/README.md
@@ -0,0 +1,29 @@
+# Envoy tests
+
+Assume an agent is running, /etc/certs is updated. Using HBone protocol in envoy.
+All tests expect an iperf3 server running on localhost. The test env will open a number of ports
+that all forward to iperf3 with different configs and paths.
+
+## Ports:
+
+Envoy client: non inbound hbone, to keep config simple
+- admin: 13000
+-
+
+
+Envoy server: no outbound hbone, to keep config simple.
+- admin: 14000
+- hbone: 14008
+- inner_mtls: 14006 - accepts mTLS, forwards to iperf3
+
+Envoy Gateway/PEP: (TODO)
+- admin: 12000
+- hbone: 12008
+
+
+## Dynamic file configs
+
+dynamic_resources:
+lds_config:
+resource_api_version: V3
+path: /tmp/...
diff --git a/envoy/client-envoy.yaml b/envoy/client-envoy.yaml
new file mode 100644
index 0000000..07cc1eb
--- /dev/null
+++ b/envoy/client-envoy.yaml
@@ -0,0 +1,408 @@
+bootstrap_extensions:
+ - name: envoy.bootstrap.internal_listener
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.bootstrap.internal_listener.v3.InternalListener
+admin:
+ access_log:
+ - name: envoy.access_loggers.file
+ typed_config:
+ '@type': type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
+ path: /dev/stderr
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 13000
+ profile_path: /var/lib/istio/data/cenvoy.prof
+
+# Same as Istio, from bootstrap
+layered_runtime:
+ layers:
+ - name: global config
+ static_layer:
+ envoy.deprecated_features:envoy.config.listener.v3.Listener.hidden_envoy_deprecated_use_original_dst: "true"
+ envoy.reloadable_features.http_reject_path_with_fragment: "false"
+ envoy.reloadable_features.internal_address: "true"
+ envoy.reloadable_features.no_extension_lookup_by_name: "false"
+ envoy.reloadable_features.require_strict_1xx_and_204_response_headers: "false"
+ overload.global_downstream_max_connections: "2147483647"
+ re2.max_program_size.error_level: "32768"
+ - admin_layer: {}
+ name: admin
+
+static_resources:
+ listeners:
+ # listener_1: TCP -> inner_cluster_1 -> TLS -> inner_tunnel -> HBone -> cluster_1
+ - name: iperf3tun.test.svc:5201
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 13031
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: inner_iperf3tun.test.svc:5201
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+
+ - name: internal_iperf3tun.test.svc:5201
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 13032
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: iperfmtls.test.svc
+ tunneling_config:
+ hostname: iperfmtls.test.svc
+ use_post: true
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+
+ - name: local:18080
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 18080
+ filter_chains:
+ - filters:
+ - name: envoy.http_connection_manager
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
+ stat_prefix: local:18080
+ #generate_request_id: false
+ codec_type: AUTO
+ route_config:
+ name: local:18080
+ virtual_hosts:
+ - name: local:18080
+ domains: "*"
+ request_headers_to_add:
+ - append_action: OVERWRITE_IF_EXISTS_OR_ADD
+ header:
+ key: x-addr
+ value: fortio-istio-auth-auth-icq63pqnqq-uc.a.run.app
+
+ routes:
+ - match:
+ prefix: "/"
+ route:
+ auto_host_rewrite: true
+ cluster: cr.test.svc
+ timeout: 300s
+ http_filters:
+
+ - name: envoy.filters.http.gcp_authn
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig
+ http_uri:
+ uri: "http://127.0.0.1:15007/computeMetadata/v1/instance/service-accounts/default/identity?audience=[AUDIENCE]"
+ timeout: 1s
+ cluster: mds
+# - name: envoy.filters.http.ext_authz
+# typed_config:
+# "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz
+# http_service:
+# server_uri:
+# uri: http://test-auth.dev
+# cluster: "ext_authz_http_service"
+# timeout: 10s
+# authorization_response:
+# allowed_upstream_headers:
+# patterns:
+# - exact: authorization
+ - name: envoy.filters.http.router
+
+ # listener_1: TCP -> inner_cluster_1 -> TLS -> inner_tunnel -> HBone -> cluster_1
+ - name: iperf3tunint.test.svc:5201
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 13036
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: inner_iperf3tunint.test.svc:5201
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+
+ - name: internal_iperf3tunint.test.svc:5201
+ internal_listener: {}
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: iperfmtls.test.svc
+ tunneling_config:
+ hostname: iperfmtls.test.svc
+ use_post: true
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+
+ # 13033 -> Envoy -- HBONE -> Server -> Iperf3
+ - name: iperf3.test.svc:5201
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 13033
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: server_hbone
+ tunneling_config:
+ headers_to_add:
+ - header:
+ key: x-envoy-original-dst-host
+ value: '%DYNAMIC_METADATA(["tunnel", "detunnel_address"])%'
+ hostname: '%DYNAMIC_METADATA(tunnel:detunnel_address)%'
+ #hostname: iperf.test.svc
+ use_post: true
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+
+ # 13035 -> Envoy -- HBONEC -> Server -> Iperf3
+ - name: iperf3c.test.svc:5201
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 13035
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: server_hbonec
+ tunneling_config:
+ hostname: iperfc.test.svc
+ use_post: true
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+
+
+
+ clusters:
+ # cluster_0 proxies a raw TCP stream into a mTLS TCP stream to internal_tunnel.
+ - name: inner_iperf3tun.test.svc:5201
+ connect_timeout: 5s
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options: {}
+ load_assignment:
+ cluster_name: cluster_0
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 13032
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+
+
+ - name: inner_iperf3tunint.test.svc:5201
+ connect_timeout: 5s
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options: {}
+ load_assignment:
+ cluster_name: inner_iperf3tunint.test.svc:5201
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ envoy_internal_address:
+ server_listener_name: internal_iperf3tunint.test.svc:5201
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+
+ # cluster_1 proxies HTTP stream with a TCP or TLS HTTP/2 stream to Cloud Run.
+ - name: iperfmtls.test.svc
+ connect_timeout: 5s
+ type: LOGICAL_DNS
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options: {}
+ load_assignment:
+ cluster_name: iperfmtls.test.svc
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 14009
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
+ sni: iperftls.test.svc
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+
+ # HBone - inner plain text
+ - name: server_hbone
+ connect_timeout: 5s
+ type: LOGICAL_DNS
+ dns_lookup_family: V4_ONLY
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options: {}
+ load_assignment:
+ cluster_name: cluster_2
+ endpoints:
+ - locality:
+ region: us-central1
+ zone: us-central1-c
+ #sub_zone
+ lb_endpoints:
+ - endpoint:
+ #hostname: ""
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 14009
+ metadata:
+ filter_metadata:
+ istio: {"workload":"echo-local;testns;;;clustername"}
+# envoy.transport_socket_match:
+# tlsMode: istio
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
+ sni: iperf.test.svc
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+ validation_context:
+ trusted_ca:
+ filename: /etc/certs/root-cert.pem
+ match_typed_subject_alt_names:
+ - san_type: URI
+ matcher:
+ prefix: "spiffe://cluster.local/ns/test"
+#
+ - name: cr.test.svc
+ connect_timeout: 5s
+ type: LOGICAL_DNS
+ metadata:
+ typed_filter_metadata:
+ envoy.filters.http.gcp_authn:
+ "@type": type.googleapis.com/envoy.extensions.filters.http.gcp_authn.v3.Audience
+ url: https://fortio-istio-auth-auth-icq63pqnqq-uc.a.run.app
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options: { }
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
+ load_assignment:
+ cluster_name: cr.test.svc
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ hostname: fortio-istio-auth-auth-icq63pqnqq-uc.a.run.app
+ address:
+ socket_address:
+ address: fortio-istio-auth-auth-icq63pqnqq-uc.a.run.app
+ port_value: 443
+
+ - name: server_hbonec
+ connect_timeout: 5s
+ type: LOGICAL_DNS
+ dns_lookup_family: V4_ONLY
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options: {}
+ load_assignment:
+ cluster_name: server_hbonec
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 14008
+
+ # MDS cluster for gcp_authn
+ - name: mds
+ connect_timeout: 5s
+ type: LOGICAL_DNS
+ dns_lookup_family: V4_ONLY
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options: {}
+ load_assignment:
+ cluster_name: mds
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 15409
+
diff --git a/envoy/server-envoy.yaml b/envoy/server-envoy.yaml
new file mode 100644
index 0000000..6b7edc3
--- /dev/null
+++ b/envoy/server-envoy.yaml
@@ -0,0 +1,301 @@
+bootstrap_extensions:
+ - name: envoy.bootstrap.internal_listener
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.bootstrap.internal_listener.v3.InternalListener
+admin:
+ access_log:
+ - name: envoy.access_loggers.file
+ typed_config:
+ '@type': type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
+ path: /dev/stderr
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 14000
+ profile_path: /var/lib/istio/data/senvoy.prof
+
+# Same as Istio, from bootstrap
+layered_runtime:
+ layers:
+ - name: global config
+ static_layer:
+ envoy.deprecated_features:envoy.config.listener.v3.Listener.hidden_envoy_deprecated_use_original_dst: "true"
+ envoy.reloadable_features.http_reject_path_with_fragment: "false"
+ envoy.reloadable_features.internal_address: "true"
+ envoy.reloadable_features.no_extension_lookup_by_name: "false"
+ envoy.reloadable_features.require_strict_1xx_and_204_response_headers: "false"
+ overload.global_downstream_max_connections: "2147483647"
+ re2.max_program_size.error_level: "32768"
+ - admin_layer: {}
+ name: admin
+
+static_resources:
+ listeners:
+ # hbone is the mTLS terminating H2, tunnels connections to local ports.
+ - name: hbone
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 14009
+ filter_chains:
+ - filters:
+ - name: envoy.filters.network.http_connection_manager
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
+ stat_prefix: ingress_http
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+ route_config:
+ name: local_route
+ virtual_hosts:
+ - name: mtls_tun
+ domains:
+ - "iperfmtls.test.svc"
+ routes:
+ - match:
+ prefix: "/"
+ headers:
+ - name: ":method"
+ exact_match: "POST"
+ route:
+ cluster: internal_iperf3
+ upgrade_configs:
+ - upgrade_type: CONNECT
+ connect_config:
+ allow_post: true
+ - name: local_service
+ domains:
+ - "*"
+ routes:
+ - match:
+ prefix: "/"
+ headers:
+ - name: ":method"
+ exact_match: "POST"
+ route:
+ cluster: local_iperf3
+ upgrade_configs:
+ - upgrade_type: CONNECT
+ connect_config:
+ allow_post: true
+ http_filters:
+ - name: envoy.filters.http.router
+ http2_protocol_options:
+ allow_connect: true
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+
+ # hbonetun is an untrusted gateways - terminates H2-CONNECT/POST, and forwards the inner mTLS
+ # to a destination - can be remote or internal.
+ - name: hbonetun
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 14443
+ filter_chains:
+ - filters:
+ - name: envoy.filters.network.http_connection_manager
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
+ stat_prefix: ingress_hbonetun
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+ route_config:
+ name: hbonetun
+ virtual_hosts:
+ - name: local_service
+ domains:
+ - "*"
+ routes:
+ - match:
+ prefix: "/"
+ headers:
+ - name: ":method"
+ exact_match: "POST"
+ route:
+ cluster: local_iperf3
+ upgrade_configs:
+ - upgrade_type: CONNECT
+ connect_config:
+ allow_post: true
+ http_filters:
+ - name: envoy.filters.http.router
+ http2_protocol_options:
+ allow_connect: true
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+
+ - name: hbonec
+ address:
+ socket_address:
+ protocol: TCP
+ address: 0.0.0.0
+ port_value: 14008
+ filter_chains:
+ - filters:
+ - name: envoy.filters.network.http_connection_manager
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
+ stat_prefix: ingress_http
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+ route_config:
+ name: local_route
+ virtual_hosts:
+ - name: local_service
+ domains:
+ - "*"
+ routes:
+ - match:
+ prefix: "/"
+ headers:
+ - name: ":method"
+ exact_match: "POST"
+ route:
+ cluster: local_iperf3
+ upgrade_configs:
+ - upgrade_type: CONNECT
+ connect_config:
+ allow_post: true
+ http_filters:
+ - name: envoy.filters.http.router
+ http2_protocol_options:
+ allow_connect: true
+
+ # listener_2 decrypts the mTLS TCP stream into a raw TCP stream.
+ - name: inner_mtls
+ address:
+ socket_address:
+ protocol: TCP
+ address: 127.0.0.1
+ port_value: 14006
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: local_iperf3
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+
+ # Baseline: 14034 -> Envoy -> iperf3 (all local), single hop, no TLS
+ - name: local_iperf3
+ address:
+ socket_address:
+ protocol: TCP
+ address: 127.0.0.1
+ port_value: 14034
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: local_iperf3
+ access_log:
+ - name: envoy.file_access_log
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StderrAccessLog
+
+ # Baseline: 14035 -- TLS -> iperf3
+ - name: local_iperf3_tls
+ address:
+ socket_address:
+ protocol: TCP
+ address: 127.0.0.1
+ port_value: 14035
+ filter_chains:
+ - filters:
+ - name: tcp
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
+ stat_prefix: tcp_stats
+ cluster: local_iperf3
+ transport_socket:
+ name: envoy.transport_sockets.tls
+ typed_config:
+ "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
+ common_tls_context:
+ tls_certificates:
+ certificate_chain: { "filename": "/etc/certs/cert-chain.pem" }
+ private_key: { "filename": "/etc/certs/key.pem" }
+
+ clusters:
+ # cluster_1 proxies the mTLS TCP stream to listener_2.
+ - name: inner_hbone
+ connect_timeout: 2s
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options:
+ allow_connect: true
+ load_assignment:
+ cluster_name: inner_hbone
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 14006
+
+ # HBone decrypts the first layer of TLS ( equivalent with a GFE ). Inner stream is an mTLS
+ # connection.
+ - name: internal_iperf3
+ connect_timeout: 2s
+ typed_extension_protocol_options:
+ envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
+ "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
+ explicit_http_config:
+ http2_protocol_options:
+ allow_connect: true
+ load_assignment:
+ cluster_name: internal_iperf3
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 14035
+
+ # One hop, just Envoy TCP
+ - name: local_iperf3
+ connect_timeout: 2s
+ load_assignment:
+ cluster_name: local_iperf3
+ endpoints:
+ - lb_endpoints:
+ - endpoint:
+ address:
+ socket_address:
+ address: 127.0.0.1
+ port_value: 5201
diff --git a/gen/proto/envoy/service/discovery/v3/xds.pb.go b/gen/proto/envoy/service/discovery/v3/xds.pb.go
deleted file mode 100644
index a317016..0000000
--- a/gen/proto/envoy/service/discovery/v3/xds.pb.go
+++ /dev/null
@@ -1,85 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: envoy/service/discovery/v3/xds.proto
-
-// GRPC package - part of the URL. Service is added.
-// URL: /PACKAGE.SERVICE/METHOD
-
-package discovery
-
-import (
- xds "github.com/costinm/grpc-mesh/gen/proto/go/xds"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-var File_envoy_service_discovery_v3_xds_proto protoreflect.FileDescriptor
-
-var file_envoy_service_discovery_v3_xds_proto_rawDesc = []byte{
- 0x0a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f,
- 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x33, 0x2f, 0x78, 0x64, 0x73,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e,
- 0x76, 0x33, 0x1a, 0x1a, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x73, 0x69,
- 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x6e,
- 0x0a, 0x1a, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63,
- 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x19,
- 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x15, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x3d,
- 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73,
- 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x67,
- 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_envoy_service_discovery_v3_xds_proto_goTypes = []interface{}{
- (*xds.DiscoveryRequest)(nil), // 0: xds.DiscoveryRequest
- (*xds.DiscoveryResponse)(nil), // 1: xds.DiscoveryResponse
-}
-var file_envoy_service_discovery_v3_xds_proto_depIdxs = []int32{
- 0, // 0: envoy.service.discovery.v3.AggregatedDiscoveryService.StreamAggregatedResources:input_type -> xds.DiscoveryRequest
- 1, // 1: envoy.service.discovery.v3.AggregatedDiscoveryService.StreamAggregatedResources:output_type -> xds.DiscoveryResponse
- 1, // [1:2] is the sub-list for method output_type
- 0, // [0:1] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_envoy_service_discovery_v3_xds_proto_init() }
-func file_envoy_service_discovery_v3_xds_proto_init() {
- if File_envoy_service_discovery_v3_xds_proto != nil {
- return
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_envoy_service_discovery_v3_xds_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 0,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_envoy_service_discovery_v3_xds_proto_goTypes,
- DependencyIndexes: file_envoy_service_discovery_v3_xds_proto_depIdxs,
- }.Build()
- File_envoy_service_discovery_v3_xds_proto = out.File
- file_envoy_service_discovery_v3_xds_proto_rawDesc = nil
- file_envoy_service_discovery_v3_xds_proto_goTypes = nil
- file_envoy_service_discovery_v3_xds_proto_depIdxs = nil
-}
diff --git a/gen/proto/fgrpc/ping.pb.go b/gen/proto/fgrpc/ping.pb.go
deleted file mode 100644
index efe2a5b..0000000
--- a/gen/proto/fgrpc/ping.pb.go
+++ /dev/null
@@ -1,181 +0,0 @@
-// regenerate the .pb.go file after any change using
-// protoc ping.proto --go_out=plugins=grpc:.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: fgrpc/ping.proto
-
-package fgrpc
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type PingMessage struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Seq int64 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"` // sequence number
- Ts int64 `protobuf:"varint,2,opt,name=ts,proto3" json:"ts,omitempty"` // src send ts / dest receive ts
- Payload string `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` // extra packet data
- DelayNanos int64 `protobuf:"varint,4,opt,name=delayNanos,proto3" json:"delayNanos,omitempty"` // delay the response by x nanoseconds
-}
-
-func (x *PingMessage) Reset() {
- *x = PingMessage{}
- if protoimpl.UnsafeEnabled {
- mi := &file_fgrpc_ping_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PingMessage) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PingMessage) ProtoMessage() {}
-
-func (x *PingMessage) ProtoReflect() protoreflect.Message {
- mi := &file_fgrpc_ping_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PingMessage.ProtoReflect.Descriptor instead.
-func (*PingMessage) Descriptor() ([]byte, []int) {
- return file_fgrpc_ping_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *PingMessage) GetSeq() int64 {
- if x != nil {
- return x.Seq
- }
- return 0
-}
-
-func (x *PingMessage) GetTs() int64 {
- if x != nil {
- return x.Ts
- }
- return 0
-}
-
-func (x *PingMessage) GetPayload() string {
- if x != nil {
- return x.Payload
- }
- return ""
-}
-
-func (x *PingMessage) GetDelayNanos() int64 {
- if x != nil {
- return x.DelayNanos
- }
- return 0
-}
-
-var File_fgrpc_ping_proto protoreflect.FileDescriptor
-
-var file_fgrpc_ping_proto_rawDesc = []byte{
- 0x0a, 0x10, 0x66, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x12, 0x05, 0x66, 0x67, 0x72, 0x70, 0x63, 0x22, 0x69, 0x0a, 0x0b, 0x50, 0x69, 0x6e,
- 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61,
- 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79,
- 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6e,
- 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4e,
- 0x61, 0x6e, 0x6f, 0x73, 0x32, 0x3e, 0x0a, 0x0a, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x2e, 0x66, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x12,
- 0x2e, 0x66, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x22, 0x00, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x75, 0x67, 0x61, 0x74, 0x65,
- 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x66, 0x67, 0x72, 0x70, 0x63,
- 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_fgrpc_ping_proto_rawDescOnce sync.Once
- file_fgrpc_ping_proto_rawDescData = file_fgrpc_ping_proto_rawDesc
-)
-
-func file_fgrpc_ping_proto_rawDescGZIP() []byte {
- file_fgrpc_ping_proto_rawDescOnce.Do(func() {
- file_fgrpc_ping_proto_rawDescData = protoimpl.X.CompressGZIP(file_fgrpc_ping_proto_rawDescData)
- })
- return file_fgrpc_ping_proto_rawDescData
-}
-
-var file_fgrpc_ping_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_fgrpc_ping_proto_goTypes = []interface{}{
- (*PingMessage)(nil), // 0: fgrpc.PingMessage
-}
-var file_fgrpc_ping_proto_depIdxs = []int32{
- 0, // 0: fgrpc.PingServer.Ping:input_type -> fgrpc.PingMessage
- 0, // 1: fgrpc.PingServer.Ping:output_type -> fgrpc.PingMessage
- 1, // [1:2] is the sub-list for method output_type
- 0, // [0:1] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_fgrpc_ping_proto_init() }
-func file_fgrpc_ping_proto_init() {
- if File_fgrpc_ping_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_fgrpc_ping_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PingMessage); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_fgrpc_ping_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_fgrpc_ping_proto_goTypes,
- DependencyIndexes: file_fgrpc_ping_proto_depIdxs,
- MessageInfos: file_fgrpc_ping_proto_msgTypes,
- }.Build()
- File_fgrpc_ping_proto = out.File
- file_fgrpc_ping_proto_rawDesc = nil
- file_fgrpc_ping_proto_goTypes = nil
- file_fgrpc_ping_proto_depIdxs = nil
-}
diff --git a/gen/proto/go.mod b/gen/proto/go.mod
deleted file mode 100644
index acd8f53..0000000
--- a/gen/proto/go.mod
+++ /dev/null
@@ -1,16 +0,0 @@
-module github.com/costinm/ugate/gen/proto
-
-go 1.17
-
-require (
- google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf
- google.golang.org/protobuf v1.28.0
- istio.io/api v0.0.0-20220406030326-b7da7525a6be
-)
-
-require (
- github.com/golang/protobuf v1.5.2 // indirect
- golang.org/x/net v0.0.0-20210825183410-e898025ed96a // indirect
- golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e // indirect
- golang.org/x/text v0.3.7 // indirect
-)
diff --git a/gen/proto/go.sum b/gen/proto/go.sum
deleted file mode 100644
index 64254b6..0000000
--- a/gen/proto/go.sum
+++ /dev/null
@@ -1,258 +0,0 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
-github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
-github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
-github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
-github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
-github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
-github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
-github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
-github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
-golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw=
-golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e h1:XMgFehsDnnLGtjvjOfqWSUzt0alpTR1RSEuznObga2c=
-golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf h1:JTjwKJX9erVpsw17w+OIPP7iAgEkN/r8urhWSunEDTs=
-google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
-google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
-google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M=
-google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
-google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-istio.io/api v0.0.0-20220406030326-b7da7525a6be h1:4pk/0+mX0wsLzfAFGivh0bg5KhhnkclzywfeFdvDPKA=
-istio.io/api v0.0.0-20220406030326-b7da7525a6be/go.mod h1:qGm6l1okCpLqVKyXSfYjB+UXXgpE/LCggALuK25cSFY=
-k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg=
-k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc=
-k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
-k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
-k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
-k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk=
-k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
-sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
-sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
-sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
diff --git a/gen/proto/google/api/annotations.pb.go b/gen/proto/google/api/annotations.pb.go
deleted file mode 100644
index 4fda2f5..0000000
--- a/gen/proto/google/api/annotations.pb.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2015 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/api/annotations.proto
-
-package annotations
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- reflect "reflect"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-var file_google_api_annotations_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.MethodOptions)(nil),
- ExtensionType: (*HttpRule)(nil),
- Field: 72295728,
- Name: "google.api.http",
- Tag: "bytes,72295728,opt,name=http",
- Filename: "google/api/annotations.proto",
- },
-}
-
-// Extension fields to descriptorpb.MethodOptions.
-var (
- // See `HttpRule`.
- //
- // optional google.api.HttpRule http = 72295728;
- E_Http = &file_google_api_annotations_proto_extTypes[0]
-)
-
-var File_google_api_annotations_proto protoreflect.FileDescriptor
-
-var file_google_api_annotations_proto_rawDesc = []byte{
- 0x0a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x15, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x3a, 0x4b, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x1e, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
- 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0xca, 0xbc, 0x22,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70,
- 0x42, 0x6e, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,
- 0x70, 0x69, 0x42, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
- 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70,
- 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e,
- 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49,
- 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_google_api_annotations_proto_goTypes = []interface{}{
- (*descriptorpb.MethodOptions)(nil), // 0: google.protobuf.MethodOptions
- (*HttpRule)(nil), // 1: google.api.HttpRule
-}
-var file_google_api_annotations_proto_depIdxs = []int32{
- 0, // 0: google.api.http:extendee -> google.protobuf.MethodOptions
- 1, // 1: google.api.http:type_name -> google.api.HttpRule
- 2, // [2:2] is the sub-list for method output_type
- 2, // [2:2] is the sub-list for method input_type
- 1, // [1:2] is the sub-list for extension type_name
- 0, // [0:1] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_api_annotations_proto_init() }
-func file_google_api_annotations_proto_init() {
- if File_google_api_annotations_proto != nil {
- return
- }
- file_google_api_http_proto_init()
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_api_annotations_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 0,
- NumExtensions: 1,
- NumServices: 0,
- },
- GoTypes: file_google_api_annotations_proto_goTypes,
- DependencyIndexes: file_google_api_annotations_proto_depIdxs,
- ExtensionInfos: file_google_api_annotations_proto_extTypes,
- }.Build()
- File_google_api_annotations_proto = out.File
- file_google_api_annotations_proto_rawDesc = nil
- file_google_api_annotations_proto_goTypes = nil
- file_google_api_annotations_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/api/client.pb.go b/gen/proto/google/api/client.pb.go
deleted file mode 100644
index c6ab0e9..0000000
--- a/gen/proto/google/api/client.pb.go
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/api/client.proto
-
-package annotations
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- reflect "reflect"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-var file_google_api_client_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.MethodOptions)(nil),
- ExtensionType: ([]string)(nil),
- Field: 1051,
- Name: "google.api.method_signature",
- Tag: "bytes,1051,rep,name=method_signature",
- Filename: "google/api/client.proto",
- },
- {
- ExtendedType: (*descriptorpb.ServiceOptions)(nil),
- ExtensionType: (*string)(nil),
- Field: 1049,
- Name: "google.api.default_host",
- Tag: "bytes,1049,opt,name=default_host",
- Filename: "google/api/client.proto",
- },
- {
- ExtendedType: (*descriptorpb.ServiceOptions)(nil),
- ExtensionType: (*string)(nil),
- Field: 1050,
- Name: "google.api.oauth_scopes",
- Tag: "bytes,1050,opt,name=oauth_scopes",
- Filename: "google/api/client.proto",
- },
-}
-
-// Extension fields to descriptorpb.MethodOptions.
-var (
- // A definition of a client library method signature.
- //
- // In client libraries, each proto RPC corresponds to one or more methods
- // which the end user is able to call, and calls the underlying RPC.
- // Normally, this method receives a single argument (a struct or instance
- // corresponding to the RPC request object). Defining this field will
- // add one or more overloads providing flattened or simpler method signatures
- // in some languages.
- //
- // The fields on the method signature are provided as a comma-separated
- // string.
- //
- // For example, the proto RPC and annotation:
- //
- // rpc CreateSubscription(CreateSubscriptionRequest)
- // returns (Subscription) {
- // option (google.api.method_signature) = "name,topic";
- // }
- //
- // Would add the following Java overload (in addition to the method accepting
- // the request object):
- //
- // public final Subscription createSubscription(String name, String topic)
- //
- // The following backwards-compatibility guidelines apply:
- //
- // * Adding this annotation to an unannotated method is backwards
- // compatible.
- // * Adding this annotation to a method which already has existing
- // method signature annotations is backwards compatible if and only if
- // the new method signature annotation is last in the sequence.
- // * Modifying or removing an existing method signature annotation is
- // a breaking change.
- // * Re-ordering existing method signature annotations is a breaking
- // change.
- //
- // repeated string method_signature = 1051;
- E_MethodSignature = &file_google_api_client_proto_extTypes[0]
-)
-
-// Extension fields to descriptorpb.ServiceOptions.
-var (
- // The hostname for this service.
- // This should be specified with no prefix or protocol.
- //
- // Example:
- //
- // service Foo {
- // option (google.api.default_host) = "foo.googleapi.com";
- // ...
- // }
- //
- // optional string default_host = 1049;
- E_DefaultHost = &file_google_api_client_proto_extTypes[1]
- // OAuth scopes needed for the client.
- //
- // Example:
- //
- // service Foo {
- // option (google.api.oauth_scopes) = \
- // "https://www.googleapis.com/auth/cloud-platform";
- // ...
- // }
- //
- // If there is more than one scope, use a comma-separated string:
- //
- // Example:
- //
- // service Foo {
- // option (google.api.oauth_scopes) = \
- // "https://www.googleapis.com/auth/cloud-platform,"
- // "https://www.googleapis.com/auth/monitoring";
- // ...
- // }
- //
- // optional string oauth_scopes = 1050;
- E_OauthScopes = &file_google_api_client_proto_extTypes[2]
-)
-
-var File_google_api_client_proto protoreflect.FileDescriptor
-
-var file_google_api_client_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
- 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3a, 0x4a, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
- 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x08, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
- 0x75, 0x72, 0x65, 0x3a, 0x43, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68,
- 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66,
- 0x61, 0x75, 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x43, 0x0a, 0x0c, 0x6f, 0x61, 0x75, 0x74,
- 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a, 0x08, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, 0x69, 0x0a,
- 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42,
- 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
- 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_google_api_client_proto_goTypes = []interface{}{
- (*descriptorpb.MethodOptions)(nil), // 0: google.protobuf.MethodOptions
- (*descriptorpb.ServiceOptions)(nil), // 1: google.protobuf.ServiceOptions
-}
-var file_google_api_client_proto_depIdxs = []int32{
- 0, // 0: google.api.method_signature:extendee -> google.protobuf.MethodOptions
- 1, // 1: google.api.default_host:extendee -> google.protobuf.ServiceOptions
- 1, // 2: google.api.oauth_scopes:extendee -> google.protobuf.ServiceOptions
- 3, // [3:3] is the sub-list for method output_type
- 3, // [3:3] is the sub-list for method input_type
- 3, // [3:3] is the sub-list for extension type_name
- 0, // [0:3] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_api_client_proto_init() }
-func file_google_api_client_proto_init() {
- if File_google_api_client_proto != nil {
- return
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_api_client_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 0,
- NumExtensions: 3,
- NumServices: 0,
- },
- GoTypes: file_google_api_client_proto_goTypes,
- DependencyIndexes: file_google_api_client_proto_depIdxs,
- ExtensionInfos: file_google_api_client_proto_extTypes,
- }.Build()
- File_google_api_client_proto = out.File
- file_google_api_client_proto_rawDesc = nil
- file_google_api_client_proto_goTypes = nil
- file_google_api_client_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/api/field_behavior.pb.go b/gen/proto/google/api/field_behavior.pb.go
deleted file mode 100644
index 302b88d..0000000
--- a/gen/proto/google/api/field_behavior.pb.go
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/api/field_behavior.proto
-
-package annotations
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// An indicator of the behavior of a given field (for example, that a field
-// is required in requests, or given as output but ignored as input).
-// This **does not** change the behavior in protocol buffers itself; it only
-// denotes the behavior and may affect how API tooling handles the field.
-//
-// Note: This enum **may** receive new values in the future.
-type FieldBehavior int32
-
-const (
- // Conventional default for enums. Do not use this.
- FieldBehavior_FIELD_BEHAVIOR_UNSPECIFIED FieldBehavior = 0
- // Specifically denotes a field as optional.
- // While all fields in protocol buffers are optional, this may be specified
- // for emphasis if appropriate.
- FieldBehavior_OPTIONAL FieldBehavior = 1
- // Denotes a field as required.
- // This indicates that the field **must** be provided as part of the request,
- // and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
- FieldBehavior_REQUIRED FieldBehavior = 2
- // Denotes a field as output only.
- // This indicates that the field is provided in responses, but including the
- // field in a request does nothing (the server *must* ignore it and
- // *must not* throw an error as a result of the field's presence).
- FieldBehavior_OUTPUT_ONLY FieldBehavior = 3
- // Denotes a field as input only.
- // This indicates that the field is provided in requests, and the
- // corresponding field is not included in output.
- FieldBehavior_INPUT_ONLY FieldBehavior = 4
- // Denotes a field as immutable.
- // This indicates that the field may be set once in a request to create a
- // resource, but may not be changed thereafter.
- FieldBehavior_IMMUTABLE FieldBehavior = 5
- // Denotes that a (repeated) field is an unordered list.
- // This indicates that the service may provide the elements of the list
- // in any arbitrary order, rather than the order the user originally
- // provided. Additionally, the list's order may or may not be stable.
- FieldBehavior_UNORDERED_LIST FieldBehavior = 6
- // Denotes that this field returns a non-empty default value if not set.
- // This indicates that if the user provides the empty value in a request,
- // a non-empty value will be returned. The user will not be aware of what
- // non-empty value to expect.
- FieldBehavior_NON_EMPTY_DEFAULT FieldBehavior = 7
-)
-
-// Enum value maps for FieldBehavior.
-var (
- FieldBehavior_name = map[int32]string{
- 0: "FIELD_BEHAVIOR_UNSPECIFIED",
- 1: "OPTIONAL",
- 2: "REQUIRED",
- 3: "OUTPUT_ONLY",
- 4: "INPUT_ONLY",
- 5: "IMMUTABLE",
- 6: "UNORDERED_LIST",
- 7: "NON_EMPTY_DEFAULT",
- }
- FieldBehavior_value = map[string]int32{
- "FIELD_BEHAVIOR_UNSPECIFIED": 0,
- "OPTIONAL": 1,
- "REQUIRED": 2,
- "OUTPUT_ONLY": 3,
- "INPUT_ONLY": 4,
- "IMMUTABLE": 5,
- "UNORDERED_LIST": 6,
- "NON_EMPTY_DEFAULT": 7,
- }
-)
-
-func (x FieldBehavior) Enum() *FieldBehavior {
- p := new(FieldBehavior)
- *p = x
- return p
-}
-
-func (x FieldBehavior) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FieldBehavior) Descriptor() protoreflect.EnumDescriptor {
- return file_google_api_field_behavior_proto_enumTypes[0].Descriptor()
-}
-
-func (FieldBehavior) Type() protoreflect.EnumType {
- return &file_google_api_field_behavior_proto_enumTypes[0]
-}
-
-func (x FieldBehavior) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use FieldBehavior.Descriptor instead.
-func (FieldBehavior) EnumDescriptor() ([]byte, []int) {
- return file_google_api_field_behavior_proto_rawDescGZIP(), []int{0}
-}
-
-var file_google_api_field_behavior_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.FieldOptions)(nil),
- ExtensionType: ([]FieldBehavior)(nil),
- Field: 1052,
- Name: "google.api.field_behavior",
- Tag: "varint,1052,rep,name=field_behavior,enum=google.api.FieldBehavior",
- Filename: "google/api/field_behavior.proto",
- },
-}
-
-// Extension fields to descriptorpb.FieldOptions.
-var (
- // A designation of a specific field behavior (required, output only, etc.)
- // in protobuf messages.
- //
- // Examples:
- //
- // string name = 1 [(google.api.field_behavior) = REQUIRED];
- // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
- // google.protobuf.Duration ttl = 1
- // [(google.api.field_behavior) = INPUT_ONLY];
- // google.protobuf.Timestamp expire_time = 1
- // [(google.api.field_behavior) = OUTPUT_ONLY,
- // (google.api.field_behavior) = IMMUTABLE];
- //
- // repeated google.api.FieldBehavior field_behavior = 1052;
- E_FieldBehavior = &file_google_api_field_behavior_proto_extTypes[0]
-)
-
-var File_google_api_field_behavior_proto protoreflect.FileDescriptor
-
-var file_google_api_field_behavior_proto_rawDesc = []byte{
- 0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65,
- 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a,
- 0xa6, 0x01, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
- 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56,
- 0x49, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
- 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12,
- 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a,
- 0x0b, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x0e,
- 0x0a, 0x0a, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x0d,
- 0x0a, 0x09, 0x49, 0x4d, 0x4d, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x12, 0x0a,
- 0x0e, 0x55, 0x4e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
- 0x06, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x4e, 0x5f, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x44,
- 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x07, 0x3a, 0x60, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c,
- 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
- 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9c, 0x08, 0x20, 0x03, 0x28, 0x0e,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69,
- 0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x0d, 0x66, 0x69, 0x65,
- 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x70, 0x0a, 0x0e, 0x63, 0x6f,
- 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x12, 0x46, 0x69,
- 0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,
- 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
- 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
- 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_api_field_behavior_proto_rawDescOnce sync.Once
- file_google_api_field_behavior_proto_rawDescData = file_google_api_field_behavior_proto_rawDesc
-)
-
-func file_google_api_field_behavior_proto_rawDescGZIP() []byte {
- file_google_api_field_behavior_proto_rawDescOnce.Do(func() {
- file_google_api_field_behavior_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_field_behavior_proto_rawDescData)
- })
- return file_google_api_field_behavior_proto_rawDescData
-}
-
-var file_google_api_field_behavior_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_google_api_field_behavior_proto_goTypes = []interface{}{
- (FieldBehavior)(0), // 0: google.api.FieldBehavior
- (*descriptorpb.FieldOptions)(nil), // 1: google.protobuf.FieldOptions
-}
-var file_google_api_field_behavior_proto_depIdxs = []int32{
- 1, // 0: google.api.field_behavior:extendee -> google.protobuf.FieldOptions
- 0, // 1: google.api.field_behavior:type_name -> google.api.FieldBehavior
- 2, // [2:2] is the sub-list for method output_type
- 2, // [2:2] is the sub-list for method input_type
- 1, // [1:2] is the sub-list for extension type_name
- 0, // [0:1] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_api_field_behavior_proto_init() }
-func file_google_api_field_behavior_proto_init() {
- if File_google_api_field_behavior_proto != nil {
- return
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_api_field_behavior_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 0,
- NumExtensions: 1,
- NumServices: 0,
- },
- GoTypes: file_google_api_field_behavior_proto_goTypes,
- DependencyIndexes: file_google_api_field_behavior_proto_depIdxs,
- EnumInfos: file_google_api_field_behavior_proto_enumTypes,
- ExtensionInfos: file_google_api_field_behavior_proto_extTypes,
- }.Build()
- File_google_api_field_behavior_proto = out.File
- file_google_api_field_behavior_proto_rawDesc = nil
- file_google_api_field_behavior_proto_goTypes = nil
- file_google_api_field_behavior_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/api/http.pb.go b/gen/proto/google/api/http.pb.go
deleted file mode 100644
index c1ec621..0000000
--- a/gen/proto/google/api/http.pb.go
+++ /dev/null
@@ -1,777 +0,0 @@
-// Copyright 2015 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/api/http.proto
-
-package annotations
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Defines the HTTP configuration for an API service. It contains a list of
-// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
-// to one or more HTTP REST API methods.
-type Http struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A list of HTTP configuration rules that apply to individual API methods.
- //
- // **NOTE:** All service configuration rules follow "last one wins" order.
- Rules []*HttpRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
- // When set to true, URL path parameters will be fully URI-decoded except in
- // cases of single segment matches in reserved expansion, where "%2F" will be
- // left encoded.
- //
- // The default behavior is to not decode RFC 6570 reserved characters in multi
- // segment matches.
- FullyDecodeReservedExpansion bool `protobuf:"varint,2,opt,name=fully_decode_reserved_expansion,json=fullyDecodeReservedExpansion,proto3" json:"fully_decode_reserved_expansion,omitempty"`
-}
-
-func (x *Http) Reset() {
- *x = Http{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_api_http_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Http) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Http) ProtoMessage() {}
-
-func (x *Http) ProtoReflect() protoreflect.Message {
- mi := &file_google_api_http_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Http.ProtoReflect.Descriptor instead.
-func (*Http) Descriptor() ([]byte, []int) {
- return file_google_api_http_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Http) GetRules() []*HttpRule {
- if x != nil {
- return x.Rules
- }
- return nil
-}
-
-func (x *Http) GetFullyDecodeReservedExpansion() bool {
- if x != nil {
- return x.FullyDecodeReservedExpansion
- }
- return false
-}
-
-// # gRPC Transcoding
-//
-// gRPC Transcoding is a feature for mapping between a gRPC method and one or
-// more HTTP REST endpoints. It allows developers to build a single API service
-// that supports both gRPC APIs and REST APIs. Many systems, including [Google
-// APIs](https://github.com/googleapis/googleapis),
-// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
-// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
-// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
-// and use it for large scale production services.
-//
-// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
-// how different portions of the gRPC request message are mapped to the URL
-// path, URL query parameters, and HTTP request body. It also controls how the
-// gRPC response message is mapped to the HTTP response body. `HttpRule` is
-// typically specified as an `google.api.http` annotation on the gRPC method.
-//
-// Each mapping specifies a URL path template and an HTTP method. The path
-// template may refer to one or more fields in the gRPC request message, as long
-// as each field is a non-repeated field with a primitive (non-message) type.
-// The path template controls how fields of the request message are mapped to
-// the URL path.
-//
-// Example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get: "/v1/{name=messages/*}"
-// };
-// }
-// }
-// message GetMessageRequest {
-// string name = 1; // Mapped to URL path.
-// }
-// message Message {
-// string text = 1; // The resource content.
-// }
-//
-// This enables an HTTP REST to gRPC mapping as below:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
-//
-// Any fields in the request message which are not bound by the path template
-// automatically become HTTP query parameters if there is no HTTP request body.
-// For example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get:"/v1/messages/{message_id}"
-// };
-// }
-// }
-// message GetMessageRequest {
-// message SubMessage {
-// string subfield = 1;
-// }
-// string message_id = 1; // Mapped to URL path.
-// int64 revision = 2; // Mapped to URL query parameter `revision`.
-// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
-// }
-//
-// This enables a HTTP JSON to RPC mapping as below:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
-// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
-// "foo"))`
-//
-// Note that fields which are mapped to URL query parameters must have a
-// primitive type or a repeated primitive type or a non-repeated message type.
-// In the case of a repeated type, the parameter can be repeated in the URL
-// as `...?param=A¶m=B`. In the case of a message type, each field of the
-// message is mapped to a separate parameter, such as
-// `...?foo.a=A&foo.b=B&foo.c=C`.
-//
-// For HTTP methods that allow a request body, the `body` field
-// specifies the mapping. Consider a REST update method on the
-// message resource collection:
-//
-// service Messaging {
-// rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// patch: "/v1/messages/{message_id}"
-// body: "message"
-// };
-// }
-// }
-// message UpdateMessageRequest {
-// string message_id = 1; // mapped to the URL
-// Message message = 2; // mapped to the body
-// }
-//
-// The following HTTP JSON to RPC mapping is enabled, where the
-// representation of the JSON in the request body is determined by
-// protos JSON encoding:
-//
-// HTTP | gRPC
-// -----|-----
-// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
-// "123456" message { text: "Hi!" })`
-//
-// The special name `*` can be used in the body mapping to define that
-// every field not bound by the path template should be mapped to the
-// request body. This enables the following alternative definition of
-// the update method:
-//
-// service Messaging {
-// rpc UpdateMessage(Message) returns (Message) {
-// option (google.api.http) = {
-// patch: "/v1/messages/{message_id}"
-// body: "*"
-// };
-// }
-// }
-// message Message {
-// string message_id = 1;
-// string text = 2;
-// }
-//
-//
-// The following HTTP JSON to RPC mapping is enabled:
-//
-// HTTP | gRPC
-// -----|-----
-// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
-// "123456" text: "Hi!")`
-//
-// Note that when using `*` in the body mapping, it is not possible to
-// have HTTP parameters, as all fields not bound by the path end in
-// the body. This makes this option more rarely used in practice when
-// defining REST APIs. The common usage of `*` is in custom methods
-// which don't use the URL at all for transferring data.
-//
-// It is possible to define multiple HTTP methods for one RPC by using
-// the `additional_bindings` option. Example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get: "/v1/messages/{message_id}"
-// additional_bindings {
-// get: "/v1/users/{user_id}/messages/{message_id}"
-// }
-// };
-// }
-// }
-// message GetMessageRequest {
-// string message_id = 1;
-// string user_id = 2;
-// }
-//
-// This enables the following two alternative HTTP JSON to RPC mappings:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
-// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
-// "123456")`
-//
-// ## Rules for HTTP mapping
-//
-// 1. Leaf request fields (recursive expansion nested messages in the request
-// message) are classified into three categories:
-// - Fields referred by the path template. They are passed via the URL path.
-// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They are passed via the HTTP
-// request body.
-// - All other fields are passed via the URL query parameters, and the
-// parameter name is the field path in the request message. A repeated
-// field can be represented as multiple query parameters under the same
-// name.
-// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL query parameter, all fields
-// are passed via URL path and HTTP request body.
-// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP request body, all
-// fields are passed via URL path and URL query parameters.
-//
-// ### Path template syntax
-//
-// Template = "/" Segments [ Verb ] ;
-// Segments = Segment { "/" Segment } ;
-// Segment = "*" | "**" | LITERAL | Variable ;
-// Variable = "{" FieldPath [ "=" Segments ] "}" ;
-// FieldPath = IDENT { "." IDENT } ;
-// Verb = ":" LITERAL ;
-//
-// The syntax `*` matches a single URL path segment. The syntax `**` matches
-// zero or more URL path segments, which must be the last part of the URL path
-// except the `Verb`.
-//
-// The syntax `Variable` matches part of the URL path as specified by its
-// template. A variable template must not contain other variables. If a variable
-// matches a single path segment, its template may be omitted, e.g. `{var}`
-// is equivalent to `{var=*}`.
-//
-// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
-// contains any reserved character, such characters should be percent-encoded
-// before the matching.
-//
-// If a variable contains exactly one path segment, such as `"{var}"` or
-// `"{var=*}"`, when such a variable is expanded into a URL path on the client
-// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
-// server side does the reverse decoding. Such variables show up in the
-// [Discovery
-// Document](https://developers.google.com/discovery/v1/reference/apis) as
-// `{var}`.
-//
-// If a variable contains multiple path segments, such as `"{var=foo/*}"`
-// or `"{var=**}"`, when such a variable is expanded into a URL path on the
-// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
-// The server side does the reverse decoding, except "%2F" and "%2f" are left
-// unchanged. Such variables show up in the
-// [Discovery
-// Document](https://developers.google.com/discovery/v1/reference/apis) as
-// `{+var}`.
-//
-// ## Using gRPC API Service Configuration
-//
-// gRPC API Service Configuration (service config) is a configuration language
-// for configuring a gRPC service to become a user-facing product. The
-// service config is simply the YAML representation of the `google.api.Service`
-// proto message.
-//
-// As an alternative to annotating your proto file, you can configure gRPC
-// transcoding in your service config YAML files. You do this by specifying a
-// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
-// effect as the proto annotation. This can be particularly useful if you
-// have a proto that is reused in multiple services. Note that any transcoding
-// specified in the service config will override any matching transcoding
-// configuration in the proto.
-//
-// Example:
-//
-// http:
-// rules:
-// # Selects a gRPC method and applies HttpRule to it.
-// - selector: example.v1.Messaging.GetMessage
-// get: /v1/messages/{message_id}/{sub.subfield}
-//
-// ## Special notes
-//
-// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
-// proto to JSON conversion must follow the [proto3
-// specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
-//
-// While the single segment variable follows the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
-// Expansion, the multi segment variable **does not** follow RFC 6570 Section
-// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
-// does not expand special characters like `?` and `#`, which would lead
-// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
-// for multi segment variables.
-//
-// The path variables **must not** refer to any repeated or mapped field,
-// because client libraries are not capable of handling such variable expansion.
-//
-// The path variables **must not** capture the leading "/" character. The reason
-// is that the most common use case "{var}" does not capture the leading "/"
-// character. For consistency, all path variables must share the same behavior.
-//
-// Repeated message fields must not be mapped to URL query parameters, because
-// no client library can support such complicated mapping.
-//
-// If an API needs to use a JSON array for request or response body, it can map
-// the request or response body to a repeated field. However, some gRPC
-// Transcoding implementations may not support this feature.
-type HttpRule struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Selects a method to which this rule applies.
- //
- // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
- Selector string `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
- // Determines the URL pattern is matched by this rules. This pattern can be
- // used with any of the {get|put|post|delete|patch} methods. A custom method
- // can be defined using the 'custom' field.
- //
- // Types that are assignable to Pattern:
- // *HttpRule_Get
- // *HttpRule_Put
- // *HttpRule_Post
- // *HttpRule_Delete
- // *HttpRule_Patch
- // *HttpRule_Custom
- Pattern isHttpRule_Pattern `protobuf_oneof:"pattern"`
- // The name of the request field whose value is mapped to the HTTP request
- // body, or `*` for mapping all request fields not captured by the path
- // pattern to the HTTP body, or omitted for not having any HTTP request body.
- //
- // NOTE: the referred field must be present at the top-level of the request
- // message type.
- Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"`
- // Optional. The name of the response field whose value is mapped to the HTTP
- // response body. When omitted, the entire response message will be used
- // as the HTTP response body.
- //
- // NOTE: The referred field must be present at the top-level of the response
- // message type.
- ResponseBody string `protobuf:"bytes,12,opt,name=response_body,json=responseBody,proto3" json:"response_body,omitempty"`
- // Additional HTTP bindings for the selector. Nested bindings must
- // not contain an `additional_bindings` field themselves (that is,
- // the nesting may only be one level deep).
- AdditionalBindings []*HttpRule `protobuf:"bytes,11,rep,name=additional_bindings,json=additionalBindings,proto3" json:"additional_bindings,omitempty"`
-}
-
-func (x *HttpRule) Reset() {
- *x = HttpRule{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_api_http_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HttpRule) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HttpRule) ProtoMessage() {}
-
-func (x *HttpRule) ProtoReflect() protoreflect.Message {
- mi := &file_google_api_http_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HttpRule.ProtoReflect.Descriptor instead.
-func (*HttpRule) Descriptor() ([]byte, []int) {
- return file_google_api_http_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *HttpRule) GetSelector() string {
- if x != nil {
- return x.Selector
- }
- return ""
-}
-
-func (m *HttpRule) GetPattern() isHttpRule_Pattern {
- if m != nil {
- return m.Pattern
- }
- return nil
-}
-
-func (x *HttpRule) GetGet() string {
- if x, ok := x.GetPattern().(*HttpRule_Get); ok {
- return x.Get
- }
- return ""
-}
-
-func (x *HttpRule) GetPut() string {
- if x, ok := x.GetPattern().(*HttpRule_Put); ok {
- return x.Put
- }
- return ""
-}
-
-func (x *HttpRule) GetPost() string {
- if x, ok := x.GetPattern().(*HttpRule_Post); ok {
- return x.Post
- }
- return ""
-}
-
-func (x *HttpRule) GetDelete() string {
- if x, ok := x.GetPattern().(*HttpRule_Delete); ok {
- return x.Delete
- }
- return ""
-}
-
-func (x *HttpRule) GetPatch() string {
- if x, ok := x.GetPattern().(*HttpRule_Patch); ok {
- return x.Patch
- }
- return ""
-}
-
-func (x *HttpRule) GetCustom() *CustomHttpPattern {
- if x, ok := x.GetPattern().(*HttpRule_Custom); ok {
- return x.Custom
- }
- return nil
-}
-
-func (x *HttpRule) GetBody() string {
- if x != nil {
- return x.Body
- }
- return ""
-}
-
-func (x *HttpRule) GetResponseBody() string {
- if x != nil {
- return x.ResponseBody
- }
- return ""
-}
-
-func (x *HttpRule) GetAdditionalBindings() []*HttpRule {
- if x != nil {
- return x.AdditionalBindings
- }
- return nil
-}
-
-type isHttpRule_Pattern interface {
- isHttpRule_Pattern()
-}
-
-type HttpRule_Get struct {
- // Maps to HTTP GET. Used for listing and getting information about
- // resources.
- Get string `protobuf:"bytes,2,opt,name=get,proto3,oneof"`
-}
-
-type HttpRule_Put struct {
- // Maps to HTTP PUT. Used for replacing a resource.
- Put string `protobuf:"bytes,3,opt,name=put,proto3,oneof"`
-}
-
-type HttpRule_Post struct {
- // Maps to HTTP POST. Used for creating a resource or performing an action.
- Post string `protobuf:"bytes,4,opt,name=post,proto3,oneof"`
-}
-
-type HttpRule_Delete struct {
- // Maps to HTTP DELETE. Used for deleting a resource.
- Delete string `protobuf:"bytes,5,opt,name=delete,proto3,oneof"`
-}
-
-type HttpRule_Patch struct {
- // Maps to HTTP PATCH. Used for updating a resource.
- Patch string `protobuf:"bytes,6,opt,name=patch,proto3,oneof"`
-}
-
-type HttpRule_Custom struct {
- // The custom pattern is used for specifying an HTTP method that is not
- // included in the `pattern` field, such as HEAD, or "*" to leave the
- // HTTP method unspecified for this rule. The wild-card rule is useful
- // for services that provide content to Web (HTML) clients.
- Custom *CustomHttpPattern `protobuf:"bytes,8,opt,name=custom,proto3,oneof"`
-}
-
-func (*HttpRule_Get) isHttpRule_Pattern() {}
-
-func (*HttpRule_Put) isHttpRule_Pattern() {}
-
-func (*HttpRule_Post) isHttpRule_Pattern() {}
-
-func (*HttpRule_Delete) isHttpRule_Pattern() {}
-
-func (*HttpRule_Patch) isHttpRule_Pattern() {}
-
-func (*HttpRule_Custom) isHttpRule_Pattern() {}
-
-// A custom pattern is used for defining custom HTTP verb.
-type CustomHttpPattern struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of this custom HTTP verb.
- Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
- // The path matched by this custom verb.
- Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
-}
-
-func (x *CustomHttpPattern) Reset() {
- *x = CustomHttpPattern{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_api_http_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CustomHttpPattern) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CustomHttpPattern) ProtoMessage() {}
-
-func (x *CustomHttpPattern) ProtoReflect() protoreflect.Message {
- mi := &file_google_api_http_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CustomHttpPattern.ProtoReflect.Descriptor instead.
-func (*CustomHttpPattern) Descriptor() ([]byte, []int) {
- return file_google_api_http_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CustomHttpPattern) GetKind() string {
- if x != nil {
- return x.Kind
- }
- return ""
-}
-
-func (x *CustomHttpPattern) GetPath() string {
- if x != nil {
- return x.Path
- }
- return ""
-}
-
-var File_google_api_http_proto protoreflect.FileDescriptor
-
-var file_google_api_http_proto_rawDesc = []byte{
- 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74,
- 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x61, 0x70, 0x69, 0x22, 0x79, 0x0a, 0x04, 0x48, 0x74, 0x74, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x72,
- 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65,
- 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x66, 0x75, 0x6c, 0x6c, 0x79,
- 0x5f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
- 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x1c, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xda,
- 0x02, 0x0a, 0x08, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x70,
- 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x74, 0x12,
- 0x14, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
- 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
- 0x16, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f,
- 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50,
- 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
- 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x62, 0x6f, 0x64, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x45, 0x0a, 0x13, 0x61, 0x64, 0x64,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x12, 0x61, 0x64,
- 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x3b, 0x0a, 0x11, 0x43,
- 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
- 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x6a, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x09, 0x48, 0x74, 0x74, 0x70,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04,
- 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_api_http_proto_rawDescOnce sync.Once
- file_google_api_http_proto_rawDescData = file_google_api_http_proto_rawDesc
-)
-
-func file_google_api_http_proto_rawDescGZIP() []byte {
- file_google_api_http_proto_rawDescOnce.Do(func() {
- file_google_api_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_http_proto_rawDescData)
- })
- return file_google_api_http_proto_rawDescData
-}
-
-var file_google_api_http_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_google_api_http_proto_goTypes = []interface{}{
- (*Http)(nil), // 0: google.api.Http
- (*HttpRule)(nil), // 1: google.api.HttpRule
- (*CustomHttpPattern)(nil), // 2: google.api.CustomHttpPattern
-}
-var file_google_api_http_proto_depIdxs = []int32{
- 1, // 0: google.api.Http.rules:type_name -> google.api.HttpRule
- 2, // 1: google.api.HttpRule.custom:type_name -> google.api.CustomHttpPattern
- 1, // 2: google.api.HttpRule.additional_bindings:type_name -> google.api.HttpRule
- 3, // [3:3] is the sub-list for method output_type
- 3, // [3:3] is the sub-list for method input_type
- 3, // [3:3] is the sub-list for extension type_name
- 3, // [3:3] is the sub-list for extension extendee
- 0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_google_api_http_proto_init() }
-func file_google_api_http_proto_init() {
- if File_google_api_http_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_google_api_http_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Http); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_api_http_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HttpRule); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_api_http_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CustomHttpPattern); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_google_api_http_proto_msgTypes[1].OneofWrappers = []interface{}{
- (*HttpRule_Get)(nil),
- (*HttpRule_Put)(nil),
- (*HttpRule_Post)(nil),
- (*HttpRule_Delete)(nil),
- (*HttpRule_Patch)(nil),
- (*HttpRule_Custom)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_api_http_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_google_api_http_proto_goTypes,
- DependencyIndexes: file_google_api_http_proto_depIdxs,
- MessageInfos: file_google_api_http_proto_msgTypes,
- }.Build()
- File_google_api_http_proto = out.File
- file_google_api_http_proto_rawDesc = nil
- file_google_api_http_proto_goTypes = nil
- file_google_api_http_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/api/resource.pb.go b/gen/proto/google/api/resource.pb.go
deleted file mode 100644
index 34611a6..0000000
--- a/gen/proto/google/api/resource.pb.go
+++ /dev/null
@@ -1,654 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/api/resource.proto
-
-package annotations
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// A description of the historical or future-looking state of the
-// resource pattern.
-type ResourceDescriptor_History int32
-
-const (
- // The "unset" value.
- ResourceDescriptor_HISTORY_UNSPECIFIED ResourceDescriptor_History = 0
- // The resource originally had one pattern and launched as such, and
- // additional patterns were added later.
- ResourceDescriptor_ORIGINALLY_SINGLE_PATTERN ResourceDescriptor_History = 1
- // The resource has one pattern, but the API owner expects to add more
- // later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
- // that from being necessary once there are multiple patterns.)
- ResourceDescriptor_FUTURE_MULTI_PATTERN ResourceDescriptor_History = 2
-)
-
-// Enum value maps for ResourceDescriptor_History.
-var (
- ResourceDescriptor_History_name = map[int32]string{
- 0: "HISTORY_UNSPECIFIED",
- 1: "ORIGINALLY_SINGLE_PATTERN",
- 2: "FUTURE_MULTI_PATTERN",
- }
- ResourceDescriptor_History_value = map[string]int32{
- "HISTORY_UNSPECIFIED": 0,
- "ORIGINALLY_SINGLE_PATTERN": 1,
- "FUTURE_MULTI_PATTERN": 2,
- }
-)
-
-func (x ResourceDescriptor_History) Enum() *ResourceDescriptor_History {
- p := new(ResourceDescriptor_History)
- *p = x
- return p
-}
-
-func (x ResourceDescriptor_History) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ResourceDescriptor_History) Descriptor() protoreflect.EnumDescriptor {
- return file_google_api_resource_proto_enumTypes[0].Descriptor()
-}
-
-func (ResourceDescriptor_History) Type() protoreflect.EnumType {
- return &file_google_api_resource_proto_enumTypes[0]
-}
-
-func (x ResourceDescriptor_History) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ResourceDescriptor_History.Descriptor instead.
-func (ResourceDescriptor_History) EnumDescriptor() ([]byte, []int) {
- return file_google_api_resource_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// A flag representing a specific style that a resource claims to conform to.
-type ResourceDescriptor_Style int32
-
-const (
- // The unspecified value. Do not use.
- ResourceDescriptor_STYLE_UNSPECIFIED ResourceDescriptor_Style = 0
- // This resource is intended to be "declarative-friendly".
- //
- // Declarative-friendly resources must be more strictly consistent, and
- // setting this to true communicates to tools that this resource should
- // adhere to declarative-friendly expectations.
- //
- // Note: This is used by the API linter (linter.aip.dev) to enable
- // additional checks.
- ResourceDescriptor_DECLARATIVE_FRIENDLY ResourceDescriptor_Style = 1
-)
-
-// Enum value maps for ResourceDescriptor_Style.
-var (
- ResourceDescriptor_Style_name = map[int32]string{
- 0: "STYLE_UNSPECIFIED",
- 1: "DECLARATIVE_FRIENDLY",
- }
- ResourceDescriptor_Style_value = map[string]int32{
- "STYLE_UNSPECIFIED": 0,
- "DECLARATIVE_FRIENDLY": 1,
- }
-)
-
-func (x ResourceDescriptor_Style) Enum() *ResourceDescriptor_Style {
- p := new(ResourceDescriptor_Style)
- *p = x
- return p
-}
-
-func (x ResourceDescriptor_Style) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ResourceDescriptor_Style) Descriptor() protoreflect.EnumDescriptor {
- return file_google_api_resource_proto_enumTypes[1].Descriptor()
-}
-
-func (ResourceDescriptor_Style) Type() protoreflect.EnumType {
- return &file_google_api_resource_proto_enumTypes[1]
-}
-
-func (x ResourceDescriptor_Style) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ResourceDescriptor_Style.Descriptor instead.
-func (ResourceDescriptor_Style) EnumDescriptor() ([]byte, []int) {
- return file_google_api_resource_proto_rawDescGZIP(), []int{0, 1}
-}
-
-// A simple descriptor of a resource type.
-//
-// ResourceDescriptor annotates a resource message (either by means of a
-// protobuf annotation or use in the service config), and associates the
-// resource's schema, the resource type, and the pattern of the resource name.
-//
-// Example:
-//
-// message Topic {
-// // Indicates this message defines a resource schema.
-// // Declares the resource type in the format of {service}/{kind}.
-// // For Kubernetes resources, the format is {api group}/{kind}.
-// option (google.api.resource) = {
-// type: "pubsub.googleapis.com/Topic"
-// pattern: "projects/{project}/topics/{topic}"
-// };
-// }
-//
-// The ResourceDescriptor Yaml config will look like:
-//
-// resources:
-// - type: "pubsub.googleapis.com/Topic"
-// pattern: "projects/{project}/topics/{topic}"
-//
-// Sometimes, resources have multiple patterns, typically because they can
-// live under multiple parents.
-//
-// Example:
-//
-// message LogEntry {
-// option (google.api.resource) = {
-// type: "logging.googleapis.com/LogEntry"
-// pattern: "projects/{project}/logs/{log}"
-// pattern: "folders/{folder}/logs/{log}"
-// pattern: "organizations/{organization}/logs/{log}"
-// pattern: "billingAccounts/{billing_account}/logs/{log}"
-// };
-// }
-//
-// The ResourceDescriptor Yaml config will look like:
-//
-// resources:
-// - type: 'logging.googleapis.com/LogEntry'
-// pattern: "projects/{project}/logs/{log}"
-// pattern: "folders/{folder}/logs/{log}"
-// pattern: "organizations/{organization}/logs/{log}"
-// pattern: "billingAccounts/{billing_account}/logs/{log}"
-type ResourceDescriptor struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The resource type. It must be in the format of
- // {service_name}/{resource_type_kind}. The `resource_type_kind` must be
- // singular and must not include version numbers.
- //
- // Example: `storage.googleapis.com/Bucket`
- //
- // The value of the resource_type_kind must follow the regular expression
- // /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
- // should use PascalCase (UpperCamelCase). The maximum number of
- // characters allowed for the `resource_type_kind` is 100.
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
- // Optional. The relative resource name pattern associated with this resource
- // type. The DNS prefix of the full resource name shouldn't be specified here.
- //
- // The path pattern must follow the syntax, which aligns with HTTP binding
- // syntax:
- //
- // Template = Segment { "/" Segment } ;
- // Segment = LITERAL | Variable ;
- // Variable = "{" LITERAL "}" ;
- //
- // Examples:
- //
- // - "projects/{project}/topics/{topic}"
- // - "projects/{project}/knowledgeBases/{knowledge_base}"
- //
- // The components in braces correspond to the IDs for each resource in the
- // hierarchy. It is expected that, if multiple patterns are provided,
- // the same component name (e.g. "project") refers to IDs of the same
- // type of resource.
- Pattern []string `protobuf:"bytes,2,rep,name=pattern,proto3" json:"pattern,omitempty"`
- // Optional. The field on the resource that designates the resource name
- // field. If omitted, this is assumed to be "name".
- NameField string `protobuf:"bytes,3,opt,name=name_field,json=nameField,proto3" json:"name_field,omitempty"`
- // Optional. The historical or future-looking state of the resource pattern.
- //
- // Example:
- //
- // // The InspectTemplate message originally only supported resource
- // // names with organization, and project was added later.
- // message InspectTemplate {
- // option (google.api.resource) = {
- // type: "dlp.googleapis.com/InspectTemplate"
- // pattern:
- // "organizations/{organization}/inspectTemplates/{inspect_template}"
- // pattern: "projects/{project}/inspectTemplates/{inspect_template}"
- // history: ORIGINALLY_SINGLE_PATTERN
- // };
- // }
- History ResourceDescriptor_History `protobuf:"varint,4,opt,name=history,proto3,enum=google.api.ResourceDescriptor_History" json:"history,omitempty"`
- // The plural name used in the resource name and permission names, such as
- // 'projects' for the resource name of 'projects/{project}' and the permission
- // name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same
- // concept of the `plural` field in k8s CRD spec
- // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
- //
- // Note: The plural form is required even for singleton resources. See
- // https://aip.dev/156
- Plural string `protobuf:"bytes,5,opt,name=plural,proto3" json:"plural,omitempty"`
- // The same concept of the `singular` field in k8s CRD spec
- // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
- // Such as "project" for the `resourcemanager.googleapis.com/Project` type.
- Singular string `protobuf:"bytes,6,opt,name=singular,proto3" json:"singular,omitempty"`
- // Style flag(s) for this resource.
- // These indicate that a resource is expected to conform to a given
- // style. See the specific style flags for additional information.
- Style []ResourceDescriptor_Style `protobuf:"varint,10,rep,packed,name=style,proto3,enum=google.api.ResourceDescriptor_Style" json:"style,omitempty"`
-}
-
-func (x *ResourceDescriptor) Reset() {
- *x = ResourceDescriptor{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_api_resource_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ResourceDescriptor) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ResourceDescriptor) ProtoMessage() {}
-
-func (x *ResourceDescriptor) ProtoReflect() protoreflect.Message {
- mi := &file_google_api_resource_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ResourceDescriptor.ProtoReflect.Descriptor instead.
-func (*ResourceDescriptor) Descriptor() ([]byte, []int) {
- return file_google_api_resource_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ResourceDescriptor) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-func (x *ResourceDescriptor) GetPattern() []string {
- if x != nil {
- return x.Pattern
- }
- return nil
-}
-
-func (x *ResourceDescriptor) GetNameField() string {
- if x != nil {
- return x.NameField
- }
- return ""
-}
-
-func (x *ResourceDescriptor) GetHistory() ResourceDescriptor_History {
- if x != nil {
- return x.History
- }
- return ResourceDescriptor_HISTORY_UNSPECIFIED
-}
-
-func (x *ResourceDescriptor) GetPlural() string {
- if x != nil {
- return x.Plural
- }
- return ""
-}
-
-func (x *ResourceDescriptor) GetSingular() string {
- if x != nil {
- return x.Singular
- }
- return ""
-}
-
-func (x *ResourceDescriptor) GetStyle() []ResourceDescriptor_Style {
- if x != nil {
- return x.Style
- }
- return nil
-}
-
-// Defines a proto annotation that describes a string field that refers to
-// an API resource.
-type ResourceReference struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The resource type that the annotated field references.
- //
- // Example:
- //
- // message Subscription {
- // string topic = 2 [(google.api.resource_reference) = {
- // type: "pubsub.googleapis.com/Topic"
- // }];
- // }
- //
- // Occasionally, a field may reference an arbitrary resource. In this case,
- // APIs use the special value * in their resource reference.
- //
- // Example:
- //
- // message GetIamPolicyRequest {
- // string resource = 2 [(google.api.resource_reference) = {
- // type: "*"
- // }];
- // }
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
- // The resource type of a child collection that the annotated field
- // references. This is useful for annotating the `parent` field that
- // doesn't have a fixed resource type.
- //
- // Example:
- //
- // message ListLogEntriesRequest {
- // string parent = 1 [(google.api.resource_reference) = {
- // child_type: "logging.googleapis.com/LogEntry"
- // };
- // }
- ChildType string `protobuf:"bytes,2,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"`
-}
-
-func (x *ResourceReference) Reset() {
- *x = ResourceReference{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_api_resource_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ResourceReference) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ResourceReference) ProtoMessage() {}
-
-func (x *ResourceReference) ProtoReflect() protoreflect.Message {
- mi := &file_google_api_resource_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ResourceReference.ProtoReflect.Descriptor instead.
-func (*ResourceReference) Descriptor() ([]byte, []int) {
- return file_google_api_resource_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ResourceReference) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-func (x *ResourceReference) GetChildType() string {
- if x != nil {
- return x.ChildType
- }
- return ""
-}
-
-var file_google_api_resource_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.FieldOptions)(nil),
- ExtensionType: (*ResourceReference)(nil),
- Field: 1055,
- Name: "google.api.resource_reference",
- Tag: "bytes,1055,opt,name=resource_reference",
- Filename: "google/api/resource.proto",
- },
- {
- ExtendedType: (*descriptorpb.FileOptions)(nil),
- ExtensionType: ([]*ResourceDescriptor)(nil),
- Field: 1053,
- Name: "google.api.resource_definition",
- Tag: "bytes,1053,rep,name=resource_definition",
- Filename: "google/api/resource.proto",
- },
- {
- ExtendedType: (*descriptorpb.MessageOptions)(nil),
- ExtensionType: (*ResourceDescriptor)(nil),
- Field: 1053,
- Name: "google.api.resource",
- Tag: "bytes,1053,opt,name=resource",
- Filename: "google/api/resource.proto",
- },
-}
-
-// Extension fields to descriptorpb.FieldOptions.
-var (
- // An annotation that describes a resource reference, see
- // [ResourceReference][].
- //
- // optional google.api.ResourceReference resource_reference = 1055;
- E_ResourceReference = &file_google_api_resource_proto_extTypes[0]
-)
-
-// Extension fields to descriptorpb.FileOptions.
-var (
- // An annotation that describes a resource definition without a corresponding
- // message; see [ResourceDescriptor][].
- //
- // repeated google.api.ResourceDescriptor resource_definition = 1053;
- E_ResourceDefinition = &file_google_api_resource_proto_extTypes[1]
-)
-
-// Extension fields to descriptorpb.MessageOptions.
-var (
- // An annotation that describes a resource definition, see
- // [ResourceDescriptor][].
- //
- // optional google.api.ResourceDescriptor resource = 1053;
- E_Resource = &file_google_api_resource_proto_extTypes[2]
-)
-
-var File_google_api_resource_proto protoreflect.FileDescriptor
-
-var file_google_api_resource_proto_rawDesc = []byte{
- 0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x03, 0x0a, 0x12, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
- 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1d,
- 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x40, 0x0a,
- 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x48,
- 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
- 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x67, 0x75,
- 0x6c, 0x61, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x6e, 0x67, 0x75,
- 0x6c, 0x61, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x03,
- 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x6f, 0x72, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x22,
- 0x5b, 0x0a, 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x49,
- 0x53, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
- 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x4c,
- 0x59, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e,
- 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x55, 0x4c,
- 0x54, 0x49, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x05,
- 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55,
- 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14,
- 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x46, 0x52, 0x49, 0x45,
- 0x4e, 0x44, 0x4c, 0x59, 0x10, 0x01, 0x22, 0x46, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x6c,
- 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x18, 0x9f, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x3a, 0x6e, 0x0a, 0x13,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x18, 0x9d, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x5c, 0x0a, 0x08,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9d, 0x08, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
- 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6e, 0x0a, 0x0e, 0x63, 0x6f,
- 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
- 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
-}
-
-var (
- file_google_api_resource_proto_rawDescOnce sync.Once
- file_google_api_resource_proto_rawDescData = file_google_api_resource_proto_rawDesc
-)
-
-func file_google_api_resource_proto_rawDescGZIP() []byte {
- file_google_api_resource_proto_rawDescOnce.Do(func() {
- file_google_api_resource_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_resource_proto_rawDescData)
- })
- return file_google_api_resource_proto_rawDescData
-}
-
-var file_google_api_resource_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_google_api_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_google_api_resource_proto_goTypes = []interface{}{
- (ResourceDescriptor_History)(0), // 0: google.api.ResourceDescriptor.History
- (ResourceDescriptor_Style)(0), // 1: google.api.ResourceDescriptor.Style
- (*ResourceDescriptor)(nil), // 2: google.api.ResourceDescriptor
- (*ResourceReference)(nil), // 3: google.api.ResourceReference
- (*descriptorpb.FieldOptions)(nil), // 4: google.protobuf.FieldOptions
- (*descriptorpb.FileOptions)(nil), // 5: google.protobuf.FileOptions
- (*descriptorpb.MessageOptions)(nil), // 6: google.protobuf.MessageOptions
-}
-var file_google_api_resource_proto_depIdxs = []int32{
- 0, // 0: google.api.ResourceDescriptor.history:type_name -> google.api.ResourceDescriptor.History
- 1, // 1: google.api.ResourceDescriptor.style:type_name -> google.api.ResourceDescriptor.Style
- 4, // 2: google.api.resource_reference:extendee -> google.protobuf.FieldOptions
- 5, // 3: google.api.resource_definition:extendee -> google.protobuf.FileOptions
- 6, // 4: google.api.resource:extendee -> google.protobuf.MessageOptions
- 3, // 5: google.api.resource_reference:type_name -> google.api.ResourceReference
- 2, // 6: google.api.resource_definition:type_name -> google.api.ResourceDescriptor
- 2, // 7: google.api.resource:type_name -> google.api.ResourceDescriptor
- 8, // [8:8] is the sub-list for method output_type
- 8, // [8:8] is the sub-list for method input_type
- 5, // [5:8] is the sub-list for extension type_name
- 2, // [2:5] is the sub-list for extension extendee
- 0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_google_api_resource_proto_init() }
-func file_google_api_resource_proto_init() {
- if File_google_api_resource_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_google_api_resource_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceDescriptor); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_api_resource_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResourceReference); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_api_resource_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 2,
- NumExtensions: 3,
- NumServices: 0,
- },
- GoTypes: file_google_api_resource_proto_goTypes,
- DependencyIndexes: file_google_api_resource_proto_depIdxs,
- EnumInfos: file_google_api_resource_proto_enumTypes,
- MessageInfos: file_google_api_resource_proto_msgTypes,
- ExtensionInfos: file_google_api_resource_proto_extTypes,
- }.Build()
- File_google_api_resource_proto = out.File
- file_google_api_resource_proto_rawDesc = nil
- file_google_api_resource_proto_goTypes = nil
- file_google_api_resource_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/cloud/security/privateca/v1/resources.pb.go b/gen/proto/google/cloud/security/privateca/v1/resources.pb.go
deleted file mode 100644
index 1f872f3..0000000
--- a/gen/proto/google/cloud/security/privateca/v1/resources.pb.go
+++ /dev/null
@@ -1,5329 +0,0 @@
-// Copyright 2022 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/cloud/security/privateca/v1/resources.proto
-
-package privateca
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- expr "google.golang.org/genproto/googleapis/type/expr"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// A [RevocationReason][google.cloud.security.privateca.v1.RevocationReason] indicates whether a [Certificate][google.cloud.security.privateca.v1.Certificate] has been revoked,
-// and the reason for revocation. These correspond to standard revocation
-// reasons from RFC 5280. Note that the enum labels and values in this
-// definition are not the same ASN.1 values defined in RFC 5280. These values
-// will be translated to the correct ASN.1 values when a CRL is created.
-type RevocationReason int32
-
-const (
- // Default unspecified value. This value does indicate that a [Certificate][google.cloud.security.privateca.v1.Certificate]
- // has been revoked, but that a reason has not been recorded.
- RevocationReason_REVOCATION_REASON_UNSPECIFIED RevocationReason = 0
- // Key material for this [Certificate][google.cloud.security.privateca.v1.Certificate] may have leaked.
- RevocationReason_KEY_COMPROMISE RevocationReason = 1
- // The key material for a certificate authority in the issuing path may have
- // leaked.
- RevocationReason_CERTIFICATE_AUTHORITY_COMPROMISE RevocationReason = 2
- // The subject or other attributes in this [Certificate][google.cloud.security.privateca.v1.Certificate] have changed.
- RevocationReason_AFFILIATION_CHANGED RevocationReason = 3
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] has been superseded.
- RevocationReason_SUPERSEDED RevocationReason = 4
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] or entities in the issuing path have ceased to
- // operate.
- RevocationReason_CESSATION_OF_OPERATION RevocationReason = 5
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] should not be considered valid, it is expected that it
- // may become valid in the future.
- RevocationReason_CERTIFICATE_HOLD RevocationReason = 6
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] no longer has permission to assert the listed
- // attributes.
- RevocationReason_PRIVILEGE_WITHDRAWN RevocationReason = 7
- // The authority which determines appropriate attributes for a [Certificate][google.cloud.security.privateca.v1.Certificate]
- // may have been compromised.
- RevocationReason_ATTRIBUTE_AUTHORITY_COMPROMISE RevocationReason = 8
-)
-
-// Enum value maps for RevocationReason.
-var (
- RevocationReason_name = map[int32]string{
- 0: "REVOCATION_REASON_UNSPECIFIED",
- 1: "KEY_COMPROMISE",
- 2: "CERTIFICATE_AUTHORITY_COMPROMISE",
- 3: "AFFILIATION_CHANGED",
- 4: "SUPERSEDED",
- 5: "CESSATION_OF_OPERATION",
- 6: "CERTIFICATE_HOLD",
- 7: "PRIVILEGE_WITHDRAWN",
- 8: "ATTRIBUTE_AUTHORITY_COMPROMISE",
- }
- RevocationReason_value = map[string]int32{
- "REVOCATION_REASON_UNSPECIFIED": 0,
- "KEY_COMPROMISE": 1,
- "CERTIFICATE_AUTHORITY_COMPROMISE": 2,
- "AFFILIATION_CHANGED": 3,
- "SUPERSEDED": 4,
- "CESSATION_OF_OPERATION": 5,
- "CERTIFICATE_HOLD": 6,
- "PRIVILEGE_WITHDRAWN": 7,
- "ATTRIBUTE_AUTHORITY_COMPROMISE": 8,
- }
-)
-
-func (x RevocationReason) Enum() *RevocationReason {
- p := new(RevocationReason)
- *p = x
- return p
-}
-
-func (x RevocationReason) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (RevocationReason) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[0].Descriptor()
-}
-
-func (RevocationReason) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[0]
-}
-
-func (x RevocationReason) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use RevocationReason.Descriptor instead.
-func (RevocationReason) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{0}
-}
-
-// Describes the way in which a [Certificate][google.cloud.security.privateca.v1.Certificate]'s [Subject][google.cloud.security.privateca.v1.Subject] and/or
-// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] will be resolved.
-type SubjectRequestMode int32
-
-const (
- // Not specified.
- SubjectRequestMode_SUBJECT_REQUEST_MODE_UNSPECIFIED SubjectRequestMode = 0
- // The default mode used in most cases. Indicates that the certificate's
- // [Subject][google.cloud.security.privateca.v1.Subject] and/or [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] are specified in the certificate
- // request. This mode requires the caller to have the
- // `privateca.certificates.create` permission.
- SubjectRequestMode_DEFAULT SubjectRequestMode = 1
- // A mode reserved for special cases. Indicates that the certificate should
- // have one or more SPIFFE [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] set by the service based
- // on the caller's identity. This mode will ignore any explicitly specified
- // [Subject][google.cloud.security.privateca.v1.Subject] and/or [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] in the certificate request.
- // This mode requires the caller to have the
- // `privateca.certificates.createForSelf` permission.
- SubjectRequestMode_REFLECTED_SPIFFE SubjectRequestMode = 2
-)
-
-// Enum value maps for SubjectRequestMode.
-var (
- SubjectRequestMode_name = map[int32]string{
- 0: "SUBJECT_REQUEST_MODE_UNSPECIFIED",
- 1: "DEFAULT",
- 2: "REFLECTED_SPIFFE",
- }
- SubjectRequestMode_value = map[string]int32{
- "SUBJECT_REQUEST_MODE_UNSPECIFIED": 0,
- "DEFAULT": 1,
- "REFLECTED_SPIFFE": 2,
- }
-)
-
-func (x SubjectRequestMode) Enum() *SubjectRequestMode {
- p := new(SubjectRequestMode)
- *p = x
- return p
-}
-
-func (x SubjectRequestMode) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (SubjectRequestMode) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[1].Descriptor()
-}
-
-func (SubjectRequestMode) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[1]
-}
-
-func (x SubjectRequestMode) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use SubjectRequestMode.Descriptor instead.
-func (SubjectRequestMode) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1}
-}
-
-// The type of a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], indicating its issuing chain.
-type CertificateAuthority_Type int32
-
-const (
- // Not specified.
- CertificateAuthority_TYPE_UNSPECIFIED CertificateAuthority_Type = 0
- // Self-signed CA.
- CertificateAuthority_SELF_SIGNED CertificateAuthority_Type = 1
- // Subordinate CA. Could be issued by a Private CA [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]
- // or an unmanaged CA.
- CertificateAuthority_SUBORDINATE CertificateAuthority_Type = 2
-)
-
-// Enum value maps for CertificateAuthority_Type.
-var (
- CertificateAuthority_Type_name = map[int32]string{
- 0: "TYPE_UNSPECIFIED",
- 1: "SELF_SIGNED",
- 2: "SUBORDINATE",
- }
- CertificateAuthority_Type_value = map[string]int32{
- "TYPE_UNSPECIFIED": 0,
- "SELF_SIGNED": 1,
- "SUBORDINATE": 2,
- }
-)
-
-func (x CertificateAuthority_Type) Enum() *CertificateAuthority_Type {
- p := new(CertificateAuthority_Type)
- *p = x
- return p
-}
-
-func (x CertificateAuthority_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CertificateAuthority_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[2].Descriptor()
-}
-
-func (CertificateAuthority_Type) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[2]
-}
-
-func (x CertificateAuthority_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CertificateAuthority_Type.Descriptor instead.
-func (CertificateAuthority_Type) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// The state of a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], indicating if it can be used.
-type CertificateAuthority_State int32
-
-const (
- // Not specified.
- CertificateAuthority_STATE_UNSPECIFIED CertificateAuthority_State = 0
- // Certificates can be issued from this CA. CRLs will be generated for this
- // CA. The CA will be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, and will be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- CertificateAuthority_ENABLED CertificateAuthority_State = 1
- // Certificates cannot be issued from this CA. CRLs will still be generated.
- // The CA will be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, but will not be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- CertificateAuthority_DISABLED CertificateAuthority_State = 2
- // Certificates can be issued from this CA. CRLs will be generated for this
- // CA. The CA will be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, but will not
- // be used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- CertificateAuthority_STAGED CertificateAuthority_State = 3
- // Certificates cannot be issued from this CA. CRLs will not be generated.
- // The CA will not be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, and will not be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- CertificateAuthority_AWAITING_USER_ACTIVATION CertificateAuthority_State = 4
- // Certificates cannot be issued from this CA. CRLs will not be generated.
- // The CA may still be recovered by calling
- // [CertificateAuthorityService.UndeleteCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.UndeleteCertificateAuthority] before
- // [expire_time][google.cloud.security.privateca.v1.CertificateAuthority.expire_time].
- // The CA will not be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, and will not be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- CertificateAuthority_DELETED CertificateAuthority_State = 5
-)
-
-// Enum value maps for CertificateAuthority_State.
-var (
- CertificateAuthority_State_name = map[int32]string{
- 0: "STATE_UNSPECIFIED",
- 1: "ENABLED",
- 2: "DISABLED",
- 3: "STAGED",
- 4: "AWAITING_USER_ACTIVATION",
- 5: "DELETED",
- }
- CertificateAuthority_State_value = map[string]int32{
- "STATE_UNSPECIFIED": 0,
- "ENABLED": 1,
- "DISABLED": 2,
- "STAGED": 3,
- "AWAITING_USER_ACTIVATION": 4,
- "DELETED": 5,
- }
-)
-
-func (x CertificateAuthority_State) Enum() *CertificateAuthority_State {
- p := new(CertificateAuthority_State)
- *p = x
- return p
-}
-
-func (x CertificateAuthority_State) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CertificateAuthority_State) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[3].Descriptor()
-}
-
-func (CertificateAuthority_State) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[3]
-}
-
-func (x CertificateAuthority_State) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CertificateAuthority_State.Descriptor instead.
-func (CertificateAuthority_State) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{0, 1}
-}
-
-// The algorithm of a Cloud KMS CryptoKeyVersion of a
-// [CryptoKey][google.cloud.kms.v1.CryptoKey] with the
-// [CryptoKeyPurpose][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose] value
-// `ASYMMETRIC_SIGN`. These values correspond to the
-// [CryptoKeyVersionAlgorithm][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionAlgorithm]
-// values. For RSA signing algorithms, the PSS algorithms should be preferred,
-// use PKCS1 algorithms if required for compatibility. For further
-// recommendations, see
-// https://cloud.google.com/kms/docs/algorithms#algorithm_recommendations.
-type CertificateAuthority_SignHashAlgorithm int32
-
-const (
- // Not specified.
- CertificateAuthority_SIGN_HASH_ALGORITHM_UNSPECIFIED CertificateAuthority_SignHashAlgorithm = 0
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PSS_2048_SHA256
- CertificateAuthority_RSA_PSS_2048_SHA256 CertificateAuthority_SignHashAlgorithm = 1
- // maps to CryptoKeyVersionAlgorithm. RSA_SIGN_PSS_3072_SHA256
- CertificateAuthority_RSA_PSS_3072_SHA256 CertificateAuthority_SignHashAlgorithm = 2
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PSS_4096_SHA256
- CertificateAuthority_RSA_PSS_4096_SHA256 CertificateAuthority_SignHashAlgorithm = 3
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_2048_SHA256
- CertificateAuthority_RSA_PKCS1_2048_SHA256 CertificateAuthority_SignHashAlgorithm = 6
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_3072_SHA256
- CertificateAuthority_RSA_PKCS1_3072_SHA256 CertificateAuthority_SignHashAlgorithm = 7
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_4096_SHA256
- CertificateAuthority_RSA_PKCS1_4096_SHA256 CertificateAuthority_SignHashAlgorithm = 8
- // maps to CryptoKeyVersionAlgorithm.EC_SIGN_P256_SHA256
- CertificateAuthority_EC_P256_SHA256 CertificateAuthority_SignHashAlgorithm = 4
- // maps to CryptoKeyVersionAlgorithm.EC_SIGN_P384_SHA384
- CertificateAuthority_EC_P384_SHA384 CertificateAuthority_SignHashAlgorithm = 5
-)
-
-// Enum value maps for CertificateAuthority_SignHashAlgorithm.
-var (
- CertificateAuthority_SignHashAlgorithm_name = map[int32]string{
- 0: "SIGN_HASH_ALGORITHM_UNSPECIFIED",
- 1: "RSA_PSS_2048_SHA256",
- 2: "RSA_PSS_3072_SHA256",
- 3: "RSA_PSS_4096_SHA256",
- 6: "RSA_PKCS1_2048_SHA256",
- 7: "RSA_PKCS1_3072_SHA256",
- 8: "RSA_PKCS1_4096_SHA256",
- 4: "EC_P256_SHA256",
- 5: "EC_P384_SHA384",
- }
- CertificateAuthority_SignHashAlgorithm_value = map[string]int32{
- "SIGN_HASH_ALGORITHM_UNSPECIFIED": 0,
- "RSA_PSS_2048_SHA256": 1,
- "RSA_PSS_3072_SHA256": 2,
- "RSA_PSS_4096_SHA256": 3,
- "RSA_PKCS1_2048_SHA256": 6,
- "RSA_PKCS1_3072_SHA256": 7,
- "RSA_PKCS1_4096_SHA256": 8,
- "EC_P256_SHA256": 4,
- "EC_P384_SHA384": 5,
- }
-)
-
-func (x CertificateAuthority_SignHashAlgorithm) Enum() *CertificateAuthority_SignHashAlgorithm {
- p := new(CertificateAuthority_SignHashAlgorithm)
- *p = x
- return p
-}
-
-func (x CertificateAuthority_SignHashAlgorithm) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CertificateAuthority_SignHashAlgorithm) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[4].Descriptor()
-}
-
-func (CertificateAuthority_SignHashAlgorithm) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[4]
-}
-
-func (x CertificateAuthority_SignHashAlgorithm) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CertificateAuthority_SignHashAlgorithm.Descriptor instead.
-func (CertificateAuthority_SignHashAlgorithm) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{0, 2}
-}
-
-// The tier of a [CaPool][google.cloud.security.privateca.v1.CaPool], indicating its supported functionality and/or
-// billing SKU.
-type CaPool_Tier int32
-
-const (
- // Not specified.
- CaPool_TIER_UNSPECIFIED CaPool_Tier = 0
- // Enterprise tier.
- CaPool_ENTERPRISE CaPool_Tier = 1
- // DevOps tier.
- CaPool_DEVOPS CaPool_Tier = 2
-)
-
-// Enum value maps for CaPool_Tier.
-var (
- CaPool_Tier_name = map[int32]string{
- 0: "TIER_UNSPECIFIED",
- 1: "ENTERPRISE",
- 2: "DEVOPS",
- }
- CaPool_Tier_value = map[string]int32{
- "TIER_UNSPECIFIED": 0,
- "ENTERPRISE": 1,
- "DEVOPS": 2,
- }
-)
-
-func (x CaPool_Tier) Enum() *CaPool_Tier {
- p := new(CaPool_Tier)
- *p = x
- return p
-}
-
-func (x CaPool_Tier) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CaPool_Tier) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[5].Descriptor()
-}
-
-func (CaPool_Tier) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[5]
-}
-
-func (x CaPool_Tier) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CaPool_Tier.Descriptor instead.
-func (CaPool_Tier) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 0}
-}
-
-// Describes an elliptic curve-based signature algorithm that may be
-// used in a [Certificate][google.cloud.security.privateca.v1.Certificate] issued from a [CaPool][google.cloud.security.privateca.v1.CaPool].
-type CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm int32
-
-const (
- // Not specified. Signifies that any signature algorithm may be used.
- CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EC_SIGNATURE_ALGORITHM_UNSPECIFIED CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm = 0
- // Refers to the Elliptic Curve Digital Signature Algorithm over the
- // NIST P-256 curve.
- CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_ECDSA_P256 CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm = 1
- // Refers to the Elliptic Curve Digital Signature Algorithm over the
- // NIST P-384 curve.
- CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_ECDSA_P384 CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm = 2
- // Refers to the Edwards-curve Digital Signature Algorithm over curve
- // 25519, as described in RFC 8410.
- CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EDDSA_25519 CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm = 3
-)
-
-// Enum value maps for CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm.
-var (
- CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm_name = map[int32]string{
- 0: "EC_SIGNATURE_ALGORITHM_UNSPECIFIED",
- 1: "ECDSA_P256",
- 2: "ECDSA_P384",
- 3: "EDDSA_25519",
- }
- CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm_value = map[string]int32{
- "EC_SIGNATURE_ALGORITHM_UNSPECIFIED": 0,
- "ECDSA_P256": 1,
- "ECDSA_P384": 2,
- "EDDSA_25519": 3,
- }
-)
-
-func (x CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm) Enum() *CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm {
- p := new(CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm)
- *p = x
- return p
-}
-
-func (x CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[6].Descriptor()
-}
-
-func (CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[6]
-}
-
-func (x CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm.Descriptor instead.
-func (CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 1, 0, 1, 0}
-}
-
-// The state of a [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList], indicating if it is current.
-type CertificateRevocationList_State int32
-
-const (
- // Not specified.
- CertificateRevocationList_STATE_UNSPECIFIED CertificateRevocationList_State = 0
- // The [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] is up to date.
- CertificateRevocationList_ACTIVE CertificateRevocationList_State = 1
- // The [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] is no longer current.
- CertificateRevocationList_SUPERSEDED CertificateRevocationList_State = 2
-)
-
-// Enum value maps for CertificateRevocationList_State.
-var (
- CertificateRevocationList_State_name = map[int32]string{
- 0: "STATE_UNSPECIFIED",
- 1: "ACTIVE",
- 2: "SUPERSEDED",
- }
- CertificateRevocationList_State_value = map[string]int32{
- "STATE_UNSPECIFIED": 0,
- "ACTIVE": 1,
- "SUPERSEDED": 2,
- }
-)
-
-func (x CertificateRevocationList_State) Enum() *CertificateRevocationList_State {
- p := new(CertificateRevocationList_State)
- *p = x
- return p
-}
-
-func (x CertificateRevocationList_State) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CertificateRevocationList_State) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[7].Descriptor()
-}
-
-func (CertificateRevocationList_State) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[7]
-}
-
-func (x CertificateRevocationList_State) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CertificateRevocationList_State.Descriptor instead.
-func (CertificateRevocationList_State) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{2, 0}
-}
-
-// Types of public keys formats that are supported. Currently, only `PEM`
-// format is supported.
-type PublicKey_KeyFormat int32
-
-const (
- // Default unspecified value.
- PublicKey_KEY_FORMAT_UNSPECIFIED PublicKey_KeyFormat = 0
- // The key is PEM-encoded as defined in [RFC
- // 7468](https://tools.ietf.org/html/rfc7468). It can be any of the
- // following: a PEM-encoded PKCS#1/RFC 3447 RSAPublicKey
- // structure, an RFC 5280
- // [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1)
- // or a PEM-encoded X.509 certificate signing request (CSR). If a
- // [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1)
- // is specified, it can contain a A PEM-encoded PKCS#1/RFC 3447 RSAPublicKey
- // or a NIST P-256/secp256r1/prime256v1 or P-384 key. If a CSR is specified,
- // it will used solely for the purpose of extracting the public key. When
- // generated by the service, it will always be an RFC 5280
- // [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1)
- // structure containing an algorithm identifier and a key.
- PublicKey_PEM PublicKey_KeyFormat = 1
-)
-
-// Enum value maps for PublicKey_KeyFormat.
-var (
- PublicKey_KeyFormat_name = map[int32]string{
- 0: "KEY_FORMAT_UNSPECIFIED",
- 1: "PEM",
- }
- PublicKey_KeyFormat_value = map[string]int32{
- "KEY_FORMAT_UNSPECIFIED": 0,
- "PEM": 1,
- }
-)
-
-func (x PublicKey_KeyFormat) Enum() *PublicKey_KeyFormat {
- p := new(PublicKey_KeyFormat)
- *p = x
- return p
-}
-
-func (x PublicKey_KeyFormat) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (PublicKey_KeyFormat) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[8].Descriptor()
-}
-
-func (PublicKey_KeyFormat) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[8]
-}
-
-func (x PublicKey_KeyFormat) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use PublicKey_KeyFormat.Descriptor instead.
-func (PublicKey_KeyFormat) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{7, 0}
-}
-
-// Describes well-known X.509 extensions that can appear in a [Certificate][google.cloud.security.privateca.v1.Certificate],
-// not including the [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] extension.
-type CertificateExtensionConstraints_KnownCertificateExtension int32
-
-const (
- // Not specified.
- CertificateExtensionConstraints_KNOWN_CERTIFICATE_EXTENSION_UNSPECIFIED CertificateExtensionConstraints_KnownCertificateExtension = 0
- // Refers to a certificate's Key Usage extension, as described in [RFC 5280
- // section 4.2.1.3](https://tools.ietf.org/html/rfc5280#section-4.2.1.3).
- // This corresponds to the [KeyUsage.base_key_usage][google.cloud.security.privateca.v1.KeyUsage.base_key_usage] field.
- CertificateExtensionConstraints_BASE_KEY_USAGE CertificateExtensionConstraints_KnownCertificateExtension = 1
- // Refers to a certificate's Extended Key Usage extension, as described in
- // [RFC 5280
- // section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12).
- // This corresponds to the [KeyUsage.extended_key_usage][google.cloud.security.privateca.v1.KeyUsage.extended_key_usage] message.
- CertificateExtensionConstraints_EXTENDED_KEY_USAGE CertificateExtensionConstraints_KnownCertificateExtension = 2
- // Refers to a certificate's Basic Constraints extension, as described in
- // [RFC 5280
- // section 4.2.1.9](https://tools.ietf.org/html/rfc5280#section-4.2.1.9).
- // This corresponds to the [X509Parameters.ca_options][google.cloud.security.privateca.v1.X509Parameters.ca_options] field.
- CertificateExtensionConstraints_CA_OPTIONS CertificateExtensionConstraints_KnownCertificateExtension = 3
- // Refers to a certificate's Policy object identifiers, as described in
- // [RFC 5280
- // section 4.2.1.4](https://tools.ietf.org/html/rfc5280#section-4.2.1.4).
- // This corresponds to the [X509Parameters.policy_ids][google.cloud.security.privateca.v1.X509Parameters.policy_ids] field.
- CertificateExtensionConstraints_POLICY_IDS CertificateExtensionConstraints_KnownCertificateExtension = 4
- // Refers to OCSP servers in a certificate's Authority Information Access
- // extension, as described in
- // [RFC 5280
- // section 4.2.2.1](https://tools.ietf.org/html/rfc5280#section-4.2.2.1),
- // This corresponds to the [X509Parameters.aia_ocsp_servers][google.cloud.security.privateca.v1.X509Parameters.aia_ocsp_servers] field.
- CertificateExtensionConstraints_AIA_OCSP_SERVERS CertificateExtensionConstraints_KnownCertificateExtension = 5
-)
-
-// Enum value maps for CertificateExtensionConstraints_KnownCertificateExtension.
-var (
- CertificateExtensionConstraints_KnownCertificateExtension_name = map[int32]string{
- 0: "KNOWN_CERTIFICATE_EXTENSION_UNSPECIFIED",
- 1: "BASE_KEY_USAGE",
- 2: "EXTENDED_KEY_USAGE",
- 3: "CA_OPTIONS",
- 4: "POLICY_IDS",
- 5: "AIA_OCSP_SERVERS",
- }
- CertificateExtensionConstraints_KnownCertificateExtension_value = map[string]int32{
- "KNOWN_CERTIFICATE_EXTENSION_UNSPECIFIED": 0,
- "BASE_KEY_USAGE": 1,
- "EXTENDED_KEY_USAGE": 2,
- "CA_OPTIONS": 3,
- "POLICY_IDS": 4,
- "AIA_OCSP_SERVERS": 5,
- }
-)
-
-func (x CertificateExtensionConstraints_KnownCertificateExtension) Enum() *CertificateExtensionConstraints_KnownCertificateExtension {
- p := new(CertificateExtensionConstraints_KnownCertificateExtension)
- *p = x
- return p
-}
-
-func (x CertificateExtensionConstraints_KnownCertificateExtension) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CertificateExtensionConstraints_KnownCertificateExtension) Descriptor() protoreflect.EnumDescriptor {
- return file_google_cloud_security_privateca_v1_resources_proto_enumTypes[9].Descriptor()
-}
-
-func (CertificateExtensionConstraints_KnownCertificateExtension) Type() protoreflect.EnumType {
- return &file_google_cloud_security_privateca_v1_resources_proto_enumTypes[9]
-}
-
-func (x CertificateExtensionConstraints_KnownCertificateExtension) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CertificateExtensionConstraints_KnownCertificateExtension.Descriptor instead.
-func (CertificateExtensionConstraints_KnownCertificateExtension) EnumDescriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{16, 0}
-}
-
-// A [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] represents an individual Certificate Authority.
-// A [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] can be used to create [Certificates][google.cloud.security.privateca.v1.Certificate].
-type CertificateAuthority struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Output only. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Required. Immutable. The [Type][google.cloud.security.privateca.v1.CertificateAuthority.Type] of this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- Type CertificateAuthority_Type `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.security.privateca.v1.CertificateAuthority_Type" json:"type,omitempty"`
- // Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.
- Config *CertificateConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"`
- // Required. Immutable. The desired lifetime of the CA certificate. Used to create the
- // "not_before_time" and "not_after_time" fields inside an X.509
- // certificate.
- Lifetime *durationpb.Duration `protobuf:"bytes,4,opt,name=lifetime,proto3" json:"lifetime,omitempty"`
- // Required. Immutable. Used when issuing certificates for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]. If this
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] is a self-signed CertificateAuthority, this key
- // is also used to sign the self-signed CA certificate. Otherwise, it
- // is used to sign a CSR.
- KeySpec *CertificateAuthority_KeyVersionSpec `protobuf:"bytes,5,opt,name=key_spec,json=keySpec,proto3" json:"key_spec,omitempty"`
- // Optional. If this is a subordinate [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], this field will be set
- // with the subordinate configuration, which describes its issuers. This may
- // be updated, but this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] must continue to validate.
- SubordinateConfig *SubordinateConfig `protobuf:"bytes,6,opt,name=subordinate_config,json=subordinateConfig,proto3" json:"subordinate_config,omitempty"`
- // Output only. The [CaPool.Tier][google.cloud.security.privateca.v1.CaPool.Tier] of the [CaPool][google.cloud.security.privateca.v1.CaPool] that includes this
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- Tier CaPool_Tier `protobuf:"varint,7,opt,name=tier,proto3,enum=google.cloud.security.privateca.v1.CaPool_Tier" json:"tier,omitempty"`
- // Output only. The [State][google.cloud.security.privateca.v1.CertificateAuthority.State] for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- State CertificateAuthority_State `protobuf:"varint,8,opt,name=state,proto3,enum=google.cloud.security.privateca.v1.CertificateAuthority_State" json:"state,omitempty"`
- // Output only. This [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s certificate chain, including the current
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s certificate. Ordered such that the root issuer
- // is the final element (consistent with RFC 5246). For a self-signed CA, this
- // will only list the current [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s certificate.
- PemCaCertificates []string `protobuf:"bytes,9,rep,name=pem_ca_certificates,json=pemCaCertificates,proto3" json:"pem_ca_certificates,omitempty"`
- // Output only. A structured description of this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA certificate
- // and its issuers. Ordered as self-to-root.
- CaCertificateDescriptions []*CertificateDescription `protobuf:"bytes,10,rep,name=ca_certificate_descriptions,json=caCertificateDescriptions,proto3" json:"ca_certificate_descriptions,omitempty"`
- // Immutable. The name of a Cloud Storage bucket where this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will
- // publish content, such as the CA certificate and CRLs. This must be a bucket
- // name, without any prefixes (such as `gs://`) or suffixes (such as
- // `.googleapis.com`). For example, to use a bucket named `my-bucket`, you
- // would simply specify `my-bucket`. If not specified, a managed bucket will
- // be created.
- GcsBucket string `protobuf:"bytes,11,opt,name=gcs_bucket,json=gcsBucket,proto3" json:"gcs_bucket,omitempty"`
- // Output only. URLs for accessing content published by this CA, such as the CA certificate
- // and CRLs.
- AccessUrls *CertificateAuthority_AccessUrls `protobuf:"bytes,12,opt,name=access_urls,json=accessUrls,proto3" json:"access_urls,omitempty"`
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] was created.
- CreateTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] was last updated.
- UpdateTime *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] was soft deleted, if
- // it is in the [DELETED][google.cloud.security.privateca.v1.CertificateAuthority.State.DELETED] state.
- DeleteTime *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"`
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will be permanently purged,
- // if it is in the [DELETED][google.cloud.security.privateca.v1.CertificateAuthority.State.DELETED] state.
- ExpireTime *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
- // Optional. Labels with user-defined metadata.
- Labels map[string]string `protobuf:"bytes,17,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *CertificateAuthority) Reset() {
- *x = CertificateAuthority{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateAuthority) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateAuthority) ProtoMessage() {}
-
-func (x *CertificateAuthority) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateAuthority.ProtoReflect.Descriptor instead.
-func (*CertificateAuthority) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CertificateAuthority) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *CertificateAuthority) GetType() CertificateAuthority_Type {
- if x != nil {
- return x.Type
- }
- return CertificateAuthority_TYPE_UNSPECIFIED
-}
-
-func (x *CertificateAuthority) GetConfig() *CertificateConfig {
- if x != nil {
- return x.Config
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetLifetime() *durationpb.Duration {
- if x != nil {
- return x.Lifetime
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetKeySpec() *CertificateAuthority_KeyVersionSpec {
- if x != nil {
- return x.KeySpec
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetSubordinateConfig() *SubordinateConfig {
- if x != nil {
- return x.SubordinateConfig
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetTier() CaPool_Tier {
- if x != nil {
- return x.Tier
- }
- return CaPool_TIER_UNSPECIFIED
-}
-
-func (x *CertificateAuthority) GetState() CertificateAuthority_State {
- if x != nil {
- return x.State
- }
- return CertificateAuthority_STATE_UNSPECIFIED
-}
-
-func (x *CertificateAuthority) GetPemCaCertificates() []string {
- if x != nil {
- return x.PemCaCertificates
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetCaCertificateDescriptions() []*CertificateDescription {
- if x != nil {
- return x.CaCertificateDescriptions
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetGcsBucket() string {
- if x != nil {
- return x.GcsBucket
- }
- return ""
-}
-
-func (x *CertificateAuthority) GetAccessUrls() *CertificateAuthority_AccessUrls {
- if x != nil {
- return x.AccessUrls
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetCreateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.CreateTime
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetUpdateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdateTime
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetDeleteTime() *timestamppb.Timestamp {
- if x != nil {
- return x.DeleteTime
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetExpireTime() *timestamppb.Timestamp {
- if x != nil {
- return x.ExpireTime
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-// A [CaPool][google.cloud.security.privateca.v1.CaPool] represents a group of
-// [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority] that form a trust anchor. A
-// [CaPool][google.cloud.security.privateca.v1.CaPool] can be used to manage issuance policies for one or more
-// [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] resources and to rotate CA certificates in and out
-// of the trust anchor.
-type CaPool struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Output only. The resource name for this [CaPool][google.cloud.security.privateca.v1.CaPool] in the
- // format `projects/*/locations/*/caPools/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Required. Immutable. The [Tier][google.cloud.security.privateca.v1.CaPool.Tier] of this [CaPool][google.cloud.security.privateca.v1.CaPool].
- Tier CaPool_Tier `protobuf:"varint,2,opt,name=tier,proto3,enum=google.cloud.security.privateca.v1.CaPool_Tier" json:"tier,omitempty"`
- // Optional. The [IssuancePolicy][google.cloud.security.privateca.v1.CaPool.IssuancePolicy] to control how [Certificates][google.cloud.security.privateca.v1.Certificate]
- // will be issued from this [CaPool][google.cloud.security.privateca.v1.CaPool].
- IssuancePolicy *CaPool_IssuancePolicy `protobuf:"bytes,3,opt,name=issuance_policy,json=issuancePolicy,proto3" json:"issuance_policy,omitempty"`
- // Optional. The [PublishingOptions][google.cloud.security.privateca.v1.CaPool.PublishingOptions] to follow when issuing
- // [Certificates][google.cloud.security.privateca.v1.Certificate] from any [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in this
- // [CaPool][google.cloud.security.privateca.v1.CaPool].
- PublishingOptions *CaPool_PublishingOptions `protobuf:"bytes,4,opt,name=publishing_options,json=publishingOptions,proto3" json:"publishing_options,omitempty"`
- // Optional. Labels with user-defined metadata.
- Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *CaPool) Reset() {
- *x = CaPool{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CaPool) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CaPool) ProtoMessage() {}
-
-func (x *CaPool) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CaPool.ProtoReflect.Descriptor instead.
-func (*CaPool) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CaPool) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *CaPool) GetTier() CaPool_Tier {
- if x != nil {
- return x.Tier
- }
- return CaPool_TIER_UNSPECIFIED
-}
-
-func (x *CaPool) GetIssuancePolicy() *CaPool_IssuancePolicy {
- if x != nil {
- return x.IssuancePolicy
- }
- return nil
-}
-
-func (x *CaPool) GetPublishingOptions() *CaPool_PublishingOptions {
- if x != nil {
- return x.PublishingOptions
- }
- return nil
-}
-
-func (x *CaPool) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-// A [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] corresponds to a signed X.509 certificate
-// Revocation List (CRL). A CRL contains the serial numbers of certificates that
-// should no longer be trusted.
-type CertificateRevocationList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Output only. The resource name for this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] in
- // the format
- // `projects/*/locations/*/caPools/*certificateAuthorities/*/
- // certificateRevocationLists/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Output only. The CRL sequence number that appears in pem_crl.
- SequenceNumber int64 `protobuf:"varint,2,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
- // Output only. The revoked serial numbers that appear in pem_crl.
- RevokedCertificates []*CertificateRevocationList_RevokedCertificate `protobuf:"bytes,3,rep,name=revoked_certificates,json=revokedCertificates,proto3" json:"revoked_certificates,omitempty"`
- // Output only. The PEM-encoded X.509 CRL.
- PemCrl string `protobuf:"bytes,4,opt,name=pem_crl,json=pemCrl,proto3" json:"pem_crl,omitempty"`
- // Output only. The location where 'pem_crl' can be accessed.
- AccessUrl string `protobuf:"bytes,5,opt,name=access_url,json=accessUrl,proto3" json:"access_url,omitempty"`
- // Output only. The [State][google.cloud.security.privateca.v1.CertificateRevocationList.State] for this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList].
- State CertificateRevocationList_State `protobuf:"varint,6,opt,name=state,proto3,enum=google.cloud.security.privateca.v1.CertificateRevocationList_State" json:"state,omitempty"`
- // Output only. The time at which this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] was created.
- CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
- // Output only. The time at which this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] was updated.
- UpdateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
- // Output only. The revision WorkloadID of this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList]. A new revision is
- // committed whenever a new CRL is published. The format is an 8-character
- // hexadecimal string.
- RevisionId string `protobuf:"bytes,9,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"`
- // Optional. Labels with user-defined metadata.
- Labels map[string]string `protobuf:"bytes,10,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *CertificateRevocationList) Reset() {
- *x = CertificateRevocationList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateRevocationList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateRevocationList) ProtoMessage() {}
-
-func (x *CertificateRevocationList) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateRevocationList.ProtoReflect.Descriptor instead.
-func (*CertificateRevocationList) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CertificateRevocationList) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *CertificateRevocationList) GetSequenceNumber() int64 {
- if x != nil {
- return x.SequenceNumber
- }
- return 0
-}
-
-func (x *CertificateRevocationList) GetRevokedCertificates() []*CertificateRevocationList_RevokedCertificate {
- if x != nil {
- return x.RevokedCertificates
- }
- return nil
-}
-
-func (x *CertificateRevocationList) GetPemCrl() string {
- if x != nil {
- return x.PemCrl
- }
- return ""
-}
-
-func (x *CertificateRevocationList) GetAccessUrl() string {
- if x != nil {
- return x.AccessUrl
- }
- return ""
-}
-
-func (x *CertificateRevocationList) GetState() CertificateRevocationList_State {
- if x != nil {
- return x.State
- }
- return CertificateRevocationList_STATE_UNSPECIFIED
-}
-
-func (x *CertificateRevocationList) GetCreateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.CreateTime
- }
- return nil
-}
-
-func (x *CertificateRevocationList) GetUpdateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdateTime
- }
- return nil
-}
-
-func (x *CertificateRevocationList) GetRevisionId() string {
- if x != nil {
- return x.RevisionId
- }
- return ""
-}
-
-func (x *CertificateRevocationList) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-// A [Certificate][google.cloud.security.privateca.v1.Certificate] corresponds to a signed X.509 certificate issued by a
-// [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
-type Certificate struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Output only. The resource name for this [Certificate][google.cloud.security.privateca.v1.Certificate] in the format
- // `projects/*/locations/*/caPools/*/certificates/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The config used to create a signed X.509 certificate.
- //
- // Types that are assignable to CertificateConfig:
- // *Certificate_PemCsr
- // *Certificate_Config
- CertificateConfig isCertificate_CertificateConfig `protobuf_oneof:"certificate_config"`
- // Output only. The resource name of the issuing [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the format
- // `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- IssuerCertificateAuthority string `protobuf:"bytes,4,opt,name=issuer_certificate_authority,json=issuerCertificateAuthority,proto3" json:"issuer_certificate_authority,omitempty"`
- // Required. Immutable. The desired lifetime of a certificate. Used to create the
- // "not_before_time" and "not_after_time" fields inside an X.509
- // certificate. Note that the lifetime may be truncated if it would extend
- // past the life of any certificate authority in the issuing chain.
- Lifetime *durationpb.Duration `protobuf:"bytes,5,opt,name=lifetime,proto3" json:"lifetime,omitempty"`
- // Immutable. The resource name for a [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] used to issue this
- // certificate, in the format
- // `projects/*/locations/*/certificateTemplates/*`.
- // If this is specified, the caller must have the necessary permission to
- // use this template. If this is omitted, no template will be used.
- // This template must be in the same location as the [Certificate][google.cloud.security.privateca.v1.Certificate].
- CertificateTemplate string `protobuf:"bytes,6,opt,name=certificate_template,json=certificateTemplate,proto3" json:"certificate_template,omitempty"`
- // Immutable. Specifies how the [Certificate][google.cloud.security.privateca.v1.Certificate]'s identity fields are to be decided.
- // If this is omitted, the `DEFAULT` subject mode will be used.
- SubjectMode SubjectRequestMode `protobuf:"varint,7,opt,name=subject_mode,json=subjectMode,proto3,enum=google.cloud.security.privateca.v1.SubjectRequestMode" json:"subject_mode,omitempty"`
- // Output only. Details regarding the revocation of this [Certificate][google.cloud.security.privateca.v1.Certificate]. This
- // [Certificate][google.cloud.security.privateca.v1.Certificate] is considered revoked if and only if this field is present.
- RevocationDetails *Certificate_RevocationDetails `protobuf:"bytes,8,opt,name=revocation_details,json=revocationDetails,proto3" json:"revocation_details,omitempty"`
- // Output only. The pem-encoded, signed X.509 certificate.
- PemCertificate string `protobuf:"bytes,9,opt,name=pem_certificate,json=pemCertificate,proto3" json:"pem_certificate,omitempty"`
- // Output only. A structured description of the issued X.509 certificate.
- CertificateDescription *CertificateDescription `protobuf:"bytes,10,opt,name=certificate_description,json=certificateDescription,proto3" json:"certificate_description,omitempty"`
- // Output only. The chain that may be used to verify the X.509 certificate. Expected to be
- // in issuer-to-root order according to RFC 5246.
- PemCertificateChain []string `protobuf:"bytes,11,rep,name=pem_certificate_chain,json=pemCertificateChain,proto3" json:"pem_certificate_chain,omitempty"`
- // Output only. The time at which this [Certificate][google.cloud.security.privateca.v1.Certificate] was created.
- CreateTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
- // Output only. The time at which this [Certificate][google.cloud.security.privateca.v1.Certificate] was updated.
- UpdateTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
- // Optional. Labels with user-defined metadata.
- Labels map[string]string `protobuf:"bytes,14,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Certificate) Reset() {
- *x = Certificate{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Certificate) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Certificate) ProtoMessage() {}
-
-func (x *Certificate) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Certificate.ProtoReflect.Descriptor instead.
-func (*Certificate) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Certificate) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (m *Certificate) GetCertificateConfig() isCertificate_CertificateConfig {
- if m != nil {
- return m.CertificateConfig
- }
- return nil
-}
-
-func (x *Certificate) GetPemCsr() string {
- if x, ok := x.GetCertificateConfig().(*Certificate_PemCsr); ok {
- return x.PemCsr
- }
- return ""
-}
-
-func (x *Certificate) GetConfig() *CertificateConfig {
- if x, ok := x.GetCertificateConfig().(*Certificate_Config); ok {
- return x.Config
- }
- return nil
-}
-
-func (x *Certificate) GetIssuerCertificateAuthority() string {
- if x != nil {
- return x.IssuerCertificateAuthority
- }
- return ""
-}
-
-func (x *Certificate) GetLifetime() *durationpb.Duration {
- if x != nil {
- return x.Lifetime
- }
- return nil
-}
-
-func (x *Certificate) GetCertificateTemplate() string {
- if x != nil {
- return x.CertificateTemplate
- }
- return ""
-}
-
-func (x *Certificate) GetSubjectMode() SubjectRequestMode {
- if x != nil {
- return x.SubjectMode
- }
- return SubjectRequestMode_SUBJECT_REQUEST_MODE_UNSPECIFIED
-}
-
-func (x *Certificate) GetRevocationDetails() *Certificate_RevocationDetails {
- if x != nil {
- return x.RevocationDetails
- }
- return nil
-}
-
-func (x *Certificate) GetPemCertificate() string {
- if x != nil {
- return x.PemCertificate
- }
- return ""
-}
-
-func (x *Certificate) GetCertificateDescription() *CertificateDescription {
- if x != nil {
- return x.CertificateDescription
- }
- return nil
-}
-
-func (x *Certificate) GetPemCertificateChain() []string {
- if x != nil {
- return x.PemCertificateChain
- }
- return nil
-}
-
-func (x *Certificate) GetCreateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.CreateTime
- }
- return nil
-}
-
-func (x *Certificate) GetUpdateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdateTime
- }
- return nil
-}
-
-func (x *Certificate) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-type isCertificate_CertificateConfig interface {
- isCertificate_CertificateConfig()
-}
-
-type Certificate_PemCsr struct {
- // Immutable. A pem-encoded X.509 certificate signing request (CSR).
- PemCsr string `protobuf:"bytes,2,opt,name=pem_csr,json=pemCsr,proto3,oneof"`
-}
-
-type Certificate_Config struct {
- // Immutable. A description of the certificate and key that does not require X.509 or
- // ASN.1.
- Config *CertificateConfig `protobuf:"bytes,3,opt,name=config,proto3,oneof"`
-}
-
-func (*Certificate_PemCsr) isCertificate_CertificateConfig() {}
-
-func (*Certificate_Config) isCertificate_CertificateConfig() {}
-
-// A [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] refers to a managed template for certificate
-// issuance.
-type CertificateTemplate struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Output only. The resource name for this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] in the format
- // `projects/*/locations/*/certificateTemplates/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. A set of X.509 values that will be applied to all issued certificates that
- // use this template. If the certificate request includes conflicting values
- // for the same properties, they will be overwritten by the values defined
- // here. If the issuing [CaPool][google.cloud.security.privateca.v1.CaPool]'s [IssuancePolicy][google.cloud.security.privateca.v1.CaPool.IssuancePolicy]
- // defines conflicting
- // [baseline_values][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.baseline_values] for the same
- // properties, the certificate issuance request will fail.
- PredefinedValues *X509Parameters `protobuf:"bytes,2,opt,name=predefined_values,json=predefinedValues,proto3" json:"predefined_values,omitempty"`
- // Optional. Describes constraints on identities that may be appear in
- // [Certificates][google.cloud.security.privateca.v1.Certificate] issued using this template. If this is omitted,
- // then this template will not add restrictions on a certificate's identity.
- IdentityConstraints *CertificateIdentityConstraints `protobuf:"bytes,3,opt,name=identity_constraints,json=identityConstraints,proto3" json:"identity_constraints,omitempty"`
- // Optional. Describes the set of X.509 extensions that may appear in a
- // [Certificate][google.cloud.security.privateca.v1.Certificate] issued using this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate]. If a certificate
- // request sets extensions that don't appear in the
- // [passthrough_extensions][google.cloud.security.privateca.v1.CertificateTemplate.passthrough_extensions], those extensions will be dropped. If the
- // issuing [CaPool][google.cloud.security.privateca.v1.CaPool]'s [IssuancePolicy][google.cloud.security.privateca.v1.CaPool.IssuancePolicy] defines
- // [baseline_values][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.baseline_values] that don't appear
- // here, the certificate issuance request will fail. If this is omitted, then
- // this template will not add restrictions on a certificate's X.509
- // extensions. These constraints do not apply to X.509 extensions set in this
- // [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate]'s [predefined_values][google.cloud.security.privateca.v1.CertificateTemplate.predefined_values].
- PassthroughExtensions *CertificateExtensionConstraints `protobuf:"bytes,4,opt,name=passthrough_extensions,json=passthroughExtensions,proto3" json:"passthrough_extensions,omitempty"`
- // Optional. A human-readable description of scenarios this template is intended for.
- Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
- // Output only. The time at which this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] was created.
- CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
- // Output only. The time at which this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] was updated.
- UpdateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
- // Optional. Labels with user-defined metadata.
- Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *CertificateTemplate) Reset() {
- *x = CertificateTemplate{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateTemplate) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateTemplate) ProtoMessage() {}
-
-func (x *CertificateTemplate) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateTemplate.ProtoReflect.Descriptor instead.
-func (*CertificateTemplate) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *CertificateTemplate) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *CertificateTemplate) GetPredefinedValues() *X509Parameters {
- if x != nil {
- return x.PredefinedValues
- }
- return nil
-}
-
-func (x *CertificateTemplate) GetIdentityConstraints() *CertificateIdentityConstraints {
- if x != nil {
- return x.IdentityConstraints
- }
- return nil
-}
-
-func (x *CertificateTemplate) GetPassthroughExtensions() *CertificateExtensionConstraints {
- if x != nil {
- return x.PassthroughExtensions
- }
- return nil
-}
-
-func (x *CertificateTemplate) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *CertificateTemplate) GetCreateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.CreateTime
- }
- return nil
-}
-
-func (x *CertificateTemplate) GetUpdateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdateTime
- }
- return nil
-}
-
-func (x *CertificateTemplate) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-// An [X509Parameters][google.cloud.security.privateca.v1.X509Parameters] is used to describe certain fields of an
-// X.509 certificate, such as the key usage fields, fields specific to CA
-// certificates, certificate policy extensions and custom extensions.
-type X509Parameters struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. Indicates the intended use for keys that correspond to a certificate.
- KeyUsage *KeyUsage `protobuf:"bytes,1,opt,name=key_usage,json=keyUsage,proto3" json:"key_usage,omitempty"`
- // Optional. Describes options in this [X509Parameters][google.cloud.security.privateca.v1.X509Parameters] that are relevant in a CA
- // certificate.
- CaOptions *X509Parameters_CaOptions `protobuf:"bytes,2,opt,name=ca_options,json=caOptions,proto3" json:"ca_options,omitempty"`
- // Optional. Describes the X.509 certificate policy object identifiers, per
- // https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
- PolicyIds []*ObjectId `protobuf:"bytes,3,rep,name=policy_ids,json=policyIds,proto3" json:"policy_ids,omitempty"`
- // Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses
- // that appear in the "Authority Information Access" extension in the
- // certificate.
- AiaOcspServers []string `protobuf:"bytes,4,rep,name=aia_ocsp_servers,json=aiaOcspServers,proto3" json:"aia_ocsp_servers,omitempty"`
- // Optional. Describes custom X.509 extensions.
- AdditionalExtensions []*X509Extension `protobuf:"bytes,5,rep,name=additional_extensions,json=additionalExtensions,proto3" json:"additional_extensions,omitempty"`
-}
-
-func (x *X509Parameters) Reset() {
- *x = X509Parameters{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *X509Parameters) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*X509Parameters) ProtoMessage() {}
-
-func (x *X509Parameters) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use X509Parameters.ProtoReflect.Descriptor instead.
-func (*X509Parameters) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *X509Parameters) GetKeyUsage() *KeyUsage {
- if x != nil {
- return x.KeyUsage
- }
- return nil
-}
-
-func (x *X509Parameters) GetCaOptions() *X509Parameters_CaOptions {
- if x != nil {
- return x.CaOptions
- }
- return nil
-}
-
-func (x *X509Parameters) GetPolicyIds() []*ObjectId {
- if x != nil {
- return x.PolicyIds
- }
- return nil
-}
-
-func (x *X509Parameters) GetAiaOcspServers() []string {
- if x != nil {
- return x.AiaOcspServers
- }
- return nil
-}
-
-func (x *X509Parameters) GetAdditionalExtensions() []*X509Extension {
- if x != nil {
- return x.AdditionalExtensions
- }
- return nil
-}
-
-// Describes a subordinate CA's issuers. This is either a resource name to a
-// known issuing [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], or a PEM issuer certificate chain.
-type SubordinateConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to SubordinateConfig:
- // *SubordinateConfig_CertificateAuthority
- // *SubordinateConfig_PemIssuerChain
- SubordinateConfig isSubordinateConfig_SubordinateConfig `protobuf_oneof:"subordinate_config"`
-}
-
-func (x *SubordinateConfig) Reset() {
- *x = SubordinateConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SubordinateConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubordinateConfig) ProtoMessage() {}
-
-func (x *SubordinateConfig) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SubordinateConfig.ProtoReflect.Descriptor instead.
-func (*SubordinateConfig) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{6}
-}
-
-func (m *SubordinateConfig) GetSubordinateConfig() isSubordinateConfig_SubordinateConfig {
- if m != nil {
- return m.SubordinateConfig
- }
- return nil
-}
-
-func (x *SubordinateConfig) GetCertificateAuthority() string {
- if x, ok := x.GetSubordinateConfig().(*SubordinateConfig_CertificateAuthority); ok {
- return x.CertificateAuthority
- }
- return ""
-}
-
-func (x *SubordinateConfig) GetPemIssuerChain() *SubordinateConfig_SubordinateConfigChain {
- if x, ok := x.GetSubordinateConfig().(*SubordinateConfig_PemIssuerChain); ok {
- return x.PemIssuerChain
- }
- return nil
-}
-
-type isSubordinateConfig_SubordinateConfig interface {
- isSubordinateConfig_SubordinateConfig()
-}
-
-type SubordinateConfig_CertificateAuthority struct {
- // Required. This can refer to a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] that was used to create a
- // subordinate [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]. This field is used for information
- // and usability purposes only. The resource name is in the format
- // `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- CertificateAuthority string `protobuf:"bytes,1,opt,name=certificate_authority,json=certificateAuthority,proto3,oneof"`
-}
-
-type SubordinateConfig_PemIssuerChain struct {
- // Required. Contains the PEM certificate chain for the issuers of this
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], but not pem certificate for this CA itself.
- PemIssuerChain *SubordinateConfig_SubordinateConfigChain `protobuf:"bytes,2,opt,name=pem_issuer_chain,json=pemIssuerChain,proto3,oneof"`
-}
-
-func (*SubordinateConfig_CertificateAuthority) isSubordinateConfig_SubordinateConfig() {}
-
-func (*SubordinateConfig_PemIssuerChain) isSubordinateConfig_SubordinateConfig() {}
-
-// A [PublicKey][google.cloud.security.privateca.v1.PublicKey] describes a public key.
-type PublicKey struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. A public key. The padding and encoding
- // must match with the `KeyFormat` value specified for the `format` field.
- Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- // Required. The format of the public key.
- Format PublicKey_KeyFormat `protobuf:"varint,2,opt,name=format,proto3,enum=google.cloud.security.privateca.v1.PublicKey_KeyFormat" json:"format,omitempty"`
-}
-
-func (x *PublicKey) Reset() {
- *x = PublicKey{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PublicKey) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PublicKey) ProtoMessage() {}
-
-func (x *PublicKey) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PublicKey.ProtoReflect.Descriptor instead.
-func (*PublicKey) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *PublicKey) GetKey() []byte {
- if x != nil {
- return x.Key
- }
- return nil
-}
-
-func (x *PublicKey) GetFormat() PublicKey_KeyFormat {
- if x != nil {
- return x.Format
- }
- return PublicKey_KEY_FORMAT_UNSPECIFIED
-}
-
-// A [CertificateConfig][google.cloud.security.privateca.v1.CertificateConfig] describes an X.509 certificate or CSR that is to be
-// created, as an alternative to using ASN.1.
-type CertificateConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. Specifies some of the values in a certificate that are related to the
- // subject.
- SubjectConfig *CertificateConfig_SubjectConfig `protobuf:"bytes,1,opt,name=subject_config,json=subjectConfig,proto3" json:"subject_config,omitempty"`
- // Required. Describes how some of the technical X.509 fields in a certificate should be
- // populated.
- X509Config *X509Parameters `protobuf:"bytes,2,opt,name=x509_config,json=x509Config,proto3" json:"x509_config,omitempty"`
- // Optional. The public key that corresponds to this config. This is, for example, used
- // when issuing [Certificates][google.cloud.security.privateca.v1.Certificate], but not when creating a
- // self-signed [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] or [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] CSR.
- PublicKey *PublicKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
-}
-
-func (x *CertificateConfig) Reset() {
- *x = CertificateConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateConfig) ProtoMessage() {}
-
-func (x *CertificateConfig) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateConfig.ProtoReflect.Descriptor instead.
-func (*CertificateConfig) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *CertificateConfig) GetSubjectConfig() *CertificateConfig_SubjectConfig {
- if x != nil {
- return x.SubjectConfig
- }
- return nil
-}
-
-func (x *CertificateConfig) GetX509Config() *X509Parameters {
- if x != nil {
- return x.X509Config
- }
- return nil
-}
-
-func (x *CertificateConfig) GetPublicKey() *PublicKey {
- if x != nil {
- return x.PublicKey
- }
- return nil
-}
-
-// A [CertificateDescription][google.cloud.security.privateca.v1.CertificateDescription] describes an X.509 certificate or CSR that has
-// been issued, as an alternative to using ASN.1 / X.509.
-type CertificateDescription struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Describes some of the values in a certificate that are related to the
- // subject and lifetime.
- SubjectDescription *CertificateDescription_SubjectDescription `protobuf:"bytes,1,opt,name=subject_description,json=subjectDescription,proto3" json:"subject_description,omitempty"`
- // Describes some of the technical X.509 fields in a certificate.
- X509Description *X509Parameters `protobuf:"bytes,2,opt,name=x509_description,json=x509Description,proto3" json:"x509_description,omitempty"`
- // The public key that corresponds to an issued certificate.
- PublicKey *PublicKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
- // Provides a means of identifiying certificates that contain a particular
- // public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.
- SubjectKeyId *CertificateDescription_KeyId `protobuf:"bytes,4,opt,name=subject_key_id,json=subjectKeyId,proto3" json:"subject_key_id,omitempty"`
- // Identifies the subject_key_id of the parent certificate, per
- // https://tools.ietf.org/html/rfc5280#section-4.2.1.1
- AuthorityKeyId *CertificateDescription_KeyId `protobuf:"bytes,5,opt,name=authority_key_id,json=authorityKeyId,proto3" json:"authority_key_id,omitempty"`
- // Describes a list of locations to obtain CRL information, i.e.
- // the DistributionPoint.fullName described by
- // https://tools.ietf.org/html/rfc5280#section-4.2.1.13
- CrlDistributionPoints []string `protobuf:"bytes,6,rep,name=crl_distribution_points,json=crlDistributionPoints,proto3" json:"crl_distribution_points,omitempty"`
- // Describes lists of issuer CA certificate URLs that appear in the
- // "Authority Information Access" extension in the certificate.
- AiaIssuingCertificateUrls []string `protobuf:"bytes,7,rep,name=aia_issuing_certificate_urls,json=aiaIssuingCertificateUrls,proto3" json:"aia_issuing_certificate_urls,omitempty"`
- // The hash of the x.509 certificate.
- CertFingerprint *CertificateDescription_CertificateFingerprint `protobuf:"bytes,8,opt,name=cert_fingerprint,json=certFingerprint,proto3" json:"cert_fingerprint,omitempty"`
-}
-
-func (x *CertificateDescription) Reset() {
- *x = CertificateDescription{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateDescription) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateDescription) ProtoMessage() {}
-
-func (x *CertificateDescription) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateDescription.ProtoReflect.Descriptor instead.
-func (*CertificateDescription) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *CertificateDescription) GetSubjectDescription() *CertificateDescription_SubjectDescription {
- if x != nil {
- return x.SubjectDescription
- }
- return nil
-}
-
-func (x *CertificateDescription) GetX509Description() *X509Parameters {
- if x != nil {
- return x.X509Description
- }
- return nil
-}
-
-func (x *CertificateDescription) GetPublicKey() *PublicKey {
- if x != nil {
- return x.PublicKey
- }
- return nil
-}
-
-func (x *CertificateDescription) GetSubjectKeyId() *CertificateDescription_KeyId {
- if x != nil {
- return x.SubjectKeyId
- }
- return nil
-}
-
-func (x *CertificateDescription) GetAuthorityKeyId() *CertificateDescription_KeyId {
- if x != nil {
- return x.AuthorityKeyId
- }
- return nil
-}
-
-func (x *CertificateDescription) GetCrlDistributionPoints() []string {
- if x != nil {
- return x.CrlDistributionPoints
- }
- return nil
-}
-
-func (x *CertificateDescription) GetAiaIssuingCertificateUrls() []string {
- if x != nil {
- return x.AiaIssuingCertificateUrls
- }
- return nil
-}
-
-func (x *CertificateDescription) GetCertFingerprint() *CertificateDescription_CertificateFingerprint {
- if x != nil {
- return x.CertFingerprint
- }
- return nil
-}
-
-// An [ObjectId][google.cloud.security.privateca.v1.ObjectId] specifies an object identifier (OID). These provide context
-// and describe types in ASN.1 messages.
-type ObjectId struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The parts of an OID path. The most significant parts of the path come
- // first.
- ObjectIdPath []int32 `protobuf:"varint,1,rep,packed,name=object_id_path,json=objectIdPath,proto3" json:"object_id_path,omitempty"`
-}
-
-func (x *ObjectId) Reset() {
- *x = ObjectId{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ObjectId) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ObjectId) ProtoMessage() {}
-
-func (x *ObjectId) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ObjectId.ProtoReflect.Descriptor instead.
-func (*ObjectId) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *ObjectId) GetObjectIdPath() []int32 {
- if x != nil {
- return x.ObjectIdPath
- }
- return nil
-}
-
-// An [X509Extension][google.cloud.security.privateca.v1.X509Extension] specifies an X.509 extension, which may be used in
-// different parts of X.509 objects like certificates, CSRs, and CRLs.
-type X509Extension struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The OID for this X.509 extension.
- ObjectId *ObjectId `protobuf:"bytes,1,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"`
- // Optional. Indicates whether or not this extension is critical (i.e., if the client
- // does not know how to handle this extension, the client should consider this
- // to be an error).
- Critical bool `protobuf:"varint,2,opt,name=critical,proto3" json:"critical,omitempty"`
- // Required. The value of this X.509 extension.
- Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *X509Extension) Reset() {
- *x = X509Extension{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *X509Extension) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*X509Extension) ProtoMessage() {}
-
-func (x *X509Extension) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use X509Extension.ProtoReflect.Descriptor instead.
-func (*X509Extension) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *X509Extension) GetObjectId() *ObjectId {
- if x != nil {
- return x.ObjectId
- }
- return nil
-}
-
-func (x *X509Extension) GetCritical() bool {
- if x != nil {
- return x.Critical
- }
- return false
-}
-
-func (x *X509Extension) GetValue() []byte {
- if x != nil {
- return x.Value
- }
- return nil
-}
-
-// A [KeyUsage][google.cloud.security.privateca.v1.KeyUsage] describes key usage values that may appear in an X.509
-// certificate.
-type KeyUsage struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Describes high-level ways in which a key may be used.
- BaseKeyUsage *KeyUsage_KeyUsageOptions `protobuf:"bytes,1,opt,name=base_key_usage,json=baseKeyUsage,proto3" json:"base_key_usage,omitempty"`
- // Detailed scenarios in which a key may be used.
- ExtendedKeyUsage *KeyUsage_ExtendedKeyUsageOptions `protobuf:"bytes,2,opt,name=extended_key_usage,json=extendedKeyUsage,proto3" json:"extended_key_usage,omitempty"`
- // Used to describe extended key usages that are not listed in the
- // [KeyUsage.ExtendedKeyUsageOptions][google.cloud.security.privateca.v1.KeyUsage.ExtendedKeyUsageOptions] message.
- UnknownExtendedKeyUsages []*ObjectId `protobuf:"bytes,3,rep,name=unknown_extended_key_usages,json=unknownExtendedKeyUsages,proto3" json:"unknown_extended_key_usages,omitempty"`
-}
-
-func (x *KeyUsage) Reset() {
- *x = KeyUsage{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *KeyUsage) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KeyUsage) ProtoMessage() {}
-
-func (x *KeyUsage) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use KeyUsage.ProtoReflect.Descriptor instead.
-func (*KeyUsage) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *KeyUsage) GetBaseKeyUsage() *KeyUsage_KeyUsageOptions {
- if x != nil {
- return x.BaseKeyUsage
- }
- return nil
-}
-
-func (x *KeyUsage) GetExtendedKeyUsage() *KeyUsage_ExtendedKeyUsageOptions {
- if x != nil {
- return x.ExtendedKeyUsage
- }
- return nil
-}
-
-func (x *KeyUsage) GetUnknownExtendedKeyUsages() []*ObjectId {
- if x != nil {
- return x.UnknownExtendedKeyUsages
- }
- return nil
-}
-
-// [Subject][google.cloud.security.privateca.v1.Subject] describes parts of a distinguished name that, in turn,
-// describes the subject of the certificate.
-type Subject struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The "common name" of the subject.
- CommonName string `protobuf:"bytes,1,opt,name=common_name,json=commonName,proto3" json:"common_name,omitempty"`
- // The country code of the subject.
- CountryCode string `protobuf:"bytes,2,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
- // The organization of the subject.
- Organization string `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"`
- // The organizational_unit of the subject.
- OrganizationalUnit string `protobuf:"bytes,4,opt,name=organizational_unit,json=organizationalUnit,proto3" json:"organizational_unit,omitempty"`
- // The locality or city of the subject.
- Locality string `protobuf:"bytes,5,opt,name=locality,proto3" json:"locality,omitempty"`
- // The province, territory, or regional state of the subject.
- Province string `protobuf:"bytes,6,opt,name=province,proto3" json:"province,omitempty"`
- // The street address of the subject.
- StreetAddress string `protobuf:"bytes,7,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"`
- // The postal code of the subject.
- PostalCode string `protobuf:"bytes,8,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"`
-}
-
-func (x *Subject) Reset() {
- *x = Subject{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Subject) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Subject) ProtoMessage() {}
-
-func (x *Subject) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Subject.ProtoReflect.Descriptor instead.
-func (*Subject) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Subject) GetCommonName() string {
- if x != nil {
- return x.CommonName
- }
- return ""
-}
-
-func (x *Subject) GetCountryCode() string {
- if x != nil {
- return x.CountryCode
- }
- return ""
-}
-
-func (x *Subject) GetOrganization() string {
- if x != nil {
- return x.Organization
- }
- return ""
-}
-
-func (x *Subject) GetOrganizationalUnit() string {
- if x != nil {
- return x.OrganizationalUnit
- }
- return ""
-}
-
-func (x *Subject) GetLocality() string {
- if x != nil {
- return x.Locality
- }
- return ""
-}
-
-func (x *Subject) GetProvince() string {
- if x != nil {
- return x.Province
- }
- return ""
-}
-
-func (x *Subject) GetStreetAddress() string {
- if x != nil {
- return x.StreetAddress
- }
- return ""
-}
-
-func (x *Subject) GetPostalCode() string {
- if x != nil {
- return x.PostalCode
- }
- return ""
-}
-
-// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] corresponds to a more modern way of listing what
-// the asserted identity is in a certificate (i.e., compared to the "common
-// name" in the distinguished name).
-type SubjectAltNames struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Contains only valid, fully-qualified host names.
- DnsNames []string `protobuf:"bytes,1,rep,name=dns_names,json=dnsNames,proto3" json:"dns_names,omitempty"`
- // Contains only valid RFC 3986 URIs.
- Uris []string `protobuf:"bytes,2,rep,name=uris,proto3" json:"uris,omitempty"`
- // Contains only valid RFC 2822 E-mail addresses.
- EmailAddresses []string `protobuf:"bytes,3,rep,name=email_addresses,json=emailAddresses,proto3" json:"email_addresses,omitempty"`
- // Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
- IpAddresses []string `protobuf:"bytes,4,rep,name=ip_addresses,json=ipAddresses,proto3" json:"ip_addresses,omitempty"`
- // Contains additional subject alternative name values.
- // For each custom_san, the `value` field must contain an ASN.1 encoded
- // UTF8String.
- CustomSans []*X509Extension `protobuf:"bytes,5,rep,name=custom_sans,json=customSans,proto3" json:"custom_sans,omitempty"`
-}
-
-func (x *SubjectAltNames) Reset() {
- *x = SubjectAltNames{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SubjectAltNames) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubjectAltNames) ProtoMessage() {}
-
-func (x *SubjectAltNames) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SubjectAltNames.ProtoReflect.Descriptor instead.
-func (*SubjectAltNames) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *SubjectAltNames) GetDnsNames() []string {
- if x != nil {
- return x.DnsNames
- }
- return nil
-}
-
-func (x *SubjectAltNames) GetUris() []string {
- if x != nil {
- return x.Uris
- }
- return nil
-}
-
-func (x *SubjectAltNames) GetEmailAddresses() []string {
- if x != nil {
- return x.EmailAddresses
- }
- return nil
-}
-
-func (x *SubjectAltNames) GetIpAddresses() []string {
- if x != nil {
- return x.IpAddresses
- }
- return nil
-}
-
-func (x *SubjectAltNames) GetCustomSans() []*X509Extension {
- if x != nil {
- return x.CustomSans
- }
- return nil
-}
-
-// Describes constraints on a [Certificate][google.cloud.security.privateca.v1.Certificate]'s [Subject][google.cloud.security.privateca.v1.Subject] and
-// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames].
-type CertificateIdentityConstraints struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. A CEL expression that may be used to validate the resolved X.509 Subject
- // and/or Subject Alternative Name before a certificate is signed.
- // To see the full allowed syntax and some examples, see
- // https://cloud.google.com/certificate-authority-service/docs/using-cel
- CelExpression *expr.Expr `protobuf:"bytes,1,opt,name=cel_expression,json=celExpression,proto3" json:"cel_expression,omitempty"`
- // Required. If this is true, the [Subject][google.cloud.security.privateca.v1.Subject] field may be copied from a certificate
- // request into the signed certificate. Otherwise, the requested [Subject][google.cloud.security.privateca.v1.Subject]
- // will be discarded.
- AllowSubjectPassthrough *bool `protobuf:"varint,2,opt,name=allow_subject_passthrough,json=allowSubjectPassthrough,proto3,oneof" json:"allow_subject_passthrough,omitempty"`
- // Required. If this is true, the [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] extension may be copied from a
- // certificate request into the signed certificate. Otherwise, the requested
- // [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] will be discarded.
- AllowSubjectAltNamesPassthrough *bool `protobuf:"varint,3,opt,name=allow_subject_alt_names_passthrough,json=allowSubjectAltNamesPassthrough,proto3,oneof" json:"allow_subject_alt_names_passthrough,omitempty"`
-}
-
-func (x *CertificateIdentityConstraints) Reset() {
- *x = CertificateIdentityConstraints{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateIdentityConstraints) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateIdentityConstraints) ProtoMessage() {}
-
-func (x *CertificateIdentityConstraints) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateIdentityConstraints.ProtoReflect.Descriptor instead.
-func (*CertificateIdentityConstraints) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *CertificateIdentityConstraints) GetCelExpression() *expr.Expr {
- if x != nil {
- return x.CelExpression
- }
- return nil
-}
-
-func (x *CertificateIdentityConstraints) GetAllowSubjectPassthrough() bool {
- if x != nil && x.AllowSubjectPassthrough != nil {
- return *x.AllowSubjectPassthrough
- }
- return false
-}
-
-func (x *CertificateIdentityConstraints) GetAllowSubjectAltNamesPassthrough() bool {
- if x != nil && x.AllowSubjectAltNamesPassthrough != nil {
- return *x.AllowSubjectAltNamesPassthrough
- }
- return false
-}
-
-// Describes a set of X.509 extensions that may be part of some certificate
-// issuance controls.
-type CertificateExtensionConstraints struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. A set of named X.509 extensions. Will be combined with
- // [additional_extensions][google.cloud.security.privateca.v1.CertificateExtensionConstraints.additional_extensions] to determine the full set of X.509 extensions.
- KnownExtensions []CertificateExtensionConstraints_KnownCertificateExtension `protobuf:"varint,1,rep,packed,name=known_extensions,json=knownExtensions,proto3,enum=google.cloud.security.privateca.v1.CertificateExtensionConstraints_KnownCertificateExtension" json:"known_extensions,omitempty"`
- // Optional. A set of [ObjectIds][google.cloud.security.privateca.v1.ObjectId] identifying custom X.509 extensions.
- // Will be combined with [known_extensions][google.cloud.security.privateca.v1.CertificateExtensionConstraints.known_extensions] to determine the full set of
- // X.509 extensions.
- AdditionalExtensions []*ObjectId `protobuf:"bytes,2,rep,name=additional_extensions,json=additionalExtensions,proto3" json:"additional_extensions,omitempty"`
-}
-
-func (x *CertificateExtensionConstraints) Reset() {
- *x = CertificateExtensionConstraints{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateExtensionConstraints) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateExtensionConstraints) ProtoMessage() {}
-
-func (x *CertificateExtensionConstraints) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateExtensionConstraints.ProtoReflect.Descriptor instead.
-func (*CertificateExtensionConstraints) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *CertificateExtensionConstraints) GetKnownExtensions() []CertificateExtensionConstraints_KnownCertificateExtension {
- if x != nil {
- return x.KnownExtensions
- }
- return nil
-}
-
-func (x *CertificateExtensionConstraints) GetAdditionalExtensions() []*ObjectId {
- if x != nil {
- return x.AdditionalExtensions
- }
- return nil
-}
-
-// URLs where a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will publish content.
-type CertificateAuthority_AccessUrls struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The URL where this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA certificate is
- // published. This will only be set for CAs that have been activated.
- CaCertificateAccessUrl string `protobuf:"bytes,1,opt,name=ca_certificate_access_url,json=caCertificateAccessUrl,proto3" json:"ca_certificate_access_url,omitempty"`
- // The URLs where this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CRLs are published. This
- // will only be set for CAs that have been activated.
- CrlAccessUrls []string `protobuf:"bytes,2,rep,name=crl_access_urls,json=crlAccessUrls,proto3" json:"crl_access_urls,omitempty"`
-}
-
-func (x *CertificateAuthority_AccessUrls) Reset() {
- *x = CertificateAuthority_AccessUrls{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateAuthority_AccessUrls) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateAuthority_AccessUrls) ProtoMessage() {}
-
-func (x *CertificateAuthority_AccessUrls) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateAuthority_AccessUrls.ProtoReflect.Descriptor instead.
-func (*CertificateAuthority_AccessUrls) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *CertificateAuthority_AccessUrls) GetCaCertificateAccessUrl() string {
- if x != nil {
- return x.CaCertificateAccessUrl
- }
- return ""
-}
-
-func (x *CertificateAuthority_AccessUrls) GetCrlAccessUrls() []string {
- if x != nil {
- return x.CrlAccessUrls
- }
- return nil
-}
-
-// A Cloud KMS key configuration that a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will use.
-type CertificateAuthority_KeyVersionSpec struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to KeyVersion:
- // *CertificateAuthority_KeyVersionSpec_CloudKmsKeyVersion
- // *CertificateAuthority_KeyVersionSpec_Algorithm
- KeyVersion isCertificateAuthority_KeyVersionSpec_KeyVersion `protobuf_oneof:"KeyVersion"`
-}
-
-func (x *CertificateAuthority_KeyVersionSpec) Reset() {
- *x = CertificateAuthority_KeyVersionSpec{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateAuthority_KeyVersionSpec) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateAuthority_KeyVersionSpec) ProtoMessage() {}
-
-func (x *CertificateAuthority_KeyVersionSpec) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateAuthority_KeyVersionSpec.ProtoReflect.Descriptor instead.
-func (*CertificateAuthority_KeyVersionSpec) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (m *CertificateAuthority_KeyVersionSpec) GetKeyVersion() isCertificateAuthority_KeyVersionSpec_KeyVersion {
- if m != nil {
- return m.KeyVersion
- }
- return nil
-}
-
-func (x *CertificateAuthority_KeyVersionSpec) GetCloudKmsKeyVersion() string {
- if x, ok := x.GetKeyVersion().(*CertificateAuthority_KeyVersionSpec_CloudKmsKeyVersion); ok {
- return x.CloudKmsKeyVersion
- }
- return ""
-}
-
-func (x *CertificateAuthority_KeyVersionSpec) GetAlgorithm() CertificateAuthority_SignHashAlgorithm {
- if x, ok := x.GetKeyVersion().(*CertificateAuthority_KeyVersionSpec_Algorithm); ok {
- return x.Algorithm
- }
- return CertificateAuthority_SIGN_HASH_ALGORITHM_UNSPECIFIED
-}
-
-type isCertificateAuthority_KeyVersionSpec_KeyVersion interface {
- isCertificateAuthority_KeyVersionSpec_KeyVersion()
-}
-
-type CertificateAuthority_KeyVersionSpec_CloudKmsKeyVersion struct {
- // The resource name for an existing Cloud KMS CryptoKeyVersion in the
- // format
- // `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.
- // This option enables full flexibility in the key's capabilities and
- // properties.
- CloudKmsKeyVersion string `protobuf:"bytes,1,opt,name=cloud_kms_key_version,json=cloudKmsKeyVersion,proto3,oneof"`
-}
-
-type CertificateAuthority_KeyVersionSpec_Algorithm struct {
- // The algorithm to use for creating a managed Cloud KMS key for a for a
- // simplified experience. All managed keys will be have their
- // [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] as `HSM`.
- Algorithm CertificateAuthority_SignHashAlgorithm `protobuf:"varint,2,opt,name=algorithm,proto3,enum=google.cloud.security.privateca.v1.CertificateAuthority_SignHashAlgorithm,oneof"`
-}
-
-func (*CertificateAuthority_KeyVersionSpec_CloudKmsKeyVersion) isCertificateAuthority_KeyVersionSpec_KeyVersion() {
-}
-
-func (*CertificateAuthority_KeyVersionSpec_Algorithm) isCertificateAuthority_KeyVersionSpec_KeyVersion() {
-}
-
-// Options relating to the publication of each [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA
-// certificate and CRLs and their inclusion as extensions in issued
-// [Certificates][google.cloud.security.privateca.v1.Certificate]. The options set here apply to certificates
-// issued by any [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the [CaPool][google.cloud.security.privateca.v1.CaPool].
-type CaPool_PublishingOptions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. When true, publishes each [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA certificate and
- // includes its URL in the "Authority Information Access" X.509 extension
- // in all issued [Certificates][google.cloud.security.privateca.v1.Certificate]. If this is false, the CA
- // certificate will not be published and the corresponding X.509 extension
- // will not be written in issued certificates.
- PublishCaCert bool `protobuf:"varint,1,opt,name=publish_ca_cert,json=publishCaCert,proto3" json:"publish_ca_cert,omitempty"`
- // Optional. When true, publishes each [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CRL and includes its
- // URL in the "CRL Distribution Points" X.509 extension in all issued
- // [Certificates][google.cloud.security.privateca.v1.Certificate]. If this is false, CRLs will not be published
- // and the corresponding X.509 extension will not be written in issued
- // certificates.
- // CRLs will expire 7 days from their creation. However, we will rebuild
- // daily. CRLs are also rebuilt shortly after a certificate is revoked.
- PublishCrl bool `protobuf:"varint,2,opt,name=publish_crl,json=publishCrl,proto3" json:"publish_crl,omitempty"`
-}
-
-func (x *CaPool_PublishingOptions) Reset() {
- *x = CaPool_PublishingOptions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CaPool_PublishingOptions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CaPool_PublishingOptions) ProtoMessage() {}
-
-func (x *CaPool_PublishingOptions) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CaPool_PublishingOptions.ProtoReflect.Descriptor instead.
-func (*CaPool_PublishingOptions) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 0}
-}
-
-func (x *CaPool_PublishingOptions) GetPublishCaCert() bool {
- if x != nil {
- return x.PublishCaCert
- }
- return false
-}
-
-func (x *CaPool_PublishingOptions) GetPublishCrl() bool {
- if x != nil {
- return x.PublishCrl
- }
- return false
-}
-
-// Defines controls over all certificate issuance within a [CaPool][google.cloud.security.privateca.v1.CaPool].
-type CaPool_IssuancePolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. If any [AllowedKeyType][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType] is specified, then the certificate request's
- // public key must match one of the key types listed here. Otherwise,
- // any key may be used.
- AllowedKeyTypes []*CaPool_IssuancePolicy_AllowedKeyType `protobuf:"bytes,1,rep,name=allowed_key_types,json=allowedKeyTypes,proto3" json:"allowed_key_types,omitempty"`
- // Optional. The maximum lifetime allowed for issued [Certificates][google.cloud.security.privateca.v1.Certificate]. Note
- // that if the issuing [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] expires before a
- // [Certificate][google.cloud.security.privateca.v1.Certificate]'s requested maximum_lifetime, the effective lifetime will
- // be explicitly truncated to match it.
- MaximumLifetime *durationpb.Duration `protobuf:"bytes,2,opt,name=maximum_lifetime,json=maximumLifetime,proto3" json:"maximum_lifetime,omitempty"`
- // Optional. If specified, then only methods allowed in the [IssuanceModes][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.IssuanceModes] may be
- // used to issue [Certificates][google.cloud.security.privateca.v1.Certificate].
- AllowedIssuanceModes *CaPool_IssuancePolicy_IssuanceModes `protobuf:"bytes,3,opt,name=allowed_issuance_modes,json=allowedIssuanceModes,proto3" json:"allowed_issuance_modes,omitempty"`
- // Optional. A set of X.509 values that will be applied to all certificates issued
- // through this [CaPool][google.cloud.security.privateca.v1.CaPool]. If a certificate request includes conflicting
- // values for the same properties, they will be overwritten by the values
- // defined here. If a certificate request uses a [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate]
- // that defines conflicting
- // [predefined_values][google.cloud.security.privateca.v1.CertificateTemplate.predefined_values] for the same
- // properties, the certificate issuance request will fail.
- BaselineValues *X509Parameters `protobuf:"bytes,4,opt,name=baseline_values,json=baselineValues,proto3" json:"baseline_values,omitempty"`
- // Optional. Describes constraints on identities that may appear in
- // [Certificates][google.cloud.security.privateca.v1.Certificate] issued through this [CaPool][google.cloud.security.privateca.v1.CaPool].
- // If this is omitted, then this [CaPool][google.cloud.security.privateca.v1.CaPool] will not add restrictions on a
- // certificate's identity.
- IdentityConstraints *CertificateIdentityConstraints `protobuf:"bytes,5,opt,name=identity_constraints,json=identityConstraints,proto3" json:"identity_constraints,omitempty"`
- // Optional. Describes the set of X.509 extensions that may appear in a
- // [Certificate][google.cloud.security.privateca.v1.Certificate] issued through this [CaPool][google.cloud.security.privateca.v1.CaPool]. If a certificate request
- // sets extensions that don't appear in the [passthrough_extensions][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.passthrough_extensions],
- // those extensions will be dropped. If a certificate request uses a
- // [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] with
- // [predefined_values][google.cloud.security.privateca.v1.CertificateTemplate.predefined_values] that don't
- // appear here, the certificate issuance request will fail. If this is
- // omitted, then this [CaPool][google.cloud.security.privateca.v1.CaPool] will not add restrictions on a
- // certificate's X.509 extensions. These constraints do not apply to X.509
- // extensions set in this [CaPool][google.cloud.security.privateca.v1.CaPool]'s [baseline_values][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.baseline_values].
- PassthroughExtensions *CertificateExtensionConstraints `protobuf:"bytes,6,opt,name=passthrough_extensions,json=passthroughExtensions,proto3" json:"passthrough_extensions,omitempty"`
-}
-
-func (x *CaPool_IssuancePolicy) Reset() {
- *x = CaPool_IssuancePolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CaPool_IssuancePolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CaPool_IssuancePolicy) ProtoMessage() {}
-
-func (x *CaPool_IssuancePolicy) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[21]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CaPool_IssuancePolicy.ProtoReflect.Descriptor instead.
-func (*CaPool_IssuancePolicy) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 1}
-}
-
-func (x *CaPool_IssuancePolicy) GetAllowedKeyTypes() []*CaPool_IssuancePolicy_AllowedKeyType {
- if x != nil {
- return x.AllowedKeyTypes
- }
- return nil
-}
-
-func (x *CaPool_IssuancePolicy) GetMaximumLifetime() *durationpb.Duration {
- if x != nil {
- return x.MaximumLifetime
- }
- return nil
-}
-
-func (x *CaPool_IssuancePolicy) GetAllowedIssuanceModes() *CaPool_IssuancePolicy_IssuanceModes {
- if x != nil {
- return x.AllowedIssuanceModes
- }
- return nil
-}
-
-func (x *CaPool_IssuancePolicy) GetBaselineValues() *X509Parameters {
- if x != nil {
- return x.BaselineValues
- }
- return nil
-}
-
-func (x *CaPool_IssuancePolicy) GetIdentityConstraints() *CertificateIdentityConstraints {
- if x != nil {
- return x.IdentityConstraints
- }
- return nil
-}
-
-func (x *CaPool_IssuancePolicy) GetPassthroughExtensions() *CertificateExtensionConstraints {
- if x != nil {
- return x.PassthroughExtensions
- }
- return nil
-}
-
-// Describes a "type" of key that may be used in a [Certificate][google.cloud.security.privateca.v1.Certificate] issued
-// from a [CaPool][google.cloud.security.privateca.v1.CaPool].
-// Note that a single [AllowedKeyType][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType] may refer to either a
-// fully-qualified key algorithm, such as RSA 4096, or a family of key
-// algorithms, such as any RSA key.
-type CaPool_IssuancePolicy_AllowedKeyType struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to KeyType:
- // *CaPool_IssuancePolicy_AllowedKeyType_Rsa
- // *CaPool_IssuancePolicy_AllowedKeyType_EllipticCurve
- KeyType isCaPool_IssuancePolicy_AllowedKeyType_KeyType `protobuf_oneof:"key_type"`
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType) Reset() {
- *x = CaPool_IssuancePolicy_AllowedKeyType{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CaPool_IssuancePolicy_AllowedKeyType) ProtoMessage() {}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[23]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CaPool_IssuancePolicy_AllowedKeyType.ProtoReflect.Descriptor instead.
-func (*CaPool_IssuancePolicy_AllowedKeyType) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 1, 0}
-}
-
-func (m *CaPool_IssuancePolicy_AllowedKeyType) GetKeyType() isCaPool_IssuancePolicy_AllowedKeyType_KeyType {
- if m != nil {
- return m.KeyType
- }
- return nil
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType) GetRsa() *CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType {
- if x, ok := x.GetKeyType().(*CaPool_IssuancePolicy_AllowedKeyType_Rsa); ok {
- return x.Rsa
- }
- return nil
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType) GetEllipticCurve() *CaPool_IssuancePolicy_AllowedKeyType_EcKeyType {
- if x, ok := x.GetKeyType().(*CaPool_IssuancePolicy_AllowedKeyType_EllipticCurve); ok {
- return x.EllipticCurve
- }
- return nil
-}
-
-type isCaPool_IssuancePolicy_AllowedKeyType_KeyType interface {
- isCaPool_IssuancePolicy_AllowedKeyType_KeyType()
-}
-
-type CaPool_IssuancePolicy_AllowedKeyType_Rsa struct {
- // Represents an allowed RSA key type.
- Rsa *CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType `protobuf:"bytes,1,opt,name=rsa,proto3,oneof"`
-}
-
-type CaPool_IssuancePolicy_AllowedKeyType_EllipticCurve struct {
- // Represents an allowed Elliptic Curve key type.
- EllipticCurve *CaPool_IssuancePolicy_AllowedKeyType_EcKeyType `protobuf:"bytes,2,opt,name=elliptic_curve,json=ellipticCurve,proto3,oneof"`
-}
-
-func (*CaPool_IssuancePolicy_AllowedKeyType_Rsa) isCaPool_IssuancePolicy_AllowedKeyType_KeyType() {}
-
-func (*CaPool_IssuancePolicy_AllowedKeyType_EllipticCurve) isCaPool_IssuancePolicy_AllowedKeyType_KeyType() {
-}
-
-// [IssuanceModes][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.IssuanceModes] specifies the allowed ways in which
-// [Certificates][google.cloud.security.privateca.v1.Certificate] may be requested from this
-// [CaPool][google.cloud.security.privateca.v1.CaPool].
-type CaPool_IssuancePolicy_IssuanceModes struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. When true, allows callers to create [Certificates][google.cloud.security.privateca.v1.Certificate] by
- // specifying a CSR.
- AllowCsrBasedIssuance bool `protobuf:"varint,1,opt,name=allow_csr_based_issuance,json=allowCsrBasedIssuance,proto3" json:"allow_csr_based_issuance,omitempty"`
- // Optional. When true, allows callers to create [Certificates][google.cloud.security.privateca.v1.Certificate] by
- // specifying a [CertificateConfig][google.cloud.security.privateca.v1.CertificateConfig].
- AllowConfigBasedIssuance bool `protobuf:"varint,2,opt,name=allow_config_based_issuance,json=allowConfigBasedIssuance,proto3" json:"allow_config_based_issuance,omitempty"`
-}
-
-func (x *CaPool_IssuancePolicy_IssuanceModes) Reset() {
- *x = CaPool_IssuancePolicy_IssuanceModes{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[24]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CaPool_IssuancePolicy_IssuanceModes) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CaPool_IssuancePolicy_IssuanceModes) ProtoMessage() {}
-
-func (x *CaPool_IssuancePolicy_IssuanceModes) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[24]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CaPool_IssuancePolicy_IssuanceModes.ProtoReflect.Descriptor instead.
-func (*CaPool_IssuancePolicy_IssuanceModes) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 1, 1}
-}
-
-func (x *CaPool_IssuancePolicy_IssuanceModes) GetAllowCsrBasedIssuance() bool {
- if x != nil {
- return x.AllowCsrBasedIssuance
- }
- return false
-}
-
-func (x *CaPool_IssuancePolicy_IssuanceModes) GetAllowConfigBasedIssuance() bool {
- if x != nil {
- return x.AllowConfigBasedIssuance
- }
- return false
-}
-
-// Describes an RSA key that may be used in a [Certificate][google.cloud.security.privateca.v1.Certificate] issued from
-// a [CaPool][google.cloud.security.privateca.v1.CaPool].
-type CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. The minimum allowed RSA modulus size (inclusive), in bits. If this is
- // not set, or if set to zero, the service-level min RSA modulus size
- // will continue to apply.
- MinModulusSize int64 `protobuf:"varint,1,opt,name=min_modulus_size,json=minModulusSize,proto3" json:"min_modulus_size,omitempty"`
- // Optional. The maximum allowed RSA modulus size (inclusive), in bits. If this is
- // not set, or if set to zero, the service will not enforce an explicit
- // upper bound on RSA modulus sizes.
- MaxModulusSize int64 `protobuf:"varint,2,opt,name=max_modulus_size,json=maxModulusSize,proto3" json:"max_modulus_size,omitempty"`
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType) Reset() {
- *x = CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType) ProtoMessage() {}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[25]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType.ProtoReflect.Descriptor instead.
-func (*CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 1, 0, 0}
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType) GetMinModulusSize() int64 {
- if x != nil {
- return x.MinModulusSize
- }
- return 0
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType) GetMaxModulusSize() int64 {
- if x != nil {
- return x.MaxModulusSize
- }
- return 0
-}
-
-// Describes an Elliptic Curve key that may be used in a [Certificate][google.cloud.security.privateca.v1.Certificate]
-// issued from a [CaPool][google.cloud.security.privateca.v1.CaPool].
-type CaPool_IssuancePolicy_AllowedKeyType_EcKeyType struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. A signature algorithm that must be used. If this is omitted, any
- // EC-based signature algorithm will be allowed.
- SignatureAlgorithm CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm `protobuf:"varint,1,opt,name=signature_algorithm,json=signatureAlgorithm,proto3,enum=google.cloud.security.privateca.v1.CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm" json:"signature_algorithm,omitempty"`
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_EcKeyType) Reset() {
- *x = CaPool_IssuancePolicy_AllowedKeyType_EcKeyType{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[26]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_EcKeyType) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CaPool_IssuancePolicy_AllowedKeyType_EcKeyType) ProtoMessage() {}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_EcKeyType) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[26]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CaPool_IssuancePolicy_AllowedKeyType_EcKeyType.ProtoReflect.Descriptor instead.
-func (*CaPool_IssuancePolicy_AllowedKeyType_EcKeyType) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{1, 1, 0, 1}
-}
-
-func (x *CaPool_IssuancePolicy_AllowedKeyType_EcKeyType) GetSignatureAlgorithm() CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm {
- if x != nil {
- return x.SignatureAlgorithm
- }
- return CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EC_SIGNATURE_ALGORITHM_UNSPECIFIED
-}
-
-// Describes a revoked [Certificate][google.cloud.security.privateca.v1.Certificate].
-type CertificateRevocationList_RevokedCertificate struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The resource name for the [Certificate][google.cloud.security.privateca.v1.Certificate] in the format
- // `projects/*/locations/*/caPools/*/certificates/*`.
- Certificate string `protobuf:"bytes,1,opt,name=certificate,proto3" json:"certificate,omitempty"`
- // The serial number of the [Certificate][google.cloud.security.privateca.v1.Certificate].
- HexSerialNumber string `protobuf:"bytes,2,opt,name=hex_serial_number,json=hexSerialNumber,proto3" json:"hex_serial_number,omitempty"`
- // The reason the [Certificate][google.cloud.security.privateca.v1.Certificate] was revoked.
- RevocationReason RevocationReason `protobuf:"varint,3,opt,name=revocation_reason,json=revocationReason,proto3,enum=google.cloud.security.privateca.v1.RevocationReason" json:"revocation_reason,omitempty"`
-}
-
-func (x *CertificateRevocationList_RevokedCertificate) Reset() {
- *x = CertificateRevocationList_RevokedCertificate{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[27]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateRevocationList_RevokedCertificate) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateRevocationList_RevokedCertificate) ProtoMessage() {}
-
-func (x *CertificateRevocationList_RevokedCertificate) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[27]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateRevocationList_RevokedCertificate.ProtoReflect.Descriptor instead.
-func (*CertificateRevocationList_RevokedCertificate) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *CertificateRevocationList_RevokedCertificate) GetCertificate() string {
- if x != nil {
- return x.Certificate
- }
- return ""
-}
-
-func (x *CertificateRevocationList_RevokedCertificate) GetHexSerialNumber() string {
- if x != nil {
- return x.HexSerialNumber
- }
- return ""
-}
-
-func (x *CertificateRevocationList_RevokedCertificate) GetRevocationReason() RevocationReason {
- if x != nil {
- return x.RevocationReason
- }
- return RevocationReason_REVOCATION_REASON_UNSPECIFIED
-}
-
-// Describes fields that are relavent to the revocation of a [Certificate][google.cloud.security.privateca.v1.Certificate].
-type Certificate_RevocationDetails struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Indicates why a [Certificate][google.cloud.security.privateca.v1.Certificate] was revoked.
- RevocationState RevocationReason `protobuf:"varint,1,opt,name=revocation_state,json=revocationState,proto3,enum=google.cloud.security.privateca.v1.RevocationReason" json:"revocation_state,omitempty"`
- // The time at which this [Certificate][google.cloud.security.privateca.v1.Certificate] was revoked.
- RevocationTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=revocation_time,json=revocationTime,proto3" json:"revocation_time,omitempty"`
-}
-
-func (x *Certificate_RevocationDetails) Reset() {
- *x = Certificate_RevocationDetails{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[29]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Certificate_RevocationDetails) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Certificate_RevocationDetails) ProtoMessage() {}
-
-func (x *Certificate_RevocationDetails) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[29]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Certificate_RevocationDetails.ProtoReflect.Descriptor instead.
-func (*Certificate_RevocationDetails) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{3, 0}
-}
-
-func (x *Certificate_RevocationDetails) GetRevocationState() RevocationReason {
- if x != nil {
- return x.RevocationState
- }
- return RevocationReason_REVOCATION_REASON_UNSPECIFIED
-}
-
-func (x *Certificate_RevocationDetails) GetRevocationTime() *timestamppb.Timestamp {
- if x != nil {
- return x.RevocationTime
- }
- return nil
-}
-
-// Describes values that are relevant in a CA certificate.
-type X509Parameters_CaOptions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. Refers to the "CA" X.509 extension, which is a boolean value. When this
- // value is missing, the extension will be omitted from the CA certificate.
- IsCa *bool `protobuf:"varint,1,opt,name=is_ca,json=isCa,proto3,oneof" json:"is_ca,omitempty"`
- // Optional. Refers to the path length restriction X.509 extension. For a CA
- // certificate, this value describes the depth of subordinate CA
- // certificates that are allowed.
- // If this value is less than 0, the request will fail.
- // If this value is missing, the max path length will be omitted from the
- // CA certificate.
- MaxIssuerPathLength *int32 `protobuf:"varint,2,opt,name=max_issuer_path_length,json=maxIssuerPathLength,proto3,oneof" json:"max_issuer_path_length,omitempty"`
-}
-
-func (x *X509Parameters_CaOptions) Reset() {
- *x = X509Parameters_CaOptions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[32]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *X509Parameters_CaOptions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*X509Parameters_CaOptions) ProtoMessage() {}
-
-func (x *X509Parameters_CaOptions) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[32]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use X509Parameters_CaOptions.ProtoReflect.Descriptor instead.
-func (*X509Parameters_CaOptions) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{5, 0}
-}
-
-func (x *X509Parameters_CaOptions) GetIsCa() bool {
- if x != nil && x.IsCa != nil {
- return *x.IsCa
- }
- return false
-}
-
-func (x *X509Parameters_CaOptions) GetMaxIssuerPathLength() int32 {
- if x != nil && x.MaxIssuerPathLength != nil {
- return *x.MaxIssuerPathLength
- }
- return 0
-}
-
-// This message describes a subordinate CA's issuer certificate chain. This
-// wrapper exists for compatibility reasons.
-type SubordinateConfig_SubordinateConfigChain struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. Expected to be in leaf-to-root order according to RFC 5246.
- PemCertificates []string `protobuf:"bytes,1,rep,name=pem_certificates,json=pemCertificates,proto3" json:"pem_certificates,omitempty"`
-}
-
-func (x *SubordinateConfig_SubordinateConfigChain) Reset() {
- *x = SubordinateConfig_SubordinateConfigChain{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[33]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SubordinateConfig_SubordinateConfigChain) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubordinateConfig_SubordinateConfigChain) ProtoMessage() {}
-
-func (x *SubordinateConfig_SubordinateConfigChain) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[33]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SubordinateConfig_SubordinateConfigChain.ProtoReflect.Descriptor instead.
-func (*SubordinateConfig_SubordinateConfigChain) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{6, 0}
-}
-
-func (x *SubordinateConfig_SubordinateConfigChain) GetPemCertificates() []string {
- if x != nil {
- return x.PemCertificates
- }
- return nil
-}
-
-// These values are used to create the distinguished name and subject
-// alternative name fields in an X.509 certificate.
-type CertificateConfig_SubjectConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. Contains distinguished name fields such as the common name, location and
- // organization.
- Subject *Subject `protobuf:"bytes,1,opt,name=subject,proto3" json:"subject,omitempty"`
- // Optional. The subject alternative name fields.
- SubjectAltName *SubjectAltNames `protobuf:"bytes,2,opt,name=subject_alt_name,json=subjectAltName,proto3" json:"subject_alt_name,omitempty"`
-}
-
-func (x *CertificateConfig_SubjectConfig) Reset() {
- *x = CertificateConfig_SubjectConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[34]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateConfig_SubjectConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateConfig_SubjectConfig) ProtoMessage() {}
-
-func (x *CertificateConfig_SubjectConfig) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[34]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateConfig_SubjectConfig.ProtoReflect.Descriptor instead.
-func (*CertificateConfig_SubjectConfig) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{8, 0}
-}
-
-func (x *CertificateConfig_SubjectConfig) GetSubject() *Subject {
- if x != nil {
- return x.Subject
- }
- return nil
-}
-
-func (x *CertificateConfig_SubjectConfig) GetSubjectAltName() *SubjectAltNames {
- if x != nil {
- return x.SubjectAltName
- }
- return nil
-}
-
-// These values describe fields in an issued X.509 certificate such as the
-// distinguished name, subject alternative names, serial number, and lifetime.
-type CertificateDescription_SubjectDescription struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Contains distinguished name fields such as the common name, location and
- // / organization.
- Subject *Subject `protobuf:"bytes,1,opt,name=subject,proto3" json:"subject,omitempty"`
- // The subject alternative name fields.
- SubjectAltName *SubjectAltNames `protobuf:"bytes,2,opt,name=subject_alt_name,json=subjectAltName,proto3" json:"subject_alt_name,omitempty"`
- // The serial number encoded in lowercase hexadecimal.
- HexSerialNumber string `protobuf:"bytes,3,opt,name=hex_serial_number,json=hexSerialNumber,proto3" json:"hex_serial_number,omitempty"`
- // For convenience, the actual lifetime of an issued certificate.
- Lifetime *durationpb.Duration `protobuf:"bytes,4,opt,name=lifetime,proto3" json:"lifetime,omitempty"`
- // The time at which the certificate becomes valid.
- NotBeforeTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=not_before_time,json=notBeforeTime,proto3" json:"not_before_time,omitempty"`
- // The time after which the certificate is expired.
- // Per RFC 5280, the validity period for a certificate is the period of time
- // from not_before_time through not_after_time, inclusive.
- // Corresponds to 'not_before_time' + 'lifetime' - 1 second.
- NotAfterTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=not_after_time,json=notAfterTime,proto3" json:"not_after_time,omitempty"`
-}
-
-func (x *CertificateDescription_SubjectDescription) Reset() {
- *x = CertificateDescription_SubjectDescription{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[35]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateDescription_SubjectDescription) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateDescription_SubjectDescription) ProtoMessage() {}
-
-func (x *CertificateDescription_SubjectDescription) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[35]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateDescription_SubjectDescription.ProtoReflect.Descriptor instead.
-func (*CertificateDescription_SubjectDescription) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{9, 0}
-}
-
-func (x *CertificateDescription_SubjectDescription) GetSubject() *Subject {
- if x != nil {
- return x.Subject
- }
- return nil
-}
-
-func (x *CertificateDescription_SubjectDescription) GetSubjectAltName() *SubjectAltNames {
- if x != nil {
- return x.SubjectAltName
- }
- return nil
-}
-
-func (x *CertificateDescription_SubjectDescription) GetHexSerialNumber() string {
- if x != nil {
- return x.HexSerialNumber
- }
- return ""
-}
-
-func (x *CertificateDescription_SubjectDescription) GetLifetime() *durationpb.Duration {
- if x != nil {
- return x.Lifetime
- }
- return nil
-}
-
-func (x *CertificateDescription_SubjectDescription) GetNotBeforeTime() *timestamppb.Timestamp {
- if x != nil {
- return x.NotBeforeTime
- }
- return nil
-}
-
-func (x *CertificateDescription_SubjectDescription) GetNotAfterTime() *timestamppb.Timestamp {
- if x != nil {
- return x.NotAfterTime
- }
- return nil
-}
-
-// A KeyId identifies a specific public key, usually by hashing the public
-// key.
-type CertificateDescription_KeyId struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most
- // likely the 160 bit SHA-1 hash of the public key.
- KeyId string `protobuf:"bytes,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
-}
-
-func (x *CertificateDescription_KeyId) Reset() {
- *x = CertificateDescription_KeyId{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[36]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateDescription_KeyId) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateDescription_KeyId) ProtoMessage() {}
-
-func (x *CertificateDescription_KeyId) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[36]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateDescription_KeyId.ProtoReflect.Descriptor instead.
-func (*CertificateDescription_KeyId) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{9, 1}
-}
-
-func (x *CertificateDescription_KeyId) GetKeyId() string {
- if x != nil {
- return x.KeyId
- }
- return ""
-}
-
-// A group of fingerprints for the x509 certificate.
-type CertificateDescription_CertificateFingerprint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.
- Sha256Hash string `protobuf:"bytes,1,opt,name=sha256_hash,json=sha256Hash,proto3" json:"sha256_hash,omitempty"`
-}
-
-func (x *CertificateDescription_CertificateFingerprint) Reset() {
- *x = CertificateDescription_CertificateFingerprint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[37]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateDescription_CertificateFingerprint) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateDescription_CertificateFingerprint) ProtoMessage() {}
-
-func (x *CertificateDescription_CertificateFingerprint) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[37]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateDescription_CertificateFingerprint.ProtoReflect.Descriptor instead.
-func (*CertificateDescription_CertificateFingerprint) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{9, 2}
-}
-
-func (x *CertificateDescription_CertificateFingerprint) GetSha256Hash() string {
- if x != nil {
- return x.Sha256Hash
- }
- return ""
-}
-
-// [KeyUsage.KeyUsageOptions][google.cloud.security.privateca.v1.KeyUsage.KeyUsageOptions] corresponds to the key usage values
-// described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3.
-type KeyUsage_KeyUsageOptions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The key may be used for digital signatures.
- DigitalSignature bool `protobuf:"varint,1,opt,name=digital_signature,json=digitalSignature,proto3" json:"digital_signature,omitempty"`
- // The key may be used for cryptographic commitments. Note that this may
- // also be referred to as "non-repudiation".
- ContentCommitment bool `protobuf:"varint,2,opt,name=content_commitment,json=contentCommitment,proto3" json:"content_commitment,omitempty"`
- // The key may be used to encipher other keys.
- KeyEncipherment bool `protobuf:"varint,3,opt,name=key_encipherment,json=keyEncipherment,proto3" json:"key_encipherment,omitempty"`
- // The key may be used to encipher data.
- DataEncipherment bool `protobuf:"varint,4,opt,name=data_encipherment,json=dataEncipherment,proto3" json:"data_encipherment,omitempty"`
- // The key may be used in a key agreement protocol.
- KeyAgreement bool `protobuf:"varint,5,opt,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"`
- // The key may be used to sign certificates.
- CertSign bool `protobuf:"varint,6,opt,name=cert_sign,json=certSign,proto3" json:"cert_sign,omitempty"`
- // The key may be used sign certificate revocation lists.
- CrlSign bool `protobuf:"varint,7,opt,name=crl_sign,json=crlSign,proto3" json:"crl_sign,omitempty"`
- // The key may be used to encipher only.
- EncipherOnly bool `protobuf:"varint,8,opt,name=encipher_only,json=encipherOnly,proto3" json:"encipher_only,omitempty"`
- // The key may be used to decipher only.
- DecipherOnly bool `protobuf:"varint,9,opt,name=decipher_only,json=decipherOnly,proto3" json:"decipher_only,omitempty"`
-}
-
-func (x *KeyUsage_KeyUsageOptions) Reset() {
- *x = KeyUsage_KeyUsageOptions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[38]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *KeyUsage_KeyUsageOptions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KeyUsage_KeyUsageOptions) ProtoMessage() {}
-
-func (x *KeyUsage_KeyUsageOptions) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[38]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use KeyUsage_KeyUsageOptions.ProtoReflect.Descriptor instead.
-func (*KeyUsage_KeyUsageOptions) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{12, 0}
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetDigitalSignature() bool {
- if x != nil {
- return x.DigitalSignature
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetContentCommitment() bool {
- if x != nil {
- return x.ContentCommitment
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetKeyEncipherment() bool {
- if x != nil {
- return x.KeyEncipherment
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetDataEncipherment() bool {
- if x != nil {
- return x.DataEncipherment
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetKeyAgreement() bool {
- if x != nil {
- return x.KeyAgreement
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetCertSign() bool {
- if x != nil {
- return x.CertSign
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetCrlSign() bool {
- if x != nil {
- return x.CrlSign
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetEncipherOnly() bool {
- if x != nil {
- return x.EncipherOnly
- }
- return false
-}
-
-func (x *KeyUsage_KeyUsageOptions) GetDecipherOnly() bool {
- if x != nil {
- return x.DecipherOnly
- }
- return false
-}
-
-// [KeyUsage.ExtendedKeyUsageOptions][google.cloud.security.privateca.v1.KeyUsage.ExtendedKeyUsageOptions] has fields that correspond to
-// certain common OIDs that could be specified as an extended key usage value.
-type KeyUsage_ExtendedKeyUsageOptions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as "TLS WWW
- // server authentication", though regularly used for non-WWW TLS.
- ServerAuth bool `protobuf:"varint,1,opt,name=server_auth,json=serverAuth,proto3" json:"server_auth,omitempty"`
- // Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as "TLS WWW
- // client authentication", though regularly used for non-WWW TLS.
- ClientAuth bool `protobuf:"varint,2,opt,name=client_auth,json=clientAuth,proto3" json:"client_auth,omitempty"`
- // Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as "Signing of
- // downloadable executable code client authentication".
- CodeSigning bool `protobuf:"varint,3,opt,name=code_signing,json=codeSigning,proto3" json:"code_signing,omitempty"`
- // Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as "Email
- // protection".
- EmailProtection bool `protobuf:"varint,4,opt,name=email_protection,json=emailProtection,proto3" json:"email_protection,omitempty"`
- // Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as "Binding
- // the hash of an object to a time".
- TimeStamping bool `protobuf:"varint,5,opt,name=time_stamping,json=timeStamping,proto3" json:"time_stamping,omitempty"`
- // Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as "Signing
- // OCSP responses".
- OcspSigning bool `protobuf:"varint,6,opt,name=ocsp_signing,json=ocspSigning,proto3" json:"ocsp_signing,omitempty"`
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) Reset() {
- *x = KeyUsage_ExtendedKeyUsageOptions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[39]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KeyUsage_ExtendedKeyUsageOptions) ProtoMessage() {}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_resources_proto_msgTypes[39]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use KeyUsage_ExtendedKeyUsageOptions.ProtoReflect.Descriptor instead.
-func (*KeyUsage_ExtendedKeyUsageOptions) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP(), []int{12, 1}
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) GetServerAuth() bool {
- if x != nil {
- return x.ServerAuth
- }
- return false
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) GetClientAuth() bool {
- if x != nil {
- return x.ClientAuth
- }
- return false
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) GetCodeSigning() bool {
- if x != nil {
- return x.CodeSigning
- }
- return false
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) GetEmailProtection() bool {
- if x != nil {
- return x.EmailProtection
- }
- return false
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) GetTimeStamping() bool {
- if x != nil {
- return x.TimeStamping
- }
- return false
-}
-
-func (x *KeyUsage_ExtendedKeyUsageOptions) GetOcspSigning() bool {
- if x != nil {
- return x.OcspSigning
- }
- return false
-}
-
-var File_google_cloud_security_privateca_v1_resources_proto protoreflect.FileDescriptor
-
-var file_google_cloud_security_privateca_v1_resources_proto_rawDesc = []byte{
- 0x0a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
- 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65,
- 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x12, 0x0a, 0x14,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x58,
- 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x05, 0xe2, 0x41, 0x02,
- 0x02, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42,
- 0x05, 0xe2, 0x41, 0x02, 0x02, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c,
- 0x0a, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x05, 0xe2, 0x41, 0x02,
- 0x02, 0x05, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x69, 0x0a, 0x08,
- 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x42, 0x05, 0xe2, 0x41, 0x02, 0x02, 0x05, 0x52, 0x07,
- 0x6b, 0x65, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x6f, 0x72,
- 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69,
- 0x6e, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x11, 0x73, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x69, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x54, 0x69,
- 0x65, 0x72, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x04, 0x74, 0x69, 0x65, 0x72, 0x12, 0x5a,
- 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x70, 0x65,
- 0x6d, 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x11, 0x70,
- 0x65, 0x6d, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73,
- 0x12, 0x80, 0x01, 0x0a, 0x1b, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x19, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65,
- 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x05, 0x52, 0x09, 0x67,
- 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x6a, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65,
- 0x73, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72,
- 0x6c, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
- 0x55, 0x72, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x64, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a,
- 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65,
- 0x12, 0x62, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
- 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x06, 0x6c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x6f, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72,
- 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a,
- 0x0f, 0x63, 0x72, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73,
- 0x73, 0x55, 0x72, 0x6c, 0x73, 0x1a, 0xbf, 0x01, 0x0a, 0x0e, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a,
- 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
- 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x48,
- 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x48, 0x00, 0x52, 0x09,
- 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x0c, 0x0a, 0x0a, 0x4b, 0x65, 0x79,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0x3e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59,
- 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
- 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x10,
- 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x55, 0x42, 0x4f, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x54, 0x45,
- 0x10, 0x02, 0x22, 0x70, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53,
- 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
- 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12,
- 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a,
- 0x06, 0x53, 0x54, 0x41, 0x47, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x57, 0x41,
- 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56,
- 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54,
- 0x45, 0x44, 0x10, 0x05, 0x22, 0xfc, 0x01, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73,
- 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x49,
- 0x47, 0x4e, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48,
- 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x17, 0x0a, 0x13, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x53, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x5f,
- 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x53, 0x41, 0x5f,
- 0x50, 0x53, 0x53, 0x5f, 0x33, 0x30, 0x37, 0x32, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10,
- 0x02, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x53, 0x53, 0x5f, 0x34, 0x30, 0x39,
- 0x36, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x53,
- 0x41, 0x5f, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x5f, 0x53, 0x48, 0x41,
- 0x32, 0x35, 0x36, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x4b, 0x43,
- 0x53, 0x31, 0x5f, 0x33, 0x30, 0x37, 0x32, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x07,
- 0x12, 0x19, 0x0a, 0x15, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x5f, 0x34, 0x30,
- 0x39, 0x36, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45,
- 0x43, 0x5f, 0x50, 0x32, 0x35, 0x36, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x04, 0x12,
- 0x12, 0x0a, 0x0e, 0x45, 0x43, 0x5f, 0x50, 0x33, 0x38, 0x34, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38,
- 0x34, 0x10, 0x05, 0x3a, 0x9d, 0x01, 0xea, 0x41, 0x99, 0x01, 0x0a, 0x2d, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x68, 0x70, 0x72, 0x6f, 0x6a, 0x65,
- 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x7d, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x5f, 0x70,
- 0x6f, 0x6f, 0x6c, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x7d, 0x22, 0xce, 0x11, 0x0a, 0x06, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x18,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x04, 0x74, 0x69, 0x65, 0x72,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f,
- 0x6f, 0x6c, 0x2e, 0x54, 0x69, 0x65, 0x72, 0x42, 0x05, 0xe2, 0x41, 0x02, 0x02, 0x05, 0x52, 0x04,
- 0x74, 0x69, 0x65, 0x72, 0x12, 0x68, 0x0a, 0x0f, 0x69, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65,
- 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e,
- 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0e,
- 0x69, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x71,
- 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e,
- 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x11,
- 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52,
- 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x68, 0x0a, 0x11, 0x50, 0x75, 0x62, 0x6c, 0x69,
- 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0f,
- 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x75, 0x62,
- 0x6c, 0x69, 0x73, 0x68, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x70, 0x75,
- 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x63, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x72,
- 0x6c, 0x1a, 0xea, 0x0b, 0x0a, 0x0e, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x7a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f,
- 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x73, 0x75,
- 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77,
- 0x65, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52,
- 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73,
- 0x12, 0x4a, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6c, 0x69, 0x66, 0x65,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78,
- 0x69, 0x6d, 0x75, 0x6d, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x83, 0x01, 0x0a,
- 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63,
- 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e,
- 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63,
- 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x14, 0x61, 0x6c,
- 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64,
- 0x65, 0x73, 0x12, 0x61, 0x0a, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31,
- 0x2e, 0x58, 0x35, 0x30, 0x39, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x7b, 0x0a, 0x14, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x73,
- 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x13, 0x69,
- 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e,
- 0x74, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75,
- 0x67, 0x68, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
- 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x15,
- 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x45, 0x78, 0x74, 0x65, 0x6e,
- 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x90, 0x05, 0x0a, 0x0e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
- 0x64, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x67, 0x0a, 0x03, 0x72, 0x73, 0x61, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f,
- 0x6c, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e,
- 0x52, 0x73, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x03, 0x72, 0x73,
- 0x61, 0x12, 0x7b, 0x0a, 0x0e, 0x65, 0x6c, 0x6c, 0x69, 0x70, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x75,
- 0x72, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x54,
- 0x79, 0x70, 0x65, 0x2e, 0x45, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52,
- 0x0d, 0x65, 0x6c, 0x6c, 0x69, 0x70, 0x74, 0x69, 0x63, 0x43, 0x75, 0x72, 0x76, 0x65, 0x1a, 0x6c,
- 0x0a, 0x0a, 0x52, 0x73, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x10,
- 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0e, 0x6d, 0x69,
- 0x6e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2e, 0x0a, 0x10,
- 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0e, 0x6d, 0x61,
- 0x78, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x9d, 0x02, 0x0a,
- 0x09, 0x45, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x13, 0x73,
- 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74,
- 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61,
- 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x79,
- 0x70, 0x65, 0x2e, 0x45, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x63, 0x53,
- 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
- 0x6d, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
- 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x22, 0x6f, 0x0a, 0x14, 0x45,
- 0x63, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69,
- 0x74, 0x68, 0x6d, 0x12, 0x26, 0x0a, 0x22, 0x45, 0x43, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54,
- 0x55, 0x52, 0x45, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x55, 0x4e,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x45,
- 0x43, 0x44, 0x53, 0x41, 0x5f, 0x50, 0x32, 0x35, 0x36, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45,
- 0x43, 0x44, 0x53, 0x41, 0x5f, 0x50, 0x33, 0x38, 0x34, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x45,
- 0x44, 0x44, 0x53, 0x41, 0x5f, 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, 0x03, 0x42, 0x0a, 0x0a, 0x08,
- 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x93, 0x01, 0x0a, 0x0d, 0x49, 0x73, 0x73,
- 0x75, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x18, 0x61, 0x6c,
- 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x73, 0x72, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x69, 0x73,
- 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x01, 0x52, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x73, 0x72, 0x42, 0x61, 0x73, 0x65,
- 0x64, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x1b, 0x61, 0x6c, 0x6c,
- 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f,
- 0x69, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x01, 0x52, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x42, 0x61, 0x73, 0x65, 0x64, 0x49, 0x73, 0x73, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x39,
- 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x04, 0x54, 0x69, 0x65,
- 0x72, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x54, 0x45, 0x52,
- 0x50, 0x52, 0x49, 0x53, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x56, 0x4f, 0x50,
- 0x53, 0x10, 0x02, 0x3a, 0x5f, 0xea, 0x41, 0x5c, 0x0a, 0x1f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x39, 0x70, 0x72, 0x6f, 0x6a, 0x65,
- 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x7d, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x5f, 0x70,
- 0x6f, 0x6f, 0x6c, 0x7d, 0x22, 0xf4, 0x09, 0x0a, 0x19, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69,
- 0x73, 0x74, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x0f,
- 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0e, 0x73, 0x65, 0x71,
- 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x89, 0x01, 0x0a, 0x14,
- 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65,
- 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x03, 0x52, 0x13, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x65, 0x6d, 0x5f, 0x63,
- 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x06,
- 0x70, 0x65, 0x6d, 0x43, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
- 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03,
- 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x5f, 0x0a, 0x05, 0x73,
- 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0b,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12,
- 0x41, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
- 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
- 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x72,
- 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x67, 0x0a, 0x06, 0x6c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x1a, 0xf0, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29,
- 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x65, 0x78, 0x5f, 0x73, 0x65,
- 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0f, 0x68, 0x65, 0x78, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62,
- 0x65, 0x72, 0x12, 0x61, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61,
- 0x73, 0x6f, 0x6e, 0x52, 0x10, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0x3a, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41,
- 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
- 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a,
- 0x53, 0x55, 0x50, 0x45, 0x52, 0x53, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x3a, 0xdc, 0x01, 0xea,
- 0x41, 0xd8, 0x01, 0x0a, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0xa1, 0x01, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
- 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x7d, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x5f, 0x70, 0x6f,
- 0x6f, 0x6c, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65,
- 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x22, 0x96, 0x0c, 0x0a, 0x0b,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe2, 0x41, 0x01, 0x03, 0xfa,
- 0x41, 0x26, 0x0a, 0x24, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f,
- 0x0a, 0x07, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x73, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x05, 0x48, 0x00, 0x52, 0x06, 0x70, 0x65, 0x6d, 0x43, 0x73, 0x72, 0x12,
- 0x55, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x05, 0x48, 0x00, 0x52, 0x06,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x78, 0x0a, 0x1c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72,
- 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2, 0x41,
- 0x01, 0x03, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x52, 0x1a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x12, 0x3c, 0x0a, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x05, 0xe2,
- 0x41, 0x02, 0x02, 0x05, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x68,
- 0x0a, 0x14, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe2, 0x41,
- 0x01, 0x05, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x74, 0x65, 0x52, 0x13, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x5f, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x05, 0x52, 0x0b, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x76, 0x0a, 0x12, 0x72, 0x65, 0x76,
- 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x11,
- 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
- 0x73, 0x12, 0x2d, 0x0a, 0x0f, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03,
- 0x52, 0x0e, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x12, 0x79, 0x0a, 0x17, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f,
- 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x03, 0x52, 0x16, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x15, 0x70,
- 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03,
- 0x52, 0x13, 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52,
- 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x06, 0x6c,
- 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x06,
- 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0xb9, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x76, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x10,
- 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65,
- 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a,
- 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x0e, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,
- 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x7f, 0xea,
- 0x41, 0x7c, 0x0a, 0x24, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x54, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
- 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x7d, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x5f, 0x70, 0x6f,
- 0x6f, 0x6c, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73,
- 0x2f, 0x7b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x7d, 0x42, 0x14,
- 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9d, 0x07, 0x0a, 0x13, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe2, 0x41, 0x01, 0x03,
- 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
- 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x50, 0x61, 0x72, 0x61,
- 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x10, 0x70, 0x72,
- 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x7b,
- 0x0a, 0x14, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74,
- 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x13, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x16,
- 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x65, 0x78, 0x74, 0x65,
- 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74,
- 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74,
- 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x15, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72,
- 0x6f, 0x75, 0x67, 0x68, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x63,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03,
- 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x06,
- 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d,
- 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a,
- 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x87, 0x01, 0xea, 0x41, 0x83,
- 0x01, 0x0a, 0x2c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12,
- 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
- 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
- 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x74, 0x65, 0x7d, 0x22, 0xc8, 0x04, 0x0a, 0x0e, 0x58, 0x35, 0x30, 0x39, 0x50, 0x61, 0x72,
- 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x75,
- 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x4b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x08,
- 0x6b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a, 0x0a, 0x63, 0x61, 0x5f, 0x6f,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
- 0x2e, 0x43, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x09, 0x63, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x0a, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x12, 0x2e,
- 0x0a, 0x10, 0x61, 0x69, 0x61, 0x5f, 0x6f, 0x63, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0e,
- 0x61, 0x69, 0x61, 0x4f, 0x63, 0x73, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x6c,
- 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x74,
- 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x61, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x90, 0x01, 0x0a,
- 0x09, 0x43, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x69, 0x73,
- 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x48,
- 0x00, 0x52, 0x04, 0x69, 0x73, 0x43, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x16, 0x6d, 0x61,
- 0x78, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6c, 0x65,
- 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x48, 0x01, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x74,
- 0x68, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69,
- 0x73, 0x5f, 0x63, 0x61, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x73, 0x73,
- 0x75, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22,
- 0xe3, 0x02, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6d, 0x0a, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
- 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x14,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x12, 0x7e, 0x0a, 0x10, 0x70, 0x65, 0x6d, 0x5f, 0x69, 0x73, 0x73, 0x75,
- 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x65, 0x6d, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43,
- 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x49, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e,
- 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2f,
- 0x0a, 0x10, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0f,
- 0x70, 0x65, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x42,
- 0x14, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x63,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xac, 0x01, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
- 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x06, 0x66,
- 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31,
- 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x6f,
- 0x72, 0x6d, 0x61, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d,
- 0x61, 0x74, 0x22, 0x30, 0x0a, 0x09, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12,
- 0x1a, 0x0a, 0x16, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50,
- 0x45, 0x4d, 0x10, 0x01, 0x22, 0xf8, 0x03, 0x0a, 0x11, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x70, 0x0a, 0x0e, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0d, 0x73,
- 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x0b,
- 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x50, 0x61, 0x72, 0x61, 0x6d,
- 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x78, 0x35, 0x30,
- 0x39, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x52, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31,
- 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0xc1, 0x01, 0x0a, 0x0d,
- 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a,
- 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x02, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x63, 0x0a, 0x10, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
- 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52,
- 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22,
- 0x97, 0x0a, 0x0a, 0x16, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x13, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x10, 0x78, 0x35,
- 0x30, 0x39, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
- 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x50, 0x61,
- 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0f, 0x78, 0x35, 0x30, 0x39, 0x44, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0a, 0x70, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75,
- 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x66, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x49,
- 0x64, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12,
- 0x6a, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6b, 0x65, 0x79,
- 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x63,
- 0x72, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x63, 0x72,
- 0x6c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69,
- 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x69, 0x61, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x69,
- 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x75,
- 0x72, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x19, 0x61, 0x69, 0x61, 0x49, 0x73,
- 0x73, 0x75, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x55, 0x72, 0x6c, 0x73, 0x12, 0x7c, 0x0a, 0x10, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6e,
- 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e,
- 0x74, 0x52, 0x0f, 0x63, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69,
- 0x6e, 0x74, 0x1a, 0xa3, 0x03, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x07, 0x73, 0x75, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x12, 0x5d, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52,
- 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x2a, 0x0a, 0x11, 0x68, 0x65, 0x78, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75,
- 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x65, 0x78, 0x53,
- 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x08, 0x6c,
- 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69,
- 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x42, 0x65, 0x66, 0x6f,
- 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x5f, 0x61, 0x66,
- 0x74, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x41,
- 0x66, 0x74, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x24, 0x0a, 0x05, 0x4b, 0x65, 0x79, 0x49,
- 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x1a, 0x39,
- 0x0a, 0x16, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6e,
- 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x32,
- 0x35, 0x36, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73,
- 0x68, 0x61, 0x32, 0x35, 0x36, 0x48, 0x61, 0x73, 0x68, 0x22, 0x36, 0x0a, 0x08, 0x4f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f,
- 0x69, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x02, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x50, 0x61, 0x74,
- 0x68, 0x22, 0x9e, 0x01, 0x0a, 0x0d, 0x58, 0x35, 0x30, 0x39, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
- 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x49, 0x64, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x08, 0x63, 0x72,
- 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x22, 0xb2, 0x07, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12,
- 0x62, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79,
- 0x55, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x55, 0x73,
- 0x61, 0x67, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f,
- 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78,
- 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4b,
- 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x1b, 0x75, 0x6e, 0x6b, 0x6e, 0x6f,
- 0x77, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f,
- 0x75, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x52, 0x18, 0x75, 0x6e, 0x6b, 0x6e,
- 0x6f, 0x77, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x55, 0x73,
- 0x61, 0x67, 0x65, 0x73, 0x1a, 0xec, 0x02, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67,
- 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x67, 0x69,
- 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e,
- 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
- 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
- 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x63, 0x69,
- 0x70, 0x68, 0x65, 0x72, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
- 0x6b, 0x65, 0x79, 0x45, 0x6e, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x6d, 0x65, 0x6e, 0x74, 0x12,
- 0x2b, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72,
- 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61,
- 0x45, 0x6e, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d,
- 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x67, 0x72, 0x65, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6b, 0x65, 0x79, 0x41, 0x67, 0x72, 0x65, 0x65, 0x6d, 0x65, 0x6e,
- 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x19,
- 0x0a, 0x08, 0x63, 0x72, 0x6c, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x07, 0x63, 0x72, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63,
- 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x23,
- 0x0a, 0x0d, 0x64, 0x65, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4f,
- 0x6e, 0x6c, 0x79, 0x1a, 0xf1, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64,
- 0x4b, 0x65, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
- 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68,
- 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74,
- 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e,
- 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67,
- 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x70, 0x72,
- 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
- 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x23, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d,
- 0x70, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x63, 0x73, 0x70, 0x5f, 0x73, 0x69, 0x67,
- 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6f, 0x63, 0x73, 0x70,
- 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0xa2, 0x02, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f,
- 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f,
- 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x6f,
- 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x6e,
- 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
- 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08,
- 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74,
- 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70,
- 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xe2, 0x01, 0x0a,
- 0x0f, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x08, 0x64, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a,
- 0x04, 0x75, 0x72, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x69,
- 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
- 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6d, 0x61, 0x69,
- 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x70,
- 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0b, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x52, 0x0a,
- 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x45, 0x78, 0x74, 0x65,
- 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x61, 0x6e,
- 0x73, 0x22, 0xc6, 0x02, 0x0a, 0x1e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61,
- 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0e, 0x63, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72,
- 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0d, 0x63, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73,
- 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67,
- 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x48, 0x00, 0x52,
- 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x73,
- 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x23, 0x61,
- 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75,
- 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x48, 0x01,
- 0x52, 0x1f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c,
- 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67,
- 0x68, 0x88, 0x01, 0x01, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73,
- 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75,
- 0x67, 0x68, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70,
- 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, 0xc8, 0x03, 0x0a, 0x1f, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
- 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x8e,
- 0x01, 0x0a, 0x10, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x5d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
- 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x4b,
- 0x6e, 0x6f, 0x77, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0f,
- 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
- 0x67, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78,
- 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x01, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x78,
- 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x19, 0x4b, 0x6e, 0x6f,
- 0x77, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74,
- 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f,
- 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45,
- 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
- 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
- 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x58, 0x54, 0x45, 0x4e,
- 0x44, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12,
- 0x0e, 0x0a, 0x0a, 0x43, 0x41, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12,
- 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x49, 0x44, 0x53, 0x10, 0x04, 0x12,
- 0x14, 0x0a, 0x10, 0x41, 0x49, 0x41, 0x5f, 0x4f, 0x43, 0x53, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56,
- 0x45, 0x52, 0x53, 0x10, 0x05, 0x2a, 0x87, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45,
- 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f,
- 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a,
- 0x0e, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x4f, 0x4d, 0x49, 0x53, 0x45, 0x10,
- 0x01, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45,
- 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52,
- 0x4f, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x46, 0x46, 0x49, 0x4c,
- 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x03,
- 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x55, 0x50, 0x45, 0x52, 0x53, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04,
- 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x45, 0x53, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46,
- 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10,
- 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44,
- 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, 0x47, 0x45, 0x5f,
- 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x4e, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x41,
- 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49,
- 0x54, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x4f, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x08, 0x2a,
- 0x5d, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54,
- 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44,
- 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x46, 0x4c,
- 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x50, 0x49, 0x46, 0x46, 0x45, 0x10, 0x02, 0x42, 0x86,
- 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
- 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x50, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x43, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
- 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c,
- 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x43, 0x41, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x5c, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x41, 0x5c, 0x56, 0x31, 0xea, 0x02,
- 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a,
- 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x43, 0x41, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_cloud_security_privateca_v1_resources_proto_rawDescOnce sync.Once
- file_google_cloud_security_privateca_v1_resources_proto_rawDescData = file_google_cloud_security_privateca_v1_resources_proto_rawDesc
-)
-
-func file_google_cloud_security_privateca_v1_resources_proto_rawDescGZIP() []byte {
- file_google_cloud_security_privateca_v1_resources_proto_rawDescOnce.Do(func() {
- file_google_cloud_security_privateca_v1_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_security_privateca_v1_resources_proto_rawDescData)
- })
- return file_google_cloud_security_privateca_v1_resources_proto_rawDescData
-}
-
-var file_google_cloud_security_privateca_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
-var file_google_cloud_security_privateca_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 40)
-var file_google_cloud_security_privateca_v1_resources_proto_goTypes = []interface{}{
- (RevocationReason)(0), // 0: google.cloud.security.privateca.v1.RevocationReason
- (SubjectRequestMode)(0), // 1: google.cloud.security.privateca.v1.SubjectRequestMode
- (CertificateAuthority_Type)(0), // 2: google.cloud.security.privateca.v1.CertificateAuthority.Type
- (CertificateAuthority_State)(0), // 3: google.cloud.security.privateca.v1.CertificateAuthority.State
- (CertificateAuthority_SignHashAlgorithm)(0), // 4: google.cloud.security.privateca.v1.CertificateAuthority.SignHashAlgorithm
- (CaPool_Tier)(0), // 5: google.cloud.security.privateca.v1.CaPool.Tier
- (CaPool_IssuancePolicy_AllowedKeyType_EcKeyType_EcSignatureAlgorithm)(0), // 6: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.EcKeyType.EcSignatureAlgorithm
- (CertificateRevocationList_State)(0), // 7: google.cloud.security.privateca.v1.CertificateRevocationList.State
- (PublicKey_KeyFormat)(0), // 8: google.cloud.security.privateca.v1.PublicKey.KeyFormat
- (CertificateExtensionConstraints_KnownCertificateExtension)(0), // 9: google.cloud.security.privateca.v1.CertificateExtensionConstraints.KnownCertificateExtension
- (*CertificateAuthority)(nil), // 10: google.cloud.security.privateca.v1.CertificateAuthority
- (*CaPool)(nil), // 11: google.cloud.security.privateca.v1.CaPool
- (*CertificateRevocationList)(nil), // 12: google.cloud.security.privateca.v1.CertificateRevocationList
- (*Certificate)(nil), // 13: google.cloud.security.privateca.v1.Certificate
- (*CertificateTemplate)(nil), // 14: google.cloud.security.privateca.v1.CertificateTemplate
- (*X509Parameters)(nil), // 15: google.cloud.security.privateca.v1.X509Parameters
- (*SubordinateConfig)(nil), // 16: google.cloud.security.privateca.v1.SubordinateConfig
- (*PublicKey)(nil), // 17: google.cloud.security.privateca.v1.PublicKey
- (*CertificateConfig)(nil), // 18: google.cloud.security.privateca.v1.CertificateConfig
- (*CertificateDescription)(nil), // 19: google.cloud.security.privateca.v1.CertificateDescription
- (*ObjectId)(nil), // 20: google.cloud.security.privateca.v1.ObjectId
- (*X509Extension)(nil), // 21: google.cloud.security.privateca.v1.X509Extension
- (*KeyUsage)(nil), // 22: google.cloud.security.privateca.v1.KeyUsage
- (*Subject)(nil), // 23: google.cloud.security.privateca.v1.Subject
- (*SubjectAltNames)(nil), // 24: google.cloud.security.privateca.v1.SubjectAltNames
- (*CertificateIdentityConstraints)(nil), // 25: google.cloud.security.privateca.v1.CertificateIdentityConstraints
- (*CertificateExtensionConstraints)(nil), // 26: google.cloud.security.privateca.v1.CertificateExtensionConstraints
- (*CertificateAuthority_AccessUrls)(nil), // 27: google.cloud.security.privateca.v1.CertificateAuthority.AccessUrls
- (*CertificateAuthority_KeyVersionSpec)(nil), // 28: google.cloud.security.privateca.v1.CertificateAuthority.KeyVersionSpec
- nil, // 29: google.cloud.security.privateca.v1.CertificateAuthority.LabelsEntry
- (*CaPool_PublishingOptions)(nil), // 30: google.cloud.security.privateca.v1.CaPool.PublishingOptions
- (*CaPool_IssuancePolicy)(nil), // 31: google.cloud.security.privateca.v1.CaPool.IssuancePolicy
- nil, // 32: google.cloud.security.privateca.v1.CaPool.LabelsEntry
- (*CaPool_IssuancePolicy_AllowedKeyType)(nil), // 33: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType
- (*CaPool_IssuancePolicy_IssuanceModes)(nil), // 34: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.IssuanceModes
- (*CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType)(nil), // 35: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.RsaKeyType
- (*CaPool_IssuancePolicy_AllowedKeyType_EcKeyType)(nil), // 36: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.EcKeyType
- (*CertificateRevocationList_RevokedCertificate)(nil), // 37: google.cloud.security.privateca.v1.CertificateRevocationList.RevokedCertificate
- nil, // 38: google.cloud.security.privateca.v1.CertificateRevocationList.LabelsEntry
- (*Certificate_RevocationDetails)(nil), // 39: google.cloud.security.privateca.v1.Certificate.RevocationDetails
- nil, // 40: google.cloud.security.privateca.v1.Certificate.LabelsEntry
- nil, // 41: google.cloud.security.privateca.v1.CertificateTemplate.LabelsEntry
- (*X509Parameters_CaOptions)(nil), // 42: google.cloud.security.privateca.v1.X509Parameters.CaOptions
- (*SubordinateConfig_SubordinateConfigChain)(nil), // 43: google.cloud.security.privateca.v1.SubordinateConfig.SubordinateConfigChain
- (*CertificateConfig_SubjectConfig)(nil), // 44: google.cloud.security.privateca.v1.CertificateConfig.SubjectConfig
- (*CertificateDescription_SubjectDescription)(nil), // 45: google.cloud.security.privateca.v1.CertificateDescription.SubjectDescription
- (*CertificateDescription_KeyId)(nil), // 46: google.cloud.security.privateca.v1.CertificateDescription.KeyId
- (*CertificateDescription_CertificateFingerprint)(nil), // 47: google.cloud.security.privateca.v1.CertificateDescription.CertificateFingerprint
- (*KeyUsage_KeyUsageOptions)(nil), // 48: google.cloud.security.privateca.v1.KeyUsage.KeyUsageOptions
- (*KeyUsage_ExtendedKeyUsageOptions)(nil), // 49: google.cloud.security.privateca.v1.KeyUsage.ExtendedKeyUsageOptions
- (*durationpb.Duration)(nil), // 50: google.protobuf.Duration
- (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
- (*expr.Expr)(nil), // 52: google.type.Expr
-}
-var file_google_cloud_security_privateca_v1_resources_proto_depIdxs = []int32{
- 2, // 0: google.cloud.security.privateca.v1.CertificateAuthority.type:type_name -> google.cloud.security.privateca.v1.CertificateAuthority.Type
- 18, // 1: google.cloud.security.privateca.v1.CertificateAuthority.config:type_name -> google.cloud.security.privateca.v1.CertificateConfig
- 50, // 2: google.cloud.security.privateca.v1.CertificateAuthority.lifetime:type_name -> google.protobuf.Duration
- 28, // 3: google.cloud.security.privateca.v1.CertificateAuthority.key_spec:type_name -> google.cloud.security.privateca.v1.CertificateAuthority.KeyVersionSpec
- 16, // 4: google.cloud.security.privateca.v1.CertificateAuthority.subordinate_config:type_name -> google.cloud.security.privateca.v1.SubordinateConfig
- 5, // 5: google.cloud.security.privateca.v1.CertificateAuthority.tier:type_name -> google.cloud.security.privateca.v1.CaPool.Tier
- 3, // 6: google.cloud.security.privateca.v1.CertificateAuthority.state:type_name -> google.cloud.security.privateca.v1.CertificateAuthority.State
- 19, // 7: google.cloud.security.privateca.v1.CertificateAuthority.ca_certificate_descriptions:type_name -> google.cloud.security.privateca.v1.CertificateDescription
- 27, // 8: google.cloud.security.privateca.v1.CertificateAuthority.access_urls:type_name -> google.cloud.security.privateca.v1.CertificateAuthority.AccessUrls
- 51, // 9: google.cloud.security.privateca.v1.CertificateAuthority.create_time:type_name -> google.protobuf.Timestamp
- 51, // 10: google.cloud.security.privateca.v1.CertificateAuthority.update_time:type_name -> google.protobuf.Timestamp
- 51, // 11: google.cloud.security.privateca.v1.CertificateAuthority.delete_time:type_name -> google.protobuf.Timestamp
- 51, // 12: google.cloud.security.privateca.v1.CertificateAuthority.expire_time:type_name -> google.protobuf.Timestamp
- 29, // 13: google.cloud.security.privateca.v1.CertificateAuthority.labels:type_name -> google.cloud.security.privateca.v1.CertificateAuthority.LabelsEntry
- 5, // 14: google.cloud.security.privateca.v1.CaPool.tier:type_name -> google.cloud.security.privateca.v1.CaPool.Tier
- 31, // 15: google.cloud.security.privateca.v1.CaPool.issuance_policy:type_name -> google.cloud.security.privateca.v1.CaPool.IssuancePolicy
- 30, // 16: google.cloud.security.privateca.v1.CaPool.publishing_options:type_name -> google.cloud.security.privateca.v1.CaPool.PublishingOptions
- 32, // 17: google.cloud.security.privateca.v1.CaPool.labels:type_name -> google.cloud.security.privateca.v1.CaPool.LabelsEntry
- 37, // 18: google.cloud.security.privateca.v1.CertificateRevocationList.revoked_certificates:type_name -> google.cloud.security.privateca.v1.CertificateRevocationList.RevokedCertificate
- 7, // 19: google.cloud.security.privateca.v1.CertificateRevocationList.state:type_name -> google.cloud.security.privateca.v1.CertificateRevocationList.State
- 51, // 20: google.cloud.security.privateca.v1.CertificateRevocationList.create_time:type_name -> google.protobuf.Timestamp
- 51, // 21: google.cloud.security.privateca.v1.CertificateRevocationList.update_time:type_name -> google.protobuf.Timestamp
- 38, // 22: google.cloud.security.privateca.v1.CertificateRevocationList.labels:type_name -> google.cloud.security.privateca.v1.CertificateRevocationList.LabelsEntry
- 18, // 23: google.cloud.security.privateca.v1.Certificate.config:type_name -> google.cloud.security.privateca.v1.CertificateConfig
- 50, // 24: google.cloud.security.privateca.v1.Certificate.lifetime:type_name -> google.protobuf.Duration
- 1, // 25: google.cloud.security.privateca.v1.Certificate.subject_mode:type_name -> google.cloud.security.privateca.v1.SubjectRequestMode
- 39, // 26: google.cloud.security.privateca.v1.Certificate.revocation_details:type_name -> google.cloud.security.privateca.v1.Certificate.RevocationDetails
- 19, // 27: google.cloud.security.privateca.v1.Certificate.certificate_description:type_name -> google.cloud.security.privateca.v1.CertificateDescription
- 51, // 28: google.cloud.security.privateca.v1.Certificate.create_time:type_name -> google.protobuf.Timestamp
- 51, // 29: google.cloud.security.privateca.v1.Certificate.update_time:type_name -> google.protobuf.Timestamp
- 40, // 30: google.cloud.security.privateca.v1.Certificate.labels:type_name -> google.cloud.security.privateca.v1.Certificate.LabelsEntry
- 15, // 31: google.cloud.security.privateca.v1.CertificateTemplate.predefined_values:type_name -> google.cloud.security.privateca.v1.X509Parameters
- 25, // 32: google.cloud.security.privateca.v1.CertificateTemplate.identity_constraints:type_name -> google.cloud.security.privateca.v1.CertificateIdentityConstraints
- 26, // 33: google.cloud.security.privateca.v1.CertificateTemplate.passthrough_extensions:type_name -> google.cloud.security.privateca.v1.CertificateExtensionConstraints
- 51, // 34: google.cloud.security.privateca.v1.CertificateTemplate.create_time:type_name -> google.protobuf.Timestamp
- 51, // 35: google.cloud.security.privateca.v1.CertificateTemplate.update_time:type_name -> google.protobuf.Timestamp
- 41, // 36: google.cloud.security.privateca.v1.CertificateTemplate.labels:type_name -> google.cloud.security.privateca.v1.CertificateTemplate.LabelsEntry
- 22, // 37: google.cloud.security.privateca.v1.X509Parameters.key_usage:type_name -> google.cloud.security.privateca.v1.KeyUsage
- 42, // 38: google.cloud.security.privateca.v1.X509Parameters.ca_options:type_name -> google.cloud.security.privateca.v1.X509Parameters.CaOptions
- 20, // 39: google.cloud.security.privateca.v1.X509Parameters.policy_ids:type_name -> google.cloud.security.privateca.v1.ObjectId
- 21, // 40: google.cloud.security.privateca.v1.X509Parameters.additional_extensions:type_name -> google.cloud.security.privateca.v1.X509Extension
- 43, // 41: google.cloud.security.privateca.v1.SubordinateConfig.pem_issuer_chain:type_name -> google.cloud.security.privateca.v1.SubordinateConfig.SubordinateConfigChain
- 8, // 42: google.cloud.security.privateca.v1.PublicKey.format:type_name -> google.cloud.security.privateca.v1.PublicKey.KeyFormat
- 44, // 43: google.cloud.security.privateca.v1.CertificateConfig.subject_config:type_name -> google.cloud.security.privateca.v1.CertificateConfig.SubjectConfig
- 15, // 44: google.cloud.security.privateca.v1.CertificateConfig.x509_config:type_name -> google.cloud.security.privateca.v1.X509Parameters
- 17, // 45: google.cloud.security.privateca.v1.CertificateConfig.public_key:type_name -> google.cloud.security.privateca.v1.PublicKey
- 45, // 46: google.cloud.security.privateca.v1.CertificateDescription.subject_description:type_name -> google.cloud.security.privateca.v1.CertificateDescription.SubjectDescription
- 15, // 47: google.cloud.security.privateca.v1.CertificateDescription.x509_description:type_name -> google.cloud.security.privateca.v1.X509Parameters
- 17, // 48: google.cloud.security.privateca.v1.CertificateDescription.public_key:type_name -> google.cloud.security.privateca.v1.PublicKey
- 46, // 49: google.cloud.security.privateca.v1.CertificateDescription.subject_key_id:type_name -> google.cloud.security.privateca.v1.CertificateDescription.KeyId
- 46, // 50: google.cloud.security.privateca.v1.CertificateDescription.authority_key_id:type_name -> google.cloud.security.privateca.v1.CertificateDescription.KeyId
- 47, // 51: google.cloud.security.privateca.v1.CertificateDescription.cert_fingerprint:type_name -> google.cloud.security.privateca.v1.CertificateDescription.CertificateFingerprint
- 20, // 52: google.cloud.security.privateca.v1.X509Extension.object_id:type_name -> google.cloud.security.privateca.v1.ObjectId
- 48, // 53: google.cloud.security.privateca.v1.KeyUsage.base_key_usage:type_name -> google.cloud.security.privateca.v1.KeyUsage.KeyUsageOptions
- 49, // 54: google.cloud.security.privateca.v1.KeyUsage.extended_key_usage:type_name -> google.cloud.security.privateca.v1.KeyUsage.ExtendedKeyUsageOptions
- 20, // 55: google.cloud.security.privateca.v1.KeyUsage.unknown_extended_key_usages:type_name -> google.cloud.security.privateca.v1.ObjectId
- 21, // 56: google.cloud.security.privateca.v1.SubjectAltNames.custom_sans:type_name -> google.cloud.security.privateca.v1.X509Extension
- 52, // 57: google.cloud.security.privateca.v1.CertificateIdentityConstraints.cel_expression:type_name -> google.type.Expr
- 9, // 58: google.cloud.security.privateca.v1.CertificateExtensionConstraints.known_extensions:type_name -> google.cloud.security.privateca.v1.CertificateExtensionConstraints.KnownCertificateExtension
- 20, // 59: google.cloud.security.privateca.v1.CertificateExtensionConstraints.additional_extensions:type_name -> google.cloud.security.privateca.v1.ObjectId
- 4, // 60: google.cloud.security.privateca.v1.CertificateAuthority.KeyVersionSpec.algorithm:type_name -> google.cloud.security.privateca.v1.CertificateAuthority.SignHashAlgorithm
- 33, // 61: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.allowed_key_types:type_name -> google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType
- 50, // 62: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.maximum_lifetime:type_name -> google.protobuf.Duration
- 34, // 63: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.allowed_issuance_modes:type_name -> google.cloud.security.privateca.v1.CaPool.IssuancePolicy.IssuanceModes
- 15, // 64: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.baseline_values:type_name -> google.cloud.security.privateca.v1.X509Parameters
- 25, // 65: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.identity_constraints:type_name -> google.cloud.security.privateca.v1.CertificateIdentityConstraints
- 26, // 66: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.passthrough_extensions:type_name -> google.cloud.security.privateca.v1.CertificateExtensionConstraints
- 35, // 67: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.rsa:type_name -> google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.RsaKeyType
- 36, // 68: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.elliptic_curve:type_name -> google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.EcKeyType
- 6, // 69: google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.EcKeyType.signature_algorithm:type_name -> google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType.EcKeyType.EcSignatureAlgorithm
- 0, // 70: google.cloud.security.privateca.v1.CertificateRevocationList.RevokedCertificate.revocation_reason:type_name -> google.cloud.security.privateca.v1.RevocationReason
- 0, // 71: google.cloud.security.privateca.v1.Certificate.RevocationDetails.revocation_state:type_name -> google.cloud.security.privateca.v1.RevocationReason
- 51, // 72: google.cloud.security.privateca.v1.Certificate.RevocationDetails.revocation_time:type_name -> google.protobuf.Timestamp
- 23, // 73: google.cloud.security.privateca.v1.CertificateConfig.SubjectConfig.subject:type_name -> google.cloud.security.privateca.v1.Subject
- 24, // 74: google.cloud.security.privateca.v1.CertificateConfig.SubjectConfig.subject_alt_name:type_name -> google.cloud.security.privateca.v1.SubjectAltNames
- 23, // 75: google.cloud.security.privateca.v1.CertificateDescription.SubjectDescription.subject:type_name -> google.cloud.security.privateca.v1.Subject
- 24, // 76: google.cloud.security.privateca.v1.CertificateDescription.SubjectDescription.subject_alt_name:type_name -> google.cloud.security.privateca.v1.SubjectAltNames
- 50, // 77: google.cloud.security.privateca.v1.CertificateDescription.SubjectDescription.lifetime:type_name -> google.protobuf.Duration
- 51, // 78: google.cloud.security.privateca.v1.CertificateDescription.SubjectDescription.not_before_time:type_name -> google.protobuf.Timestamp
- 51, // 79: google.cloud.security.privateca.v1.CertificateDescription.SubjectDescription.not_after_time:type_name -> google.protobuf.Timestamp
- 80, // [80:80] is the sub-list for method output_type
- 80, // [80:80] is the sub-list for method input_type
- 80, // [80:80] is the sub-list for extension type_name
- 80, // [80:80] is the sub-list for extension extendee
- 0, // [0:80] is the sub-list for field type_name
-}
-
-func init() { file_google_cloud_security_privateca_v1_resources_proto_init() }
-func file_google_cloud_security_privateca_v1_resources_proto_init() {
- if File_google_cloud_security_privateca_v1_resources_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateAuthority); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CaPool); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateRevocationList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Certificate); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateTemplate); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*X509Parameters); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubordinateConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PublicKey); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateDescription); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ObjectId); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*X509Extension); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KeyUsage); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Subject); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubjectAltNames); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateIdentityConstraints); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateExtensionConstraints); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateAuthority_AccessUrls); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateAuthority_KeyVersionSpec); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CaPool_PublishingOptions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CaPool_IssuancePolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CaPool_IssuancePolicy_AllowedKeyType); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CaPool_IssuancePolicy_IssuanceModes); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CaPool_IssuancePolicy_AllowedKeyType_RsaKeyType); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CaPool_IssuancePolicy_AllowedKeyType_EcKeyType); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateRevocationList_RevokedCertificate); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Certificate_RevocationDetails); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*X509Parameters_CaOptions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubordinateConfig_SubordinateConfigChain); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateConfig_SubjectConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateDescription_SubjectDescription); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateDescription_KeyId); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateDescription_CertificateFingerprint); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KeyUsage_KeyUsageOptions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KeyUsage_ExtendedKeyUsageOptions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[3].OneofWrappers = []interface{}{
- (*Certificate_PemCsr)(nil),
- (*Certificate_Config)(nil),
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[6].OneofWrappers = []interface{}{
- (*SubordinateConfig_CertificateAuthority)(nil),
- (*SubordinateConfig_PemIssuerChain)(nil),
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[15].OneofWrappers = []interface{}{}
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[18].OneofWrappers = []interface{}{
- (*CertificateAuthority_KeyVersionSpec_CloudKmsKeyVersion)(nil),
- (*CertificateAuthority_KeyVersionSpec_Algorithm)(nil),
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[23].OneofWrappers = []interface{}{
- (*CaPool_IssuancePolicy_AllowedKeyType_Rsa)(nil),
- (*CaPool_IssuancePolicy_AllowedKeyType_EllipticCurve)(nil),
- }
- file_google_cloud_security_privateca_v1_resources_proto_msgTypes[32].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_cloud_security_privateca_v1_resources_proto_rawDesc,
- NumEnums: 10,
- NumMessages: 40,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_google_cloud_security_privateca_v1_resources_proto_goTypes,
- DependencyIndexes: file_google_cloud_security_privateca_v1_resources_proto_depIdxs,
- EnumInfos: file_google_cloud_security_privateca_v1_resources_proto_enumTypes,
- MessageInfos: file_google_cloud_security_privateca_v1_resources_proto_msgTypes,
- }.Build()
- File_google_cloud_security_privateca_v1_resources_proto = out.File
- file_google_cloud_security_privateca_v1_resources_proto_rawDesc = nil
- file_google_cloud_security_privateca_v1_resources_proto_goTypes = nil
- file_google_cloud_security_privateca_v1_resources_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/cloud/security/privateca/v1/service.pb.go b/gen/proto/google/cloud/security/privateca/v1/service.pb.go
deleted file mode 100644
index 9eb0976..0000000
--- a/gen/proto/google/cloud/security/privateca/v1/service.pb.go
+++ /dev/null
@@ -1,4539 +0,0 @@
-// Copyright 2022 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/cloud/security/privateca/v1/service.proto
-
-package privateca
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- longrunning "google.golang.org/genproto/googleapis/longrunning"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- _ "google.golang.org/protobuf/types/known/durationpb"
- fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Request message for [CertificateAuthorityService.CreateCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificate].
-type CreateCertificateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the [CaPool][google.cloud.security.privateca.v1.CaPool] associated with the [Certificate][google.cloud.security.privateca.v1.Certificate],
- // in the format `projects/*/locations/*/caPools/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Optional. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`. This field is required when using a
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the Enterprise [CertificateAuthority.Tier][],
- // but is optional and its value is ignored otherwise.
- CertificateId string `protobuf:"bytes,2,opt,name=certificate_id,json=certificateId,proto3" json:"certificate_id,omitempty"`
- // Required. A [Certificate][google.cloud.security.privateca.v1.Certificate] with initial field values.
- Certificate *Certificate `protobuf:"bytes,3,opt,name=certificate,proto3" json:"certificate,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and the
- // request times out. If you make the request again with the same request WorkloadID,
- // the server can check if original operation with the same request WorkloadID was
- // received, and if so, will ignore the second request. This prevents clients
- // from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
- // Optional. If this is true, no [Certificate][google.cloud.security.privateca.v1.Certificate] resource will be persisted regardless
- // of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s [tier][google.cloud.security.privateca.v1.CaPool.tier], and the returned [Certificate][google.cloud.security.privateca.v1.Certificate]
- // will not contain the [pem_certificate][google.cloud.security.privateca.v1.Certificate.pem_certificate] field.
- ValidateOnly bool `protobuf:"varint,5,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
- // Optional. The resource WorkloadID of the [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] that should issue the
- // certificate. This optional field will ignore the load-balancing scheme of
- // the Pool and directly issue the certificate from the CA with the specified
- // WorkloadID, contained in the same [CaPool][google.cloud.security.privateca.v1.CaPool] referenced by `parent`. Per-CA quota
- // rules apply. If left empty, a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will be chosen from
- // the [CaPool][google.cloud.security.privateca.v1.CaPool] by the service. For example, to issue a [Certificate][google.cloud.security.privateca.v1.Certificate] from
- // a Certificate Authority with resource name
- // "projects/my-project/locations/us-central1/caPools/my-pool/certificateAuthorities/my-ca",
- // you can set the [parent][google.cloud.security.privateca.v1.CreateCertificateRequest.parent] to
- // "projects/my-project/locations/us-central1/caPools/my-pool" and the
- // [issuing_certificate_authority_id][google.cloud.security.privateca.v1.CreateCertificateRequest.issuing_certificate_authority_id] to "my-ca".
- IssuingCertificateAuthorityId string `protobuf:"bytes,6,opt,name=issuing_certificate_authority_id,json=issuingCertificateAuthorityId,proto3" json:"issuing_certificate_authority_id,omitempty"`
-}
-
-func (x *CreateCertificateRequest) Reset() {
- *x = CreateCertificateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateCertificateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateCertificateRequest) ProtoMessage() {}
-
-func (x *CreateCertificateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateCertificateRequest.ProtoReflect.Descriptor instead.
-func (*CreateCertificateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CreateCertificateRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *CreateCertificateRequest) GetCertificateId() string {
- if x != nil {
- return x.CertificateId
- }
- return ""
-}
-
-func (x *CreateCertificateRequest) GetCertificate() *Certificate {
- if x != nil {
- return x.Certificate
- }
- return nil
-}
-
-func (x *CreateCertificateRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-func (x *CreateCertificateRequest) GetValidateOnly() bool {
- if x != nil {
- return x.ValidateOnly
- }
- return false
-}
-
-func (x *CreateCertificateRequest) GetIssuingCertificateAuthorityId() string {
- if x != nil {
- return x.IssuingCertificateAuthorityId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.GetCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificate].
-type GetCertificateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The [name][google.cloud.security.privateca.v1.Certificate.name] of the [Certificate][google.cloud.security.privateca.v1.Certificate] to get.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *GetCertificateRequest) Reset() {
- *x = GetCertificateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetCertificateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetCertificateRequest) ProtoMessage() {}
-
-func (x *GetCertificateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetCertificateRequest.ProtoReflect.Descriptor instead.
-func (*GetCertificateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GetCertificateRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Request message for [CertificateAuthorityService.ListCertificates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificates].
-type ListCertificatesRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the location associated with the
- // [Certificates][google.cloud.security.privateca.v1.Certificate], in the format
- // `projects/*/locations/*/caPools/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Optional. Limit on the number of
- // [Certificates][google.cloud.security.privateca.v1.Certificate] to include in the
- // response. Further [Certificates][google.cloud.security.privateca.v1.Certificate] can subsequently be obtained
- // by including the
- // [ListCertificatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificatesResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
- // Optional. Pagination token, returned earlier via
- // [ListCertificatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificatesResponse.next_page_token].
- PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
- // Optional. Only include resources that match the filter in the response. For details
- // on supported filters and syntax, see [Certificates Filtering
- // documentation](https://cloud.google.com/certificate-authority-service/docs/sorting-filtering-certificates#filtering_support).
- Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
- // Optional. Specify how the results should be sorted. For details on supported fields
- // and syntax, see [Certificates Sorting
- // documentation](https://cloud.google.com/certificate-authority-service/docs/sorting-filtering-certificates#sorting_support).
- OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
-}
-
-func (x *ListCertificatesRequest) Reset() {
- *x = ListCertificatesRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificatesRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificatesRequest) ProtoMessage() {}
-
-func (x *ListCertificatesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificatesRequest.ProtoReflect.Descriptor instead.
-func (*ListCertificatesRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ListCertificatesRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *ListCertificatesRequest) GetPageSize() int32 {
- if x != nil {
- return x.PageSize
- }
- return 0
-}
-
-func (x *ListCertificatesRequest) GetPageToken() string {
- if x != nil {
- return x.PageToken
- }
- return ""
-}
-
-func (x *ListCertificatesRequest) GetFilter() string {
- if x != nil {
- return x.Filter
- }
- return ""
-}
-
-func (x *ListCertificatesRequest) GetOrderBy() string {
- if x != nil {
- return x.OrderBy
- }
- return ""
-}
-
-// Response message for [CertificateAuthorityService.ListCertificates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificates].
-type ListCertificatesResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The list of [Certificates][google.cloud.security.privateca.v1.Certificate].
- Certificates []*Certificate `protobuf:"bytes,1,rep,name=certificates,proto3" json:"certificates,omitempty"`
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificatesRequest.next_page_token][] to retrieve the
- // next page of results.
- NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
- // A list of locations (e.g. "us-west1") that could not be reached.
- Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"`
-}
-
-func (x *ListCertificatesResponse) Reset() {
- *x = ListCertificatesResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificatesResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificatesResponse) ProtoMessage() {}
-
-func (x *ListCertificatesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificatesResponse.ProtoReflect.Descriptor instead.
-func (*ListCertificatesResponse) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ListCertificatesResponse) GetCertificates() []*Certificate {
- if x != nil {
- return x.Certificates
- }
- return nil
-}
-
-func (x *ListCertificatesResponse) GetNextPageToken() string {
- if x != nil {
- return x.NextPageToken
- }
- return ""
-}
-
-func (x *ListCertificatesResponse) GetUnreachable() []string {
- if x != nil {
- return x.Unreachable
- }
- return nil
-}
-
-// Request message for
-// [CertificateAuthorityService.RevokeCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.RevokeCertificate].
-type RevokeCertificateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [Certificate][google.cloud.security.privateca.v1.Certificate] in the
- // format
- // `projects/*/locations/*/caPools/*/certificates/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Required. The [RevocationReason][google.cloud.security.privateca.v1.RevocationReason] for revoking this certificate.
- Reason RevocationReason `protobuf:"varint,2,opt,name=reason,proto3,enum=google.cloud.security.privateca.v1.RevocationReason" json:"reason,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *RevokeCertificateRequest) Reset() {
- *x = RevokeCertificateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RevokeCertificateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RevokeCertificateRequest) ProtoMessage() {}
-
-func (x *RevokeCertificateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RevokeCertificateRequest.ProtoReflect.Descriptor instead.
-func (*RevokeCertificateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *RevokeCertificateRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *RevokeCertificateRequest) GetReason() RevocationReason {
- if x != nil {
- return x.Reason
- }
- return RevocationReason_REVOCATION_REASON_UNSPECIFIED
-}
-
-func (x *RevokeCertificateRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for [CertificateAuthorityService.UpdateCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificate].
-type UpdateCertificateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. [Certificate][google.cloud.security.privateca.v1.Certificate] with updated values.
- Certificate *Certificate `protobuf:"bytes,1,opt,name=certificate,proto3" json:"certificate,omitempty"`
- // Required. A list of fields to be updated in this request.
- UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *UpdateCertificateRequest) Reset() {
- *x = UpdateCertificateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UpdateCertificateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateCertificateRequest) ProtoMessage() {}
-
-func (x *UpdateCertificateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateCertificateRequest.ProtoReflect.Descriptor instead.
-func (*UpdateCertificateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *UpdateCertificateRequest) GetCertificate() *Certificate {
- if x != nil {
- return x.Certificate
- }
- return nil
-}
-
-func (x *UpdateCertificateRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
- if x != nil {
- return x.UpdateMask
- }
- return nil
-}
-
-func (x *UpdateCertificateRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.ActivateCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.ActivateCertificateAuthority].
-type ActivateCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Required. The signed CA certificate issued from
- // [FetchCertificateAuthorityCsrResponse.pem_csr][google.cloud.security.privateca.v1.FetchCertificateAuthorityCsrResponse.pem_csr].
- PemCaCertificate string `protobuf:"bytes,2,opt,name=pem_ca_certificate,json=pemCaCertificate,proto3" json:"pem_ca_certificate,omitempty"`
- // Required. Must include information about the issuer of 'pem_ca_certificate', and any
- // further issuers until the self-signed CA.
- SubordinateConfig *SubordinateConfig `protobuf:"bytes,3,opt,name=subordinate_config,json=subordinateConfig,proto3" json:"subordinate_config,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *ActivateCertificateAuthorityRequest) Reset() {
- *x = ActivateCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ActivateCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ActivateCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *ActivateCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ActivateCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*ActivateCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *ActivateCertificateAuthorityRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *ActivateCertificateAuthorityRequest) GetPemCaCertificate() string {
- if x != nil {
- return x.PemCaCertificate
- }
- return ""
-}
-
-func (x *ActivateCertificateAuthorityRequest) GetSubordinateConfig() *SubordinateConfig {
- if x != nil {
- return x.SubordinateConfig
- }
- return nil
-}
-
-func (x *ActivateCertificateAuthorityRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.CreateCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateAuthority].
-type CreateCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the [CaPool][google.cloud.security.privateca.v1.CaPool] associated with the
- // [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority], in the format
- // `projects/*/locations/*/caPools/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Required. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`
- CertificateAuthorityId string `protobuf:"bytes,2,opt,name=certificate_authority_id,json=certificateAuthorityId,proto3" json:"certificate_authority_id,omitempty"`
- // Required. A [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] with initial field values.
- CertificateAuthority *CertificateAuthority `protobuf:"bytes,3,opt,name=certificate_authority,json=certificateAuthority,proto3" json:"certificate_authority,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *CreateCertificateAuthorityRequest) Reset() {
- *x = CreateCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *CreateCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*CreateCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *CreateCertificateAuthorityRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *CreateCertificateAuthorityRequest) GetCertificateAuthorityId() string {
- if x != nil {
- return x.CertificateAuthorityId
- }
- return ""
-}
-
-func (x *CreateCertificateAuthorityRequest) GetCertificateAuthority() *CertificateAuthority {
- if x != nil {
- return x.CertificateAuthority
- }
- return nil
-}
-
-func (x *CreateCertificateAuthorityRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.DisableCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.DisableCertificateAuthority].
-type DisableCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *DisableCertificateAuthorityRequest) Reset() {
- *x = DisableCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DisableCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DisableCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *DisableCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DisableCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*DisableCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *DisableCertificateAuthorityRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *DisableCertificateAuthorityRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.EnableCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.EnableCertificateAuthority].
-type EnableCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *EnableCertificateAuthorityRequest) Reset() {
- *x = EnableCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *EnableCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnableCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *EnableCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnableCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*EnableCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *EnableCertificateAuthorityRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *EnableCertificateAuthorityRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.FetchCertificateAuthorityCsr][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCertificateAuthorityCsr].
-type FetchCertificateAuthorityCsrRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *FetchCertificateAuthorityCsrRequest) Reset() {
- *x = FetchCertificateAuthorityCsrRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FetchCertificateAuthorityCsrRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FetchCertificateAuthorityCsrRequest) ProtoMessage() {}
-
-func (x *FetchCertificateAuthorityCsrRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FetchCertificateAuthorityCsrRequest.ProtoReflect.Descriptor instead.
-func (*FetchCertificateAuthorityCsrRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *FetchCertificateAuthorityCsrRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Response message for
-// [CertificateAuthorityService.FetchCertificateAuthorityCsr][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCertificateAuthorityCsr].
-type FetchCertificateAuthorityCsrResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Output only. The PEM-encoded signed certificate signing request (CSR).
- PemCsr string `protobuf:"bytes,1,opt,name=pem_csr,json=pemCsr,proto3" json:"pem_csr,omitempty"`
-}
-
-func (x *FetchCertificateAuthorityCsrResponse) Reset() {
- *x = FetchCertificateAuthorityCsrResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FetchCertificateAuthorityCsrResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FetchCertificateAuthorityCsrResponse) ProtoMessage() {}
-
-func (x *FetchCertificateAuthorityCsrResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FetchCertificateAuthorityCsrResponse.ProtoReflect.Descriptor instead.
-func (*FetchCertificateAuthorityCsrResponse) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *FetchCertificateAuthorityCsrResponse) GetPemCsr() string {
- if x != nil {
- return x.PemCsr
- }
- return ""
-}
-
-// Request message for [CertificateAuthorityService.GetCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateAuthority].
-type GetCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The [name][google.cloud.security.privateca.v1.CertificateAuthority.name] of the [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] to
- // get.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *GetCertificateAuthorityRequest) Reset() {
- *x = GetCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *GetCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*GetCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *GetCertificateAuthorityRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateAuthorities].
-type ListCertificateAuthoritiesRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the [CaPool][google.cloud.security.privateca.v1.CaPool] associated with the
- // [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority], in the format
- // `projects/*/locations/*/caPools/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Optional. Limit on the number of [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority] to
- // include in the response.
- // Further [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority] can subsequently be
- // obtained by including the
- // [ListCertificateAuthoritiesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateAuthoritiesResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
- // Optional. Pagination token, returned earlier via
- // [ListCertificateAuthoritiesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateAuthoritiesResponse.next_page_token].
- PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
- // Optional. Only include resources that match the filter in the response.
- Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
- // Optional. Specify how the results should be sorted.
- OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
-}
-
-func (x *ListCertificateAuthoritiesRequest) Reset() {
- *x = ListCertificateAuthoritiesRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificateAuthoritiesRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificateAuthoritiesRequest) ProtoMessage() {}
-
-func (x *ListCertificateAuthoritiesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificateAuthoritiesRequest.ProtoReflect.Descriptor instead.
-func (*ListCertificateAuthoritiesRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *ListCertificateAuthoritiesRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *ListCertificateAuthoritiesRequest) GetPageSize() int32 {
- if x != nil {
- return x.PageSize
- }
- return 0
-}
-
-func (x *ListCertificateAuthoritiesRequest) GetPageToken() string {
- if x != nil {
- return x.PageToken
- }
- return ""
-}
-
-func (x *ListCertificateAuthoritiesRequest) GetFilter() string {
- if x != nil {
- return x.Filter
- }
- return ""
-}
-
-func (x *ListCertificateAuthoritiesRequest) GetOrderBy() string {
- if x != nil {
- return x.OrderBy
- }
- return ""
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateAuthorities].
-type ListCertificateAuthoritiesResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The list of [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority].
- CertificateAuthorities []*CertificateAuthority `protobuf:"bytes,1,rep,name=certificate_authorities,json=certificateAuthorities,proto3" json:"certificate_authorities,omitempty"`
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateAuthoritiesRequest.next_page_token][] to retrieve the next
- // page of results.
- NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
- // A list of locations (e.g. "us-west1") that could not be reached.
- Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"`
-}
-
-func (x *ListCertificateAuthoritiesResponse) Reset() {
- *x = ListCertificateAuthoritiesResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificateAuthoritiesResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificateAuthoritiesResponse) ProtoMessage() {}
-
-func (x *ListCertificateAuthoritiesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificateAuthoritiesResponse.ProtoReflect.Descriptor instead.
-func (*ListCertificateAuthoritiesResponse) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *ListCertificateAuthoritiesResponse) GetCertificateAuthorities() []*CertificateAuthority {
- if x != nil {
- return x.CertificateAuthorities
- }
- return nil
-}
-
-func (x *ListCertificateAuthoritiesResponse) GetNextPageToken() string {
- if x != nil {
- return x.NextPageToken
- }
- return ""
-}
-
-func (x *ListCertificateAuthoritiesResponse) GetUnreachable() []string {
- if x != nil {
- return x.Unreachable
- }
- return nil
-}
-
-// Request message for
-// [CertificateAuthorityService.UndeleteCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.UndeleteCertificateAuthority].
-type UndeleteCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *UndeleteCertificateAuthorityRequest) Reset() {
- *x = UndeleteCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UndeleteCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UndeleteCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *UndeleteCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UndeleteCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*UndeleteCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *UndeleteCertificateAuthorityRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *UndeleteCertificateAuthorityRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.DeleteCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateAuthority].
-type DeleteCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
- // Optional. This field allows the CA to be deleted even if the CA has
- // active certs. Active certs include both unrevoked and unexpired certs.
- IgnoreActiveCertificates bool `protobuf:"varint,4,opt,name=ignore_active_certificates,json=ignoreActiveCertificates,proto3" json:"ignore_active_certificates,omitempty"`
-}
-
-func (x *DeleteCertificateAuthorityRequest) Reset() {
- *x = DeleteCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *DeleteCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*DeleteCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *DeleteCertificateAuthorityRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *DeleteCertificateAuthorityRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-func (x *DeleteCertificateAuthorityRequest) GetIgnoreActiveCertificates() bool {
- if x != nil {
- return x.IgnoreActiveCertificates
- }
- return false
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateAuthority].
-type UpdateCertificateAuthorityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] with updated values.
- CertificateAuthority *CertificateAuthority `protobuf:"bytes,1,opt,name=certificate_authority,json=certificateAuthority,proto3" json:"certificate_authority,omitempty"`
- // Required. A list of fields to be updated in this request.
- UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *UpdateCertificateAuthorityRequest) Reset() {
- *x = UpdateCertificateAuthorityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UpdateCertificateAuthorityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateCertificateAuthorityRequest) ProtoMessage() {}
-
-func (x *UpdateCertificateAuthorityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateCertificateAuthorityRequest.ProtoReflect.Descriptor instead.
-func (*UpdateCertificateAuthorityRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *UpdateCertificateAuthorityRequest) GetCertificateAuthority() *CertificateAuthority {
- if x != nil {
- return x.CertificateAuthority
- }
- return nil
-}
-
-func (x *UpdateCertificateAuthorityRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
- if x != nil {
- return x.UpdateMask
- }
- return nil
-}
-
-func (x *UpdateCertificateAuthorityRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.CreateCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCaPool].
-type CreateCaPoolRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the location associated with the
- // [CaPool][google.cloud.security.privateca.v1.CaPool], in the format `projects/*/locations/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Required. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`
- CaPoolId string `protobuf:"bytes,2,opt,name=ca_pool_id,json=caPoolId,proto3" json:"ca_pool_id,omitempty"`
- // Required. A [CaPool][google.cloud.security.privateca.v1.CaPool] with initial field values.
- CaPool *CaPool `protobuf:"bytes,3,opt,name=ca_pool,json=caPool,proto3" json:"ca_pool,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *CreateCaPoolRequest) Reset() {
- *x = CreateCaPoolRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateCaPoolRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateCaPoolRequest) ProtoMessage() {}
-
-func (x *CreateCaPoolRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateCaPoolRequest.ProtoReflect.Descriptor instead.
-func (*CreateCaPoolRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *CreateCaPoolRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *CreateCaPoolRequest) GetCaPoolId() string {
- if x != nil {
- return x.CaPoolId
- }
- return ""
-}
-
-func (x *CreateCaPoolRequest) GetCaPool() *CaPool {
- if x != nil {
- return x.CaPool
- }
- return nil
-}
-
-func (x *CreateCaPoolRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCaPool].
-type UpdateCaPoolRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. [CaPool][google.cloud.security.privateca.v1.CaPool] with updated values.
- CaPool *CaPool `protobuf:"bytes,1,opt,name=ca_pool,json=caPool,proto3" json:"ca_pool,omitempty"`
- // Required. A list of fields to be updated in this request.
- UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *UpdateCaPoolRequest) Reset() {
- *x = UpdateCaPoolRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[19]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UpdateCaPoolRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateCaPoolRequest) ProtoMessage() {}
-
-func (x *UpdateCaPoolRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[19]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateCaPoolRequest.ProtoReflect.Descriptor instead.
-func (*UpdateCaPoolRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *UpdateCaPoolRequest) GetCaPool() *CaPool {
- if x != nil {
- return x.CaPool
- }
- return nil
-}
-
-func (x *UpdateCaPoolRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
- if x != nil {
- return x.UpdateMask
- }
- return nil
-}
-
-func (x *UpdateCaPoolRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.DeleteCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCaPool].
-type DeleteCaPoolRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CaPool][google.cloud.security.privateca.v1.CaPool] in the
- // format `projects/*/locations/*/caPools/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *DeleteCaPoolRequest) Reset() {
- *x = DeleteCaPoolRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteCaPoolRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteCaPoolRequest) ProtoMessage() {}
-
-func (x *DeleteCaPoolRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteCaPoolRequest.ProtoReflect.Descriptor instead.
-func (*DeleteCaPoolRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *DeleteCaPoolRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *DeleteCaPoolRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.FetchCaCerts][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCaCerts].
-type FetchCaCertsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for the [CaPool][google.cloud.security.privateca.v1.CaPool] in the
- // format `projects/*/locations/*/caPools/*`.
- CaPool string `protobuf:"bytes,1,opt,name=ca_pool,json=caPool,proto3" json:"ca_pool,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *FetchCaCertsRequest) Reset() {
- *x = FetchCaCertsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FetchCaCertsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FetchCaCertsRequest) ProtoMessage() {}
-
-func (x *FetchCaCertsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[21]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FetchCaCertsRequest.ProtoReflect.Descriptor instead.
-func (*FetchCaCertsRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *FetchCaCertsRequest) GetCaPool() string {
- if x != nil {
- return x.CaPool
- }
- return ""
-}
-
-func (x *FetchCaCertsRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Response message for
-// [CertificateAuthorityService.FetchCaCerts][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCaCerts].
-type FetchCaCertsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The PEM encoded CA certificate chains of all
- // [ACTIVE][CertificateAuthority.State.ACTIVE] [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]
- // resources in this [CaPool][google.cloud.security.privateca.v1.CaPool].
- CaCerts []*FetchCaCertsResponse_CertChain `protobuf:"bytes,1,rep,name=ca_certs,json=caCerts,proto3" json:"ca_certs,omitempty"`
-}
-
-func (x *FetchCaCertsResponse) Reset() {
- *x = FetchCaCertsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[22]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FetchCaCertsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FetchCaCertsResponse) ProtoMessage() {}
-
-func (x *FetchCaCertsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[22]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FetchCaCertsResponse.ProtoReflect.Descriptor instead.
-func (*FetchCaCertsResponse) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *FetchCaCertsResponse) GetCaCerts() []*FetchCaCertsResponse_CertChain {
- if x != nil {
- return x.CaCerts
- }
- return nil
-}
-
-// Request message for [CertificateAuthorityService.GetCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCaPool].
-type GetCaPoolRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The [name][google.cloud.security.privateca.v1.CaPool.name] of the [CaPool][google.cloud.security.privateca.v1.CaPool] to get.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *GetCaPoolRequest) Reset() {
- *x = GetCaPoolRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetCaPoolRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetCaPoolRequest) ProtoMessage() {}
-
-func (x *GetCaPoolRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[23]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetCaPoolRequest.ProtoReflect.Descriptor instead.
-func (*GetCaPoolRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *GetCaPoolRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCaPools][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCaPools].
-type ListCaPoolsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the location associated with the
- // [CaPools][google.cloud.security.privateca.v1.CaPool], in the format
- // `projects/*/locations/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Optional. Limit on the number of [CaPools][google.cloud.security.privateca.v1.CaPool] to
- // include in the response.
- // Further [CaPools][google.cloud.security.privateca.v1.CaPool] can subsequently be
- // obtained by including the
- // [ListCaPoolsResponse.next_page_token][google.cloud.security.privateca.v1.ListCaPoolsResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
- // Optional. Pagination token, returned earlier via
- // [ListCaPoolsResponse.next_page_token][google.cloud.security.privateca.v1.ListCaPoolsResponse.next_page_token].
- PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
- // Optional. Only include resources that match the filter in the response.
- Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
- // Optional. Specify how the results should be sorted.
- OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
-}
-
-func (x *ListCaPoolsRequest) Reset() {
- *x = ListCaPoolsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[24]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCaPoolsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCaPoolsRequest) ProtoMessage() {}
-
-func (x *ListCaPoolsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[24]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCaPoolsRequest.ProtoReflect.Descriptor instead.
-func (*ListCaPoolsRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *ListCaPoolsRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *ListCaPoolsRequest) GetPageSize() int32 {
- if x != nil {
- return x.PageSize
- }
- return 0
-}
-
-func (x *ListCaPoolsRequest) GetPageToken() string {
- if x != nil {
- return x.PageToken
- }
- return ""
-}
-
-func (x *ListCaPoolsRequest) GetFilter() string {
- if x != nil {
- return x.Filter
- }
- return ""
-}
-
-func (x *ListCaPoolsRequest) GetOrderBy() string {
- if x != nil {
- return x.OrderBy
- }
- return ""
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCaPools][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCaPools].
-type ListCaPoolsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The list of [CaPools][google.cloud.security.privateca.v1.CaPool].
- CaPools []*CaPool `protobuf:"bytes,1,rep,name=ca_pools,json=caPools,proto3" json:"ca_pools,omitempty"`
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateAuthoritiesRequest.next_page_token][] to retrieve the next
- // page of results.
- NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
- // A list of locations (e.g. "us-west1") that could not be reached.
- Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"`
-}
-
-func (x *ListCaPoolsResponse) Reset() {
- *x = ListCaPoolsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCaPoolsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCaPoolsResponse) ProtoMessage() {}
-
-func (x *ListCaPoolsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[25]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCaPoolsResponse.ProtoReflect.Descriptor instead.
-func (*ListCaPoolsResponse) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *ListCaPoolsResponse) GetCaPools() []*CaPool {
- if x != nil {
- return x.CaPools
- }
- return nil
-}
-
-func (x *ListCaPoolsResponse) GetNextPageToken() string {
- if x != nil {
- return x.NextPageToken
- }
- return ""
-}
-
-func (x *ListCaPoolsResponse) GetUnreachable() []string {
- if x != nil {
- return x.Unreachable
- }
- return nil
-}
-
-// Request message for
-// [CertificateAuthorityService.GetCertificateRevocationList][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateRevocationList].
-type GetCertificateRevocationListRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The [name][google.cloud.security.privateca.v1.CertificateRevocationList.name] of the
- // [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] to get.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *GetCertificateRevocationListRequest) Reset() {
- *x = GetCertificateRevocationListRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[26]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetCertificateRevocationListRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetCertificateRevocationListRequest) ProtoMessage() {}
-
-func (x *GetCertificateRevocationListRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[26]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetCertificateRevocationListRequest.ProtoReflect.Descriptor instead.
-func (*GetCertificateRevocationListRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *GetCertificateRevocationListRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCertificateRevocationLists][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateRevocationLists].
-type ListCertificateRevocationListsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the location associated with the
- // [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList], in the format
- // `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Optional. Limit on the number of
- // [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList] to include in the
- // response. Further [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList]
- // can subsequently be obtained by including the
- // [ListCertificateRevocationListsResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateRevocationListsResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
- // Optional. Pagination token, returned earlier via
- // [ListCertificateRevocationListsResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateRevocationListsResponse.next_page_token].
- PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
- // Optional. Only include resources that match the filter in the response.
- Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
- // Optional. Specify how the results should be sorted.
- OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
-}
-
-func (x *ListCertificateRevocationListsRequest) Reset() {
- *x = ListCertificateRevocationListsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[27]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificateRevocationListsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificateRevocationListsRequest) ProtoMessage() {}
-
-func (x *ListCertificateRevocationListsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[27]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificateRevocationListsRequest.ProtoReflect.Descriptor instead.
-func (*ListCertificateRevocationListsRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *ListCertificateRevocationListsRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *ListCertificateRevocationListsRequest) GetPageSize() int32 {
- if x != nil {
- return x.PageSize
- }
- return 0
-}
-
-func (x *ListCertificateRevocationListsRequest) GetPageToken() string {
- if x != nil {
- return x.PageToken
- }
- return ""
-}
-
-func (x *ListCertificateRevocationListsRequest) GetFilter() string {
- if x != nil {
- return x.Filter
- }
- return ""
-}
-
-func (x *ListCertificateRevocationListsRequest) GetOrderBy() string {
- if x != nil {
- return x.OrderBy
- }
- return ""
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCertificateRevocationLists][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateRevocationLists].
-type ListCertificateRevocationListsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The list of [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList].
- CertificateRevocationLists []*CertificateRevocationList `protobuf:"bytes,1,rep,name=certificate_revocation_lists,json=certificateRevocationLists,proto3" json:"certificate_revocation_lists,omitempty"`
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateRevocationListsRequest.next_page_token][] to retrieve the
- // next page of results.
- NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
- // A list of locations (e.g. "us-west1") that could not be reached.
- Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"`
-}
-
-func (x *ListCertificateRevocationListsResponse) Reset() {
- *x = ListCertificateRevocationListsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[28]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificateRevocationListsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificateRevocationListsResponse) ProtoMessage() {}
-
-func (x *ListCertificateRevocationListsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[28]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificateRevocationListsResponse.ProtoReflect.Descriptor instead.
-func (*ListCertificateRevocationListsResponse) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *ListCertificateRevocationListsResponse) GetCertificateRevocationLists() []*CertificateRevocationList {
- if x != nil {
- return x.CertificateRevocationLists
- }
- return nil
-}
-
-func (x *ListCertificateRevocationListsResponse) GetNextPageToken() string {
- if x != nil {
- return x.NextPageToken
- }
- return ""
-}
-
-func (x *ListCertificateRevocationListsResponse) GetUnreachable() []string {
- if x != nil {
- return x.Unreachable
- }
- return nil
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCertificateRevocationList][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateRevocationList].
-type UpdateCertificateRevocationListRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] with updated values.
- CertificateRevocationList *CertificateRevocationList `protobuf:"bytes,1,opt,name=certificate_revocation_list,json=certificateRevocationList,proto3" json:"certificate_revocation_list,omitempty"`
- // Required. A list of fields to be updated in this request.
- UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *UpdateCertificateRevocationListRequest) Reset() {
- *x = UpdateCertificateRevocationListRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[29]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UpdateCertificateRevocationListRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateCertificateRevocationListRequest) ProtoMessage() {}
-
-func (x *UpdateCertificateRevocationListRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[29]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateCertificateRevocationListRequest.ProtoReflect.Descriptor instead.
-func (*UpdateCertificateRevocationListRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *UpdateCertificateRevocationListRequest) GetCertificateRevocationList() *CertificateRevocationList {
- if x != nil {
- return x.CertificateRevocationList
- }
- return nil
-}
-
-func (x *UpdateCertificateRevocationListRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
- if x != nil {
- return x.UpdateMask
- }
- return nil
-}
-
-func (x *UpdateCertificateRevocationListRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.CreateCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateTemplate].
-type CreateCertificateTemplateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the location associated with the
- // [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate], in the format
- // `projects/*/locations/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Required. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`
- CertificateTemplateId string `protobuf:"bytes,2,opt,name=certificate_template_id,json=certificateTemplateId,proto3" json:"certificate_template_id,omitempty"`
- // Required. A [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] with initial field values.
- CertificateTemplate *CertificateTemplate `protobuf:"bytes,3,opt,name=certificate_template,json=certificateTemplate,proto3" json:"certificate_template,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *CreateCertificateTemplateRequest) Reset() {
- *x = CreateCertificateTemplateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[30]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateCertificateTemplateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateCertificateTemplateRequest) ProtoMessage() {}
-
-func (x *CreateCertificateTemplateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[30]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateCertificateTemplateRequest.ProtoReflect.Descriptor instead.
-func (*CreateCertificateTemplateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *CreateCertificateTemplateRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *CreateCertificateTemplateRequest) GetCertificateTemplateId() string {
- if x != nil {
- return x.CertificateTemplateId
- }
- return ""
-}
-
-func (x *CreateCertificateTemplateRequest) GetCertificateTemplate() *CertificateTemplate {
- if x != nil {
- return x.CertificateTemplate
- }
- return nil
-}
-
-func (x *CreateCertificateTemplateRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.DeleteCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateTemplate].
-type DeleteCertificateTemplateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name for this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] in the format
- // `projects/*/locations/*/certificateTemplates/*`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *DeleteCertificateTemplateRequest) Reset() {
- *x = DeleteCertificateTemplateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[31]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteCertificateTemplateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteCertificateTemplateRequest) ProtoMessage() {}
-
-func (x *DeleteCertificateTemplateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[31]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteCertificateTemplateRequest.ProtoReflect.Descriptor instead.
-func (*DeleteCertificateTemplateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *DeleteCertificateTemplateRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *DeleteCertificateTemplateRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.GetCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateTemplate].
-type GetCertificateTemplateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The [name][google.cloud.security.privateca.v1.CertificateTemplate.name] of the [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] to
- // get.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *GetCertificateTemplateRequest) Reset() {
- *x = GetCertificateTemplateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[32]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetCertificateTemplateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetCertificateTemplateRequest) ProtoMessage() {}
-
-func (x *GetCertificateTemplateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[32]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetCertificateTemplateRequest.ProtoReflect.Descriptor instead.
-func (*GetCertificateTemplateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *GetCertificateTemplateRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCertificateTemplates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateTemplates].
-type ListCertificateTemplatesRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The resource name of the location associated with the
- // [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate], in the format
- // `projects/*/locations/*`.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Optional. Limit on the number of
- // [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate] to include in the response.
- // Further [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate] can subsequently be
- // obtained by including the
- // [ListCertificateTemplatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateTemplatesResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
- // Optional. Pagination token, returned earlier via
- // [ListCertificateTemplatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateTemplatesResponse.next_page_token].
- PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
- // Optional. Only include resources that match the filter in the response.
- Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
- // Optional. Specify how the results should be sorted.
- OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
-}
-
-func (x *ListCertificateTemplatesRequest) Reset() {
- *x = ListCertificateTemplatesRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[33]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificateTemplatesRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificateTemplatesRequest) ProtoMessage() {}
-
-func (x *ListCertificateTemplatesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[33]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificateTemplatesRequest.ProtoReflect.Descriptor instead.
-func (*ListCertificateTemplatesRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *ListCertificateTemplatesRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *ListCertificateTemplatesRequest) GetPageSize() int32 {
- if x != nil {
- return x.PageSize
- }
- return 0
-}
-
-func (x *ListCertificateTemplatesRequest) GetPageToken() string {
- if x != nil {
- return x.PageToken
- }
- return ""
-}
-
-func (x *ListCertificateTemplatesRequest) GetFilter() string {
- if x != nil {
- return x.Filter
- }
- return ""
-}
-
-func (x *ListCertificateTemplatesRequest) GetOrderBy() string {
- if x != nil {
- return x.OrderBy
- }
- return ""
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCertificateTemplates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateTemplates].
-type ListCertificateTemplatesResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The list of [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate].
- CertificateTemplates []*CertificateTemplate `protobuf:"bytes,1,rep,name=certificate_templates,json=certificateTemplates,proto3" json:"certificate_templates,omitempty"`
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateTemplatesRequest.next_page_token][] to retrieve
- // the next page of results.
- NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
- // A list of locations (e.g. "us-west1") that could not be reached.
- Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"`
-}
-
-func (x *ListCertificateTemplatesResponse) Reset() {
- *x = ListCertificateTemplatesResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[34]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListCertificateTemplatesResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListCertificateTemplatesResponse) ProtoMessage() {}
-
-func (x *ListCertificateTemplatesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[34]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListCertificateTemplatesResponse.ProtoReflect.Descriptor instead.
-func (*ListCertificateTemplatesResponse) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *ListCertificateTemplatesResponse) GetCertificateTemplates() []*CertificateTemplate {
- if x != nil {
- return x.CertificateTemplates
- }
- return nil
-}
-
-func (x *ListCertificateTemplatesResponse) GetNextPageToken() string {
- if x != nil {
- return x.NextPageToken
- }
- return ""
-}
-
-func (x *ListCertificateTemplatesResponse) GetUnreachable() []string {
- if x != nil {
- return x.Unreachable
- }
- return nil
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateTemplate].
-type UpdateCertificateTemplateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] with updated values.
- CertificateTemplate *CertificateTemplate `protobuf:"bytes,1,opt,name=certificate_template,json=certificateTemplate,proto3" json:"certificate_template,omitempty"`
- // Required. A list of fields to be updated in this request.
- UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
- // Optional. An WorkloadID to identify requests. Specify a unique request WorkloadID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // WorkloadID, the server can check if original operation with the same request WorkloadID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-}
-
-func (x *UpdateCertificateTemplateRequest) Reset() {
- *x = UpdateCertificateTemplateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[35]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UpdateCertificateTemplateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateCertificateTemplateRequest) ProtoMessage() {}
-
-func (x *UpdateCertificateTemplateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[35]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateCertificateTemplateRequest.ProtoReflect.Descriptor instead.
-func (*UpdateCertificateTemplateRequest) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *UpdateCertificateTemplateRequest) GetCertificateTemplate() *CertificateTemplate {
- if x != nil {
- return x.CertificateTemplate
- }
- return nil
-}
-
-func (x *UpdateCertificateTemplateRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
- if x != nil {
- return x.UpdateMask
- }
- return nil
-}
-
-func (x *UpdateCertificateTemplateRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-// Represents the metadata of the long-running operation.
-type OperationMetadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Output only. The time the operation was created.
- CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
- // Output only. The time the operation finished running.
- EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
- // Output only. Server-defined resource path for the target of the operation.
- Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
- // Output only. Name of the verb executed by the operation.
- Verb string `protobuf:"bytes,4,opt,name=verb,proto3" json:"verb,omitempty"`
- // Output only. Human-readable status of the operation, if any.
- StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"`
- // Output only. Identifies whether the user has requested cancellation
- // of the operation. Operations that have successfully been cancelled
- // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
- // corresponding to `Code.CANCELLED`.
- RequestedCancellation bool `protobuf:"varint,6,opt,name=requested_cancellation,json=requestedCancellation,proto3" json:"requested_cancellation,omitempty"`
- // Output only. API version used to start the operation.
- ApiVersion string `protobuf:"bytes,7,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
-}
-
-func (x *OperationMetadata) Reset() {
- *x = OperationMetadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[36]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OperationMetadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OperationMetadata) ProtoMessage() {}
-
-func (x *OperationMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[36]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OperationMetadata.ProtoReflect.Descriptor instead.
-func (*OperationMetadata) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *OperationMetadata) GetCreateTime() *timestamppb.Timestamp {
- if x != nil {
- return x.CreateTime
- }
- return nil
-}
-
-func (x *OperationMetadata) GetEndTime() *timestamppb.Timestamp {
- if x != nil {
- return x.EndTime
- }
- return nil
-}
-
-func (x *OperationMetadata) GetTarget() string {
- if x != nil {
- return x.Target
- }
- return ""
-}
-
-func (x *OperationMetadata) GetVerb() string {
- if x != nil {
- return x.Verb
- }
- return ""
-}
-
-func (x *OperationMetadata) GetStatusMessage() string {
- if x != nil {
- return x.StatusMessage
- }
- return ""
-}
-
-func (x *OperationMetadata) GetRequestedCancellation() bool {
- if x != nil {
- return x.RequestedCancellation
- }
- return false
-}
-
-func (x *OperationMetadata) GetApiVersion() string {
- if x != nil {
- return x.ApiVersion
- }
- return ""
-}
-
-type FetchCaCertsResponse_CertChain struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The certificates that form the CA chain, from leaf to root order.
- Certificates []string `protobuf:"bytes,1,rep,name=certificates,proto3" json:"certificates,omitempty"`
-}
-
-func (x *FetchCaCertsResponse_CertChain) Reset() {
- *x = FetchCaCertsResponse_CertChain{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[37]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FetchCaCertsResponse_CertChain) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FetchCaCertsResponse_CertChain) ProtoMessage() {}
-
-func (x *FetchCaCertsResponse_CertChain) ProtoReflect() protoreflect.Message {
- mi := &file_google_cloud_security_privateca_v1_service_proto_msgTypes[37]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FetchCaCertsResponse_CertChain.ProtoReflect.Descriptor instead.
-func (*FetchCaCertsResponse_CertChain) Descriptor() ([]byte, []int) {
- return file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP(), []int{22, 0}
-}
-
-func (x *FetchCaCertsResponse_CertChain) GetCertificates() []string {
- if x != nil {
- return x.Certificates
- }
- return nil
-}
-
-var File_google_cloud_security_privateca_v1_service_proto protoreflect.FileDescriptor
-
-var file_google_cloud_security_privateca_v1_service_proto_rawDesc = []byte{
- 0x0a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x12, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
- 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
- 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x81, 0x03, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x28, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x70, 0x72, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
- 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x01, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49,
- 0x64, 0x12, 0x57, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0b, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12,
- 0x29, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x0c, 0x76, 0x61,
- 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x4d, 0x0a, 0x20, 0x69, 0x73,
- 0x73, 0x75, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x1d, 0x69, 0x73, 0x73, 0x75,
- 0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x15, 0x47, 0x65, 0x74,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x2d, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x28, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x08, 0x70, 0x61,
- 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
- 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x06, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x72, 0x64,
- 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xb9, 0x01, 0x0a, 0x18, 0x4c,
- 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0c,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f,
- 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54,
- 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61,
- 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61,
- 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x76, 0x6f, 0x6b,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x2d, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x52, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x02, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22,
- 0xdb, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x0b,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
- 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
- 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xb6, 0x02,
- 0x0a, 0x23, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
- 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x32, 0x0a, 0x12, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x02, 0x52, 0x10, 0x70, 0x65, 0x6d, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x6a, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69,
- 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61,
- 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x11,
- 0x73, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xbf, 0x02, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe2, 0x41,
- 0x01, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3e,
- 0x0a, 0x18, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x16, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x73,
- 0x0a, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x14, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69,
- 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x95, 0x01, 0x0a, 0x22, 0x44, 0x69, 0x73,
- 0x61, 0x62, 0x6c, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x4a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2,
- 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x72,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64,
- 0x22, 0x94, 0x01, 0x0a, 0x21, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
- 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x71, 0x0a, 0x23, 0x46, 0x65, 0x74, 0x63, 0x68,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x43, 0x73, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2, 0x41,
- 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x24, 0x46, 0x65,
- 0x74, 0x63, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x73, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x65, 0x6d, 0x5f, 0x63, 0x73, 0x72, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x06, 0x70, 0x65, 0x6d, 0x43, 0x73,
- 0x72, 0x22, 0x6c, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x36, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
- 0xec, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52,
- 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f,
- 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x61,
- 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
- 0x1c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a,
- 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xe1,
- 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x17, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x52, 0x16, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74,
- 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
- 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62,
- 0x6c, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x23, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41,
- 0x2f, 0x0a, 0x2d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x21,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x4a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x36, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a,
- 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x49, 0x64, 0x12, 0x42, 0x0a, 0x1a, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x74,
- 0x69, 0x76, 0x65, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x18, 0x69, 0x67,
- 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x73, 0x0a, 0x15,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x14, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x12, 0x41, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61,
- 0x73, 0x6b, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
- 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xed, 0x01, 0x0a, 0x13, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x2a, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52,
- 0x08, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x07, 0x63, 0x61, 0x5f,
- 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x63, 0x61,
- 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
- 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xc8, 0x01, 0x0a, 0x13, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x49, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x41, 0x0a, 0x0b,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12,
- 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x49, 0x64, 0x22, 0x78, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61,
- 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe2, 0x41, 0x01, 0x02, 0xfa,
- 0x41, 0x21, 0x0a, 0x1f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x50,
- 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x7d,
- 0x0a, 0x13, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x21, 0x0a,
- 0x1f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c,
- 0x52, 0x06, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xa6, 0x01,
- 0x0a, 0x14, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72,
- 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65,
- 0x74, 0x63, 0x68, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x07, 0x63, 0x61,
- 0x43, 0x65, 0x72, 0x74, 0x73, 0x1a, 0x2f, 0x0a, 0x09, 0x43, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61,
- 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x22, 0x50, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x61, 0x50,
- 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41,
- 0x21, 0x0a, 0x1f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x50, 0x6f,
- 0x6f, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73,
- 0x74, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x42, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x2a, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x08, 0x70, 0x61,
- 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
- 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x06, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x72, 0x64,
- 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xa6, 0x01, 0x0a, 0x13, 0x4c,
- 0x69, 0x73, 0x74, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x45, 0x0a, 0x08, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
- 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c,
- 0x52, 0x07, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
- 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61,
- 0x62, 0x6c, 0x65, 0x22, 0x76, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c,
- 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41,
- 0x34, 0x0a, 0x32, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x25,
- 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x06, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x08,
- 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
- 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a,
- 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x6f,
- 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xf3, 0x01, 0x0a,
- 0x26, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x1c, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65,
- 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x1a, 0x63, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74,
- 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
- 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62,
- 0x6c, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x83, 0x01,
- 0x0a, 0x1b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65,
- 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69,
- 0x73, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x19, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c,
- 0x69, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61,
- 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
- 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xbb, 0x02, 0x0a, 0x20,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x42, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x2a, 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x17, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x15, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
- 0x49, 0x64, 0x12, 0x70, 0x0a, 0x14, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
- 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52,
- 0x13, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70,
- 0x6c, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
- 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x92, 0x01, 0x0a, 0x20, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54,
- 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe2, 0x41,
- 0x01, 0x02, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x6a,
- 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x49, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe2,
- 0x41, 0x01, 0x02, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70,
- 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xec, 0x01, 0x0a, 0x1f, 0x4c,
- 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42,
- 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a,
- 0xe2, 0x41, 0x01, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67,
- 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
- 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52,
- 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x06, 0x66, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65,
- 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01,
- 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xda, 0x01, 0x0a, 0x20, 0x4c, 0x69,
- 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d,
- 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c,
- 0x0a, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x14, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f,
- 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54,
- 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61,
- 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61,
- 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70,
- 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x70, 0x0a, 0x14, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
- 0x74, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x13, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a,
- 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b,
- 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xdc, 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x0b, 0x63,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b,
- 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x06, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x04, 0x76, 0x65, 0x72,
- 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x04, 0x76,
- 0x65, 0x72, 0x62, 0x12, 0x2b, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x12, 0x3b, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61,
- 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65,
- 0x64, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a,
- 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xfa, 0x3b, 0x0a, 0x1b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x53, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x12, 0xf7, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x73, 0xda, 0x41, 0x21, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x2c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x82,
- 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c,
- 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x73, 0x3a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0xc7,
- 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x49, 0xda,
- 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76,
- 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
- 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63,
- 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73,
- 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
- 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61,
- 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31,
- 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x53, 0xda, 0x41, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
- 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
- 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f,
- 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x3a, 0x01, 0x2a, 0x12,
- 0xf9, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x22, 0x75, 0xda, 0x41, 0x17, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x32, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72,
- 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0b,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x94, 0x02, 0x0a, 0x1c,
- 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x47, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c,
- 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0xca, 0x41, 0x29, 0x0a, 0x14, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52,
- 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
- 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x3a,
- 0x01, 0x2a, 0x12, 0xcc, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x01, 0xca, 0x41, 0x29, 0x0a, 0x14, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x35, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x5d, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73,
- 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x3a, 0x15, 0x63, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x12, 0x91, 0x02, 0x0a, 0x1b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0xca, 0x41, 0x29, 0x0a, 0x14,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x51, 0x22, 0x4c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
- 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a,
- 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x69, 0x73, 0x61, 0x62,
- 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8e, 0x02, 0x0a, 0x1a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
- 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
- 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0xca, 0x41, 0x29,
- 0x0a, 0x14, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x22, 0x4b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
- 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73,
- 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8c, 0x02, 0x0a, 0x1c, 0x46, 0x65, 0x74, 0x63, 0x68,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x43, 0x73, 0x72, 0x12, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74,
- 0x63, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x73, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
- 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43,
- 0x73, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0xda, 0x41, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
- 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
- 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f,
- 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a,
- 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0xec, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22,
- 0x53, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44,
- 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
- 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
- 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65,
- 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x82, 0x02, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x55, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f,
- 0x2a, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x94, 0x02, 0x0a, 0x1c, 0x55, 0x6e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x47, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e,
- 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0xca, 0x41, 0x29, 0x0a, 0x14, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x11,
- 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x22, 0x4d,
- 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
- 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
- 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65,
- 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a,
- 0x12, 0x83, 0x02, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,
- 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0xca, 0x41, 0x29, 0x0a, 0x14, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46,
- 0x2a, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
- 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xce, 0x02, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
- 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x01, 0xca, 0x41,
- 0x29, 0x0a, 0x14, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x21, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x73, 0x32, 0x5a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
- 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50,
- 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d,
- 0x3a, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0xde, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72,
- 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x22, 0x76, 0xca, 0x41, 0x1b, 0x0a, 0x06, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x11, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f,
- 0x6c, 0x2c, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x36, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
- 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x3a,
- 0x07, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0xe0, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67,
- 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x22, 0x78, 0xca, 0x41, 0x1b, 0x0a, 0x06, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x11,
- 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0xda, 0x41, 0x13, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x2c, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x32, 0x33, 0x2f,
- 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
- 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f,
- 0x2a, 0x7d, 0x3a, 0x07, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0xa9, 0x01, 0x0a, 0x09,
- 0x47, 0x65, 0x74, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x3a, 0xda, 0x41, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f,
- 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
- 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50,
- 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbc, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74,
- 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
- 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63,
- 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0xcf, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x43, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75,
- 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
- 0x67, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x31,
- 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
- 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61,
- 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x0c, 0x46, 0x65, 0x74,
- 0x63, 0x68, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46,
- 0x65, 0x74, 0x63, 0x68, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, 0x61, 0x43,
- 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0xda, 0x41,
- 0x07, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b,
- 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x61, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x3d, 0x70, 0x72, 0x6f,
- 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66,
- 0x65, 0x74, 0x63, 0x68, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x98,
- 0x02, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73,
- 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x70, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x12, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
- 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73,
- 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xab, 0x02, 0x0a, 0x1e, 0x4c, 0x69,
- 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76,
- 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x49, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x72, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x63, 0x12, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c, 0x73,
- 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x8d, 0x03, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76,
- 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31,
- 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfe, 0x01, 0xca, 0x41, 0x2e, 0x0a, 0x19, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x27, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
- 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9c, 0x01, 0x32, 0x7d, 0x2f, 0x76, 0x31,
- 0x2f, 0x7b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65,
- 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x6e, 0x61,
- 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x50, 0x6f, 0x6f, 0x6c,
- 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x1b, 0x63, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0xba, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d,
- 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
- 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70,
- 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
- 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x01, 0xca, 0x41, 0x28,
- 0x0a, 0x13, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d,
- 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x33, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x2c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65,
- 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x50, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x14,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70,
- 0x6c, 0x61, 0x74, 0x65, 0x12, 0x9a, 0x02, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
- 0x74, 0x65, 0x12, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x01, 0xca, 0x41, 0x4d, 0x0a, 0x15, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x12, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x2a, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61,
- 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a,
- 0x7d, 0x12, 0xdd, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x41, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x47, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61,
- 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a,
- 0x7d, 0x12, 0xf0, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x43,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
- 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0xda, 0x41, 0x06, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f,
- 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
- 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x74, 0x65, 0x73, 0x12, 0xbc, 0x02, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
- 0x74, 0x65, 0x12, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
- 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x01, 0xca, 0x41, 0x28, 0x0a, 0x13, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
- 0x74, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x32, 0x4d,
- 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70,
- 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x14, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x74, 0x65, 0x1a, 0x4c, 0xca, 0x41, 0x18, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63,
- 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
- 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75,
- 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x42, 0xfd, 0x01, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x50, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
- 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0x2f, 0x76,
- 0x31, 0x3b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x63, 0x61, 0xf8, 0x01, 0x01, 0xaa, 0x02,
- 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x41,
- 0x2e, 0x56, 0x31, 0xca, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f,
- 0x75, 0x64, 0x5c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5c, 0x50, 0x72, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x43, 0x41, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x3a, 0x3a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x41, 0x3a, 0x3a, 0x56,
- 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_cloud_security_privateca_v1_service_proto_rawDescOnce sync.Once
- file_google_cloud_security_privateca_v1_service_proto_rawDescData = file_google_cloud_security_privateca_v1_service_proto_rawDesc
-)
-
-func file_google_cloud_security_privateca_v1_service_proto_rawDescGZIP() []byte {
- file_google_cloud_security_privateca_v1_service_proto_rawDescOnce.Do(func() {
- file_google_cloud_security_privateca_v1_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_security_privateca_v1_service_proto_rawDescData)
- })
- return file_google_cloud_security_privateca_v1_service_proto_rawDescData
-}
-
-var file_google_cloud_security_privateca_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 38)
-var file_google_cloud_security_privateca_v1_service_proto_goTypes = []interface{}{
- (*CreateCertificateRequest)(nil), // 0: google.cloud.security.privateca.v1.CreateCertificateRequest
- (*GetCertificateRequest)(nil), // 1: google.cloud.security.privateca.v1.GetCertificateRequest
- (*ListCertificatesRequest)(nil), // 2: google.cloud.security.privateca.v1.ListCertificatesRequest
- (*ListCertificatesResponse)(nil), // 3: google.cloud.security.privateca.v1.ListCertificatesResponse
- (*RevokeCertificateRequest)(nil), // 4: google.cloud.security.privateca.v1.RevokeCertificateRequest
- (*UpdateCertificateRequest)(nil), // 5: google.cloud.security.privateca.v1.UpdateCertificateRequest
- (*ActivateCertificateAuthorityRequest)(nil), // 6: google.cloud.security.privateca.v1.ActivateCertificateAuthorityRequest
- (*CreateCertificateAuthorityRequest)(nil), // 7: google.cloud.security.privateca.v1.CreateCertificateAuthorityRequest
- (*DisableCertificateAuthorityRequest)(nil), // 8: google.cloud.security.privateca.v1.DisableCertificateAuthorityRequest
- (*EnableCertificateAuthorityRequest)(nil), // 9: google.cloud.security.privateca.v1.EnableCertificateAuthorityRequest
- (*FetchCertificateAuthorityCsrRequest)(nil), // 10: google.cloud.security.privateca.v1.FetchCertificateAuthorityCsrRequest
- (*FetchCertificateAuthorityCsrResponse)(nil), // 11: google.cloud.security.privateca.v1.FetchCertificateAuthorityCsrResponse
- (*GetCertificateAuthorityRequest)(nil), // 12: google.cloud.security.privateca.v1.GetCertificateAuthorityRequest
- (*ListCertificateAuthoritiesRequest)(nil), // 13: google.cloud.security.privateca.v1.ListCertificateAuthoritiesRequest
- (*ListCertificateAuthoritiesResponse)(nil), // 14: google.cloud.security.privateca.v1.ListCertificateAuthoritiesResponse
- (*UndeleteCertificateAuthorityRequest)(nil), // 15: google.cloud.security.privateca.v1.UndeleteCertificateAuthorityRequest
- (*DeleteCertificateAuthorityRequest)(nil), // 16: google.cloud.security.privateca.v1.DeleteCertificateAuthorityRequest
- (*UpdateCertificateAuthorityRequest)(nil), // 17: google.cloud.security.privateca.v1.UpdateCertificateAuthorityRequest
- (*CreateCaPoolRequest)(nil), // 18: google.cloud.security.privateca.v1.CreateCaPoolRequest
- (*UpdateCaPoolRequest)(nil), // 19: google.cloud.security.privateca.v1.UpdateCaPoolRequest
- (*DeleteCaPoolRequest)(nil), // 20: google.cloud.security.privateca.v1.DeleteCaPoolRequest
- (*FetchCaCertsRequest)(nil), // 21: google.cloud.security.privateca.v1.FetchCaCertsRequest
- (*FetchCaCertsResponse)(nil), // 22: google.cloud.security.privateca.v1.FetchCaCertsResponse
- (*GetCaPoolRequest)(nil), // 23: google.cloud.security.privateca.v1.GetCaPoolRequest
- (*ListCaPoolsRequest)(nil), // 24: google.cloud.security.privateca.v1.ListCaPoolsRequest
- (*ListCaPoolsResponse)(nil), // 25: google.cloud.security.privateca.v1.ListCaPoolsResponse
- (*GetCertificateRevocationListRequest)(nil), // 26: google.cloud.security.privateca.v1.GetCertificateRevocationListRequest
- (*ListCertificateRevocationListsRequest)(nil), // 27: google.cloud.security.privateca.v1.ListCertificateRevocationListsRequest
- (*ListCertificateRevocationListsResponse)(nil), // 28: google.cloud.security.privateca.v1.ListCertificateRevocationListsResponse
- (*UpdateCertificateRevocationListRequest)(nil), // 29: google.cloud.security.privateca.v1.UpdateCertificateRevocationListRequest
- (*CreateCertificateTemplateRequest)(nil), // 30: google.cloud.security.privateca.v1.CreateCertificateTemplateRequest
- (*DeleteCertificateTemplateRequest)(nil), // 31: google.cloud.security.privateca.v1.DeleteCertificateTemplateRequest
- (*GetCertificateTemplateRequest)(nil), // 32: google.cloud.security.privateca.v1.GetCertificateTemplateRequest
- (*ListCertificateTemplatesRequest)(nil), // 33: google.cloud.security.privateca.v1.ListCertificateTemplatesRequest
- (*ListCertificateTemplatesResponse)(nil), // 34: google.cloud.security.privateca.v1.ListCertificateTemplatesResponse
- (*UpdateCertificateTemplateRequest)(nil), // 35: google.cloud.security.privateca.v1.UpdateCertificateTemplateRequest
- (*OperationMetadata)(nil), // 36: google.cloud.security.privateca.v1.OperationMetadata
- (*FetchCaCertsResponse_CertChain)(nil), // 37: google.cloud.security.privateca.v1.FetchCaCertsResponse.CertChain
- (*Certificate)(nil), // 38: google.cloud.security.privateca.v1.Certificate
- (RevocationReason)(0), // 39: google.cloud.security.privateca.v1.RevocationReason
- (*fieldmaskpb.FieldMask)(nil), // 40: google.protobuf.FieldMask
- (*SubordinateConfig)(nil), // 41: google.cloud.security.privateca.v1.SubordinateConfig
- (*CertificateAuthority)(nil), // 42: google.cloud.security.privateca.v1.CertificateAuthority
- (*CaPool)(nil), // 43: google.cloud.security.privateca.v1.CaPool
- (*CertificateRevocationList)(nil), // 44: google.cloud.security.privateca.v1.CertificateRevocationList
- (*CertificateTemplate)(nil), // 45: google.cloud.security.privateca.v1.CertificateTemplate
- (*timestamppb.Timestamp)(nil), // 46: google.protobuf.Timestamp
- (*longrunning.Operation)(nil), // 47: google.longrunning.Operation
-}
-var file_google_cloud_security_privateca_v1_service_proto_depIdxs = []int32{
- 38, // 0: google.cloud.security.privateca.v1.CreateCertificateRequest.certificate:type_name -> google.cloud.security.privateca.v1.Certificate
- 38, // 1: google.cloud.security.privateca.v1.ListCertificatesResponse.certificates:type_name -> google.cloud.security.privateca.v1.Certificate
- 39, // 2: google.cloud.security.privateca.v1.RevokeCertificateRequest.reason:type_name -> google.cloud.security.privateca.v1.RevocationReason
- 38, // 3: google.cloud.security.privateca.v1.UpdateCertificateRequest.certificate:type_name -> google.cloud.security.privateca.v1.Certificate
- 40, // 4: google.cloud.security.privateca.v1.UpdateCertificateRequest.update_mask:type_name -> google.protobuf.FieldMask
- 41, // 5: google.cloud.security.privateca.v1.ActivateCertificateAuthorityRequest.subordinate_config:type_name -> google.cloud.security.privateca.v1.SubordinateConfig
- 42, // 6: google.cloud.security.privateca.v1.CreateCertificateAuthorityRequest.certificate_authority:type_name -> google.cloud.security.privateca.v1.CertificateAuthority
- 42, // 7: google.cloud.security.privateca.v1.ListCertificateAuthoritiesResponse.certificate_authorities:type_name -> google.cloud.security.privateca.v1.CertificateAuthority
- 42, // 8: google.cloud.security.privateca.v1.UpdateCertificateAuthorityRequest.certificate_authority:type_name -> google.cloud.security.privateca.v1.CertificateAuthority
- 40, // 9: google.cloud.security.privateca.v1.UpdateCertificateAuthorityRequest.update_mask:type_name -> google.protobuf.FieldMask
- 43, // 10: google.cloud.security.privateca.v1.CreateCaPoolRequest.ca_pool:type_name -> google.cloud.security.privateca.v1.CaPool
- 43, // 11: google.cloud.security.privateca.v1.UpdateCaPoolRequest.ca_pool:type_name -> google.cloud.security.privateca.v1.CaPool
- 40, // 12: google.cloud.security.privateca.v1.UpdateCaPoolRequest.update_mask:type_name -> google.protobuf.FieldMask
- 37, // 13: google.cloud.security.privateca.v1.FetchCaCertsResponse.ca_certs:type_name -> google.cloud.security.privateca.v1.FetchCaCertsResponse.CertChain
- 43, // 14: google.cloud.security.privateca.v1.ListCaPoolsResponse.ca_pools:type_name -> google.cloud.security.privateca.v1.CaPool
- 44, // 15: google.cloud.security.privateca.v1.ListCertificateRevocationListsResponse.certificate_revocation_lists:type_name -> google.cloud.security.privateca.v1.CertificateRevocationList
- 44, // 16: google.cloud.security.privateca.v1.UpdateCertificateRevocationListRequest.certificate_revocation_list:type_name -> google.cloud.security.privateca.v1.CertificateRevocationList
- 40, // 17: google.cloud.security.privateca.v1.UpdateCertificateRevocationListRequest.update_mask:type_name -> google.protobuf.FieldMask
- 45, // 18: google.cloud.security.privateca.v1.CreateCertificateTemplateRequest.certificate_template:type_name -> google.cloud.security.privateca.v1.CertificateTemplate
- 45, // 19: google.cloud.security.privateca.v1.ListCertificateTemplatesResponse.certificate_templates:type_name -> google.cloud.security.privateca.v1.CertificateTemplate
- 45, // 20: google.cloud.security.privateca.v1.UpdateCertificateTemplateRequest.certificate_template:type_name -> google.cloud.security.privateca.v1.CertificateTemplate
- 40, // 21: google.cloud.security.privateca.v1.UpdateCertificateTemplateRequest.update_mask:type_name -> google.protobuf.FieldMask
- 46, // 22: google.cloud.security.privateca.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp
- 46, // 23: google.cloud.security.privateca.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp
- 0, // 24: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificate:input_type -> google.cloud.security.privateca.v1.CreateCertificateRequest
- 1, // 25: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificate:input_type -> google.cloud.security.privateca.v1.GetCertificateRequest
- 2, // 26: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificates:input_type -> google.cloud.security.privateca.v1.ListCertificatesRequest
- 4, // 27: google.cloud.security.privateca.v1.CertificateAuthorityService.RevokeCertificate:input_type -> google.cloud.security.privateca.v1.RevokeCertificateRequest
- 5, // 28: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificate:input_type -> google.cloud.security.privateca.v1.UpdateCertificateRequest
- 6, // 29: google.cloud.security.privateca.v1.CertificateAuthorityService.ActivateCertificateAuthority:input_type -> google.cloud.security.privateca.v1.ActivateCertificateAuthorityRequest
- 7, // 30: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateAuthority:input_type -> google.cloud.security.privateca.v1.CreateCertificateAuthorityRequest
- 8, // 31: google.cloud.security.privateca.v1.CertificateAuthorityService.DisableCertificateAuthority:input_type -> google.cloud.security.privateca.v1.DisableCertificateAuthorityRequest
- 9, // 32: google.cloud.security.privateca.v1.CertificateAuthorityService.EnableCertificateAuthority:input_type -> google.cloud.security.privateca.v1.EnableCertificateAuthorityRequest
- 10, // 33: google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCertificateAuthorityCsr:input_type -> google.cloud.security.privateca.v1.FetchCertificateAuthorityCsrRequest
- 12, // 34: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateAuthority:input_type -> google.cloud.security.privateca.v1.GetCertificateAuthorityRequest
- 13, // 35: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateAuthorities:input_type -> google.cloud.security.privateca.v1.ListCertificateAuthoritiesRequest
- 15, // 36: google.cloud.security.privateca.v1.CertificateAuthorityService.UndeleteCertificateAuthority:input_type -> google.cloud.security.privateca.v1.UndeleteCertificateAuthorityRequest
- 16, // 37: google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateAuthority:input_type -> google.cloud.security.privateca.v1.DeleteCertificateAuthorityRequest
- 17, // 38: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateAuthority:input_type -> google.cloud.security.privateca.v1.UpdateCertificateAuthorityRequest
- 18, // 39: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCaPool:input_type -> google.cloud.security.privateca.v1.CreateCaPoolRequest
- 19, // 40: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCaPool:input_type -> google.cloud.security.privateca.v1.UpdateCaPoolRequest
- 23, // 41: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCaPool:input_type -> google.cloud.security.privateca.v1.GetCaPoolRequest
- 24, // 42: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCaPools:input_type -> google.cloud.security.privateca.v1.ListCaPoolsRequest
- 20, // 43: google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCaPool:input_type -> google.cloud.security.privateca.v1.DeleteCaPoolRequest
- 21, // 44: google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCaCerts:input_type -> google.cloud.security.privateca.v1.FetchCaCertsRequest
- 26, // 45: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateRevocationList:input_type -> google.cloud.security.privateca.v1.GetCertificateRevocationListRequest
- 27, // 46: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateRevocationLists:input_type -> google.cloud.security.privateca.v1.ListCertificateRevocationListsRequest
- 29, // 47: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateRevocationList:input_type -> google.cloud.security.privateca.v1.UpdateCertificateRevocationListRequest
- 30, // 48: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateTemplate:input_type -> google.cloud.security.privateca.v1.CreateCertificateTemplateRequest
- 31, // 49: google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateTemplate:input_type -> google.cloud.security.privateca.v1.DeleteCertificateTemplateRequest
- 32, // 50: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateTemplate:input_type -> google.cloud.security.privateca.v1.GetCertificateTemplateRequest
- 33, // 51: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateTemplates:input_type -> google.cloud.security.privateca.v1.ListCertificateTemplatesRequest
- 35, // 52: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateTemplate:input_type -> google.cloud.security.privateca.v1.UpdateCertificateTemplateRequest
- 38, // 53: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificate:output_type -> google.cloud.security.privateca.v1.Certificate
- 38, // 54: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificate:output_type -> google.cloud.security.privateca.v1.Certificate
- 3, // 55: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificates:output_type -> google.cloud.security.privateca.v1.ListCertificatesResponse
- 38, // 56: google.cloud.security.privateca.v1.CertificateAuthorityService.RevokeCertificate:output_type -> google.cloud.security.privateca.v1.Certificate
- 38, // 57: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificate:output_type -> google.cloud.security.privateca.v1.Certificate
- 47, // 58: google.cloud.security.privateca.v1.CertificateAuthorityService.ActivateCertificateAuthority:output_type -> google.longrunning.Operation
- 47, // 59: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateAuthority:output_type -> google.longrunning.Operation
- 47, // 60: google.cloud.security.privateca.v1.CertificateAuthorityService.DisableCertificateAuthority:output_type -> google.longrunning.Operation
- 47, // 61: google.cloud.security.privateca.v1.CertificateAuthorityService.EnableCertificateAuthority:output_type -> google.longrunning.Operation
- 11, // 62: google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCertificateAuthorityCsr:output_type -> google.cloud.security.privateca.v1.FetchCertificateAuthorityCsrResponse
- 42, // 63: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateAuthority:output_type -> google.cloud.security.privateca.v1.CertificateAuthority
- 14, // 64: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateAuthorities:output_type -> google.cloud.security.privateca.v1.ListCertificateAuthoritiesResponse
- 47, // 65: google.cloud.security.privateca.v1.CertificateAuthorityService.UndeleteCertificateAuthority:output_type -> google.longrunning.Operation
- 47, // 66: google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateAuthority:output_type -> google.longrunning.Operation
- 47, // 67: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateAuthority:output_type -> google.longrunning.Operation
- 47, // 68: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCaPool:output_type -> google.longrunning.Operation
- 47, // 69: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCaPool:output_type -> google.longrunning.Operation
- 43, // 70: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCaPool:output_type -> google.cloud.security.privateca.v1.CaPool
- 25, // 71: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCaPools:output_type -> google.cloud.security.privateca.v1.ListCaPoolsResponse
- 47, // 72: google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCaPool:output_type -> google.longrunning.Operation
- 22, // 73: google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCaCerts:output_type -> google.cloud.security.privateca.v1.FetchCaCertsResponse
- 44, // 74: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateRevocationList:output_type -> google.cloud.security.privateca.v1.CertificateRevocationList
- 28, // 75: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateRevocationLists:output_type -> google.cloud.security.privateca.v1.ListCertificateRevocationListsResponse
- 47, // 76: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateRevocationList:output_type -> google.longrunning.Operation
- 47, // 77: google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateTemplate:output_type -> google.longrunning.Operation
- 47, // 78: google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateTemplate:output_type -> google.longrunning.Operation
- 45, // 79: google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateTemplate:output_type -> google.cloud.security.privateca.v1.CertificateTemplate
- 34, // 80: google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateTemplates:output_type -> google.cloud.security.privateca.v1.ListCertificateTemplatesResponse
- 47, // 81: google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateTemplate:output_type -> google.longrunning.Operation
- 53, // [53:82] is the sub-list for method output_type
- 24, // [24:53] is the sub-list for method input_type
- 24, // [24:24] is the sub-list for extension type_name
- 24, // [24:24] is the sub-list for extension extendee
- 0, // [0:24] is the sub-list for field type_name
-}
-
-func init() { file_google_cloud_security_privateca_v1_service_proto_init() }
-func file_google_cloud_security_privateca_v1_service_proto_init() {
- if File_google_cloud_security_privateca_v1_service_proto != nil {
- return
- }
- file_google_cloud_security_privateca_v1_resources_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateCertificateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetCertificateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificatesRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificatesResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RevokeCertificateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateCertificateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ActivateCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DisableCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EnableCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FetchCertificateAuthorityCsrRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FetchCertificateAuthorityCsrResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificateAuthoritiesRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificateAuthoritiesResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UndeleteCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateCertificateAuthorityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateCaPoolRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateCaPoolRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteCaPoolRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FetchCaCertsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FetchCaCertsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetCaPoolRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCaPoolsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCaPoolsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetCertificateRevocationListRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificateRevocationListsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificateRevocationListsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateCertificateRevocationListRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateCertificateTemplateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteCertificateTemplateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetCertificateTemplateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificateTemplatesRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCertificateTemplatesResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateCertificateTemplateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OperationMetadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_cloud_security_privateca_v1_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FetchCaCertsResponse_CertChain); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_cloud_security_privateca_v1_service_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 38,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_google_cloud_security_privateca_v1_service_proto_goTypes,
- DependencyIndexes: file_google_cloud_security_privateca_v1_service_proto_depIdxs,
- MessageInfos: file_google_cloud_security_privateca_v1_service_proto_msgTypes,
- }.Build()
- File_google_cloud_security_privateca_v1_service_proto = out.File
- file_google_cloud_security_privateca_v1_service_proto_rawDesc = nil
- file_google_cloud_security_privateca_v1_service_proto_goTypes = nil
- file_google_cloud_security_privateca_v1_service_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/longrunning/operations.pb.go b/gen/proto/google/longrunning/operations.pb.go
deleted file mode 100644
index cfbe3b7..0000000
--- a/gen/proto/google/longrunning/operations.pb.go
+++ /dev/null
@@ -1,928 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/longrunning/operations.proto
-
-package longrunning
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- status "google.golang.org/genproto/googleapis/rpc/status"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- anypb "google.golang.org/protobuf/types/known/anypb"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// This resource represents a long-running operation that is the result of a
-// network API call.
-type Operation struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The server-assigned name, which is only unique within the same service that
- // originally returns it. If you use the default HTTP mapping, the
- // `name` should be a resource name ending with `operations/{unique_id}`.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Service-specific metadata associated with the operation. It typically
- // contains progress information and common metadata such as create time.
- // Some services might not provide such metadata. Any method that returns a
- // long-running operation should document the metadata type, if any.
- Metadata *anypb.Any `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // If the value is `false`, it means the operation is still in progress.
- // If `true`, the operation is completed, and either `error` or `response` is
- // available.
- Done bool `protobuf:"varint,3,opt,name=done,proto3" json:"done,omitempty"`
- // The operation result, which can be either an `error` or a valid `response`.
- // If `done` == `false`, neither `error` nor `response` is set.
- // If `done` == `true`, exactly one of `error` or `response` is set.
- //
- // Types that are assignable to Result:
- // *Operation_Error
- // *Operation_Response
- Result isOperation_Result `protobuf_oneof:"result"`
-}
-
-func (x *Operation) Reset() {
- *x = Operation{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Operation) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Operation) ProtoMessage() {}
-
-func (x *Operation) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Operation.ProtoReflect.Descriptor instead.
-func (*Operation) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Operation) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Operation) GetMetadata() *anypb.Any {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *Operation) GetDone() bool {
- if x != nil {
- return x.Done
- }
- return false
-}
-
-func (m *Operation) GetResult() isOperation_Result {
- if m != nil {
- return m.Result
- }
- return nil
-}
-
-func (x *Operation) GetError() *status.Status {
- if x, ok := x.GetResult().(*Operation_Error); ok {
- return x.Error
- }
- return nil
-}
-
-func (x *Operation) GetResponse() *anypb.Any {
- if x, ok := x.GetResult().(*Operation_Response); ok {
- return x.Response
- }
- return nil
-}
-
-type isOperation_Result interface {
- isOperation_Result()
-}
-
-type Operation_Error struct {
- // The error result of the operation in case of failure or cancellation.
- Error *status.Status `protobuf:"bytes,4,opt,name=error,proto3,oneof"`
-}
-
-type Operation_Response struct {
- // The normal response of the operation in case of success. If the original
- // method returns no data on success, such as `Delete`, the response is
- // `google.protobuf.Empty`. If the original method is standard
- // `Get`/`Create`/`Update`, the response should be the resource. For other
- // methods, the response should have the type `XxxResponse`, where `Xxx`
- // is the original method name. For example, if the original method name
- // is `TakeSnapshot()`, the inferred response type is
- // `TakeSnapshotResponse`.
- Response *anypb.Any `protobuf:"bytes,5,opt,name=response,proto3,oneof"`
-}
-
-func (*Operation_Error) isOperation_Result() {}
-
-func (*Operation_Response) isOperation_Result() {}
-
-// The request message for [Operations.GetOperation][google.longrunning.Operations.GetOperation].
-type GetOperationRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the operation resource.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *GetOperationRequest) Reset() {
- *x = GetOperationRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetOperationRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetOperationRequest) ProtoMessage() {}
-
-func (x *GetOperationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetOperationRequest.ProtoReflect.Descriptor instead.
-func (*GetOperationRequest) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GetOperationRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// The request message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
-type ListOperationsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the operation's parent resource.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- // The standard list filter.
- Filter string `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
- // The standard list page size.
- PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
- // The standard list page token.
- PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
-}
-
-func (x *ListOperationsRequest) Reset() {
- *x = ListOperationsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListOperationsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListOperationsRequest) ProtoMessage() {}
-
-func (x *ListOperationsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListOperationsRequest.ProtoReflect.Descriptor instead.
-func (*ListOperationsRequest) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ListOperationsRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *ListOperationsRequest) GetFilter() string {
- if x != nil {
- return x.Filter
- }
- return ""
-}
-
-func (x *ListOperationsRequest) GetPageSize() int32 {
- if x != nil {
- return x.PageSize
- }
- return 0
-}
-
-func (x *ListOperationsRequest) GetPageToken() string {
- if x != nil {
- return x.PageToken
- }
- return ""
-}
-
-// The response message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
-type ListOperationsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A list of operations that matches the specified filter in the request.
- Operations []*Operation `protobuf:"bytes,1,rep,name=operations,proto3" json:"operations,omitempty"`
- // The standard List next-page token.
- NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
-}
-
-func (x *ListOperationsResponse) Reset() {
- *x = ListOperationsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListOperationsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListOperationsResponse) ProtoMessage() {}
-
-func (x *ListOperationsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListOperationsResponse.ProtoReflect.Descriptor instead.
-func (*ListOperationsResponse) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ListOperationsResponse) GetOperations() []*Operation {
- if x != nil {
- return x.Operations
- }
- return nil
-}
-
-func (x *ListOperationsResponse) GetNextPageToken() string {
- if x != nil {
- return x.NextPageToken
- }
- return ""
-}
-
-// The request message for [Operations.CancelOperation][google.longrunning.Operations.CancelOperation].
-type CancelOperationRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the operation resource to be cancelled.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *CancelOperationRequest) Reset() {
- *x = CancelOperationRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CancelOperationRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CancelOperationRequest) ProtoMessage() {}
-
-func (x *CancelOperationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CancelOperationRequest.ProtoReflect.Descriptor instead.
-func (*CancelOperationRequest) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *CancelOperationRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// The request message for [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation].
-type DeleteOperationRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the operation resource to be deleted.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *DeleteOperationRequest) Reset() {
- *x = DeleteOperationRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteOperationRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteOperationRequest) ProtoMessage() {}
-
-func (x *DeleteOperationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteOperationRequest.ProtoReflect.Descriptor instead.
-func (*DeleteOperationRequest) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *DeleteOperationRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// The request message for [Operations.WaitOperation][google.longrunning.Operations.WaitOperation].
-type WaitOperationRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the operation resource to wait on.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The maximum duration to wait before timing out. If left blank, the wait
- // will be at most the time permitted by the underlying HTTP/RPC protocol.
- // If RPC context deadline is also specified, the shorter one will be used.
- Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
-}
-
-func (x *WaitOperationRequest) Reset() {
- *x = WaitOperationRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WaitOperationRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WaitOperationRequest) ProtoMessage() {}
-
-func (x *WaitOperationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WaitOperationRequest.ProtoReflect.Descriptor instead.
-func (*WaitOperationRequest) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *WaitOperationRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *WaitOperationRequest) GetTimeout() *durationpb.Duration {
- if x != nil {
- return x.Timeout
- }
- return nil
-}
-
-// A message representing the message types used by a long-running operation.
-//
-// Example:
-//
-// rpc LongRunningRecognize(LongRunningRecognizeRequest)
-// returns (google.longrunning.Operation) {
-// option (google.longrunning.operation_info) = {
-// response_type: "LongRunningRecognizeResponse"
-// metadata_type: "LongRunningRecognizeMetadata"
-// };
-// }
-type OperationInfo struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required. The message name of the primary return type for this
- // long-running operation.
- // This type will be used to deserialize the LRO's response.
- //
- // If the response is in a different package from the rpc, a fully-qualified
- // message name must be used (e.g. `google.protobuf.Struct`).
- //
- // Note: Altering this value constitutes a breaking change.
- ResponseType string `protobuf:"bytes,1,opt,name=response_type,json=responseType,proto3" json:"response_type,omitempty"`
- // Required. The message name of the metadata type for this long-running
- // operation.
- //
- // If the response is in a different package from the rpc, a fully-qualified
- // message name must be used (e.g. `google.protobuf.Struct`).
- //
- // Note: Altering this value constitutes a breaking change.
- MetadataType string `protobuf:"bytes,2,opt,name=metadata_type,json=metadataType,proto3" json:"metadata_type,omitempty"`
-}
-
-func (x *OperationInfo) Reset() {
- *x = OperationInfo{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_longrunning_operations_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OperationInfo) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OperationInfo) ProtoMessage() {}
-
-func (x *OperationInfo) ProtoReflect() protoreflect.Message {
- mi := &file_google_longrunning_operations_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OperationInfo.ProtoReflect.Descriptor instead.
-func (*OperationInfo) Descriptor() ([]byte, []int) {
- return file_google_longrunning_operations_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *OperationInfo) GetResponseType() string {
- if x != nil {
- return x.ResponseType
- }
- return ""
-}
-
-func (x *OperationInfo) GetMetadataType() string {
- if x != nil {
- return x.MetadataType
- }
- return ""
-}
-
-var file_google_longrunning_operations_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.MethodOptions)(nil),
- ExtensionType: (*OperationInfo)(nil),
- Field: 1049,
- Name: "google.longrunning.operation_info",
- Tag: "bytes,1049,opt,name=operation_info",
- Filename: "google/longrunning/operations.proto",
- },
-}
-
-// Extension fields to descriptorpb.MethodOptions.
-var (
- // Additional information regarding long-running operations.
- // In particular, this specifies the types that are returned from
- // long-running operations.
- //
- // Required for methods that return `google.longrunning.Operation`; invalid
- // otherwise.
- //
- // optional google.longrunning.OperationInfo operation_info = 1049;
- E_OperationInfo = &file_google_longrunning_operations_proto_extTypes[0]
-)
-
-var File_google_longrunning_operations_proto protoreflect.FileDescriptor
-
-var file_google_longrunning_operations_proto_rawDesc = []byte{
- 0x0a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e,
- 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
- 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70,
- 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x22, 0xcf, 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65,
- 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00,
- 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48,
- 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72,
- 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x29, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x22, 0x7f, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
- 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69,
- 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x22, 0x7f, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x6f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e,
- 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a,
- 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65,
- 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
- 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x16, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x22, 0x2c, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5f,
- 0x0a, 0x14, 0x57, 0x61, 0x69, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69,
- 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22,
- 0x59, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x32, 0xaa, 0x05, 0x0a, 0x0a, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x0e, 0x4c, 0x69,
- 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
- 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x2b, 0xda, 0x41, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x66, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
- 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x7d,
- 0x12, 0x7f, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75,
- 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61,
- 0x6d, 0x65, 0x3d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2a,
- 0x7d, 0x12, 0x7e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
- 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61,
- 0x6d, 0x65, 0x3d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2a,
- 0x7d, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c,
- 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65,
- 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x31, 0xda, 0x41, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e,
- 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
- 0x2a, 0x7d, 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0x5a, 0x0a, 0x0d,
- 0x57, 0x61, 0x69, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69,
- 0x6e, 0x67, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x1a, 0x1d, 0xca, 0x41, 0x1a, 0x6c, 0x6f, 0x6e,
- 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
- 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x3a, 0x69, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68,
- 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75,
- 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
- 0x66, 0x6f, 0x42, 0x97, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x3d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
- 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e,
- 0x69, 0x6e, 0x67, 0x3b, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0xf8,
- 0x01, 0x01, 0xaa, 0x02, 0x12, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x4c, 0x6f, 0x6e, 0x67,
- 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x12, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x5c, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_longrunning_operations_proto_rawDescOnce sync.Once
- file_google_longrunning_operations_proto_rawDescData = file_google_longrunning_operations_proto_rawDesc
-)
-
-func file_google_longrunning_operations_proto_rawDescGZIP() []byte {
- file_google_longrunning_operations_proto_rawDescOnce.Do(func() {
- file_google_longrunning_operations_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_longrunning_operations_proto_rawDescData)
- })
- return file_google_longrunning_operations_proto_rawDescData
-}
-
-var file_google_longrunning_operations_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_google_longrunning_operations_proto_goTypes = []interface{}{
- (*Operation)(nil), // 0: google.longrunning.Operation
- (*GetOperationRequest)(nil), // 1: google.longrunning.GetOperationRequest
- (*ListOperationsRequest)(nil), // 2: google.longrunning.ListOperationsRequest
- (*ListOperationsResponse)(nil), // 3: google.longrunning.ListOperationsResponse
- (*CancelOperationRequest)(nil), // 4: google.longrunning.CancelOperationRequest
- (*DeleteOperationRequest)(nil), // 5: google.longrunning.DeleteOperationRequest
- (*WaitOperationRequest)(nil), // 6: google.longrunning.WaitOperationRequest
- (*OperationInfo)(nil), // 7: google.longrunning.OperationInfo
- (*anypb.Any)(nil), // 8: google.protobuf.Any
- (*status.Status)(nil), // 9: google.rpc.Status
- (*durationpb.Duration)(nil), // 10: google.protobuf.Duration
- (*descriptorpb.MethodOptions)(nil), // 11: google.protobuf.MethodOptions
- (*emptypb.Empty)(nil), // 12: google.protobuf.Empty
-}
-var file_google_longrunning_operations_proto_depIdxs = []int32{
- 8, // 0: google.longrunning.Operation.metadata:type_name -> google.protobuf.Any
- 9, // 1: google.longrunning.Operation.error:type_name -> google.rpc.Status
- 8, // 2: google.longrunning.Operation.response:type_name -> google.protobuf.Any
- 0, // 3: google.longrunning.ListOperationsResponse.operations:type_name -> google.longrunning.Operation
- 10, // 4: google.longrunning.WaitOperationRequest.timeout:type_name -> google.protobuf.Duration
- 11, // 5: google.longrunning.operation_info:extendee -> google.protobuf.MethodOptions
- 7, // 6: google.longrunning.operation_info:type_name -> google.longrunning.OperationInfo
- 2, // 7: google.longrunning.Operations.ListOperations:input_type -> google.longrunning.ListOperationsRequest
- 1, // 8: google.longrunning.Operations.GetOperation:input_type -> google.longrunning.GetOperationRequest
- 5, // 9: google.longrunning.Operations.DeleteOperation:input_type -> google.longrunning.DeleteOperationRequest
- 4, // 10: google.longrunning.Operations.CancelOperation:input_type -> google.longrunning.CancelOperationRequest
- 6, // 11: google.longrunning.Operations.WaitOperation:input_type -> google.longrunning.WaitOperationRequest
- 3, // 12: google.longrunning.Operations.ListOperations:output_type -> google.longrunning.ListOperationsResponse
- 0, // 13: google.longrunning.Operations.GetOperation:output_type -> google.longrunning.Operation
- 12, // 14: google.longrunning.Operations.DeleteOperation:output_type -> google.protobuf.Empty
- 12, // 15: google.longrunning.Operations.CancelOperation:output_type -> google.protobuf.Empty
- 0, // 16: google.longrunning.Operations.WaitOperation:output_type -> google.longrunning.Operation
- 12, // [12:17] is the sub-list for method output_type
- 7, // [7:12] is the sub-list for method input_type
- 6, // [6:7] is the sub-list for extension type_name
- 5, // [5:6] is the sub-list for extension extendee
- 0, // [0:5] is the sub-list for field type_name
-}
-
-func init() { file_google_longrunning_operations_proto_init() }
-func file_google_longrunning_operations_proto_init() {
- if File_google_longrunning_operations_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_google_longrunning_operations_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Operation); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_longrunning_operations_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetOperationRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_longrunning_operations_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListOperationsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_longrunning_operations_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListOperationsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_longrunning_operations_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CancelOperationRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_longrunning_operations_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteOperationRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_longrunning_operations_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WaitOperationRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_longrunning_operations_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OperationInfo); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_google_longrunning_operations_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*Operation_Error)(nil),
- (*Operation_Response)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_longrunning_operations_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 8,
- NumExtensions: 1,
- NumServices: 1,
- },
- GoTypes: file_google_longrunning_operations_proto_goTypes,
- DependencyIndexes: file_google_longrunning_operations_proto_depIdxs,
- MessageInfos: file_google_longrunning_operations_proto_msgTypes,
- ExtensionInfos: file_google_longrunning_operations_proto_extTypes,
- }.Build()
- File_google_longrunning_operations_proto = out.File
- file_google_longrunning_operations_proto_rawDesc = nil
- file_google_longrunning_operations_proto_goTypes = nil
- file_google_longrunning_operations_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/rpc/code.pb.go b/gen/proto/google/rpc/code.pb.go
deleted file mode 100644
index a45c080..0000000
--- a/gen/proto/google/rpc/code.pb.go
+++ /dev/null
@@ -1,335 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/rpc/code.proto
-
-package code
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// The canonical error codes for gRPC APIs.
-//
-//
-// Sometimes multiple error codes may apply. Services should return
-// the most specific error code that applies. For example, prefer
-// `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply.
-// Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`.
-type Code int32
-
-const (
- // Not an error; returned on success
- //
- // HTTP Mapping: 200 OK
- Code_OK Code = 0
- // The operation was cancelled, typically by the caller.
- //
- // HTTP Mapping: 499 Client Closed Request
- Code_CANCELLED Code = 1
- // Unknown error. For example, this error may be returned when
- // a `Status` value received from another address space belongs to
- // an error space that is not known in this address space. Also
- // errors raised by APIs that do not return enough error information
- // may be converted to this error.
- //
- // HTTP Mapping: 500 Internal Server Error
- Code_UNKNOWN Code = 2
- // The client specified an invalid argument. Note that this differs
- // from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments
- // that are problematic regardless of the state of the system
- // (e.g., a malformed file name).
- //
- // HTTP Mapping: 400 Bad Request
- Code_INVALID_ARGUMENT Code = 3
- // The deadline expired before the operation could complete. For operations
- // that change the state of the system, this error may be returned
- // even if the operation has completed successfully. For example, a
- // successful response from a server could have been delayed long
- // enough for the deadline to expire.
- //
- // HTTP Mapping: 504 Gateway Timeout
- Code_DEADLINE_EXCEEDED Code = 4
- // Some requested entity (e.g., file or directory) was not found.
- //
- // Note to server developers: if a request is denied for an entire class
- // of users, such as gradual feature rollout or undocumented whitelist,
- // `NOT_FOUND` may be used. If a request is denied for some users within
- // a class of users, such as user-based access control, `PERMISSION_DENIED`
- // must be used.
- //
- // HTTP Mapping: 404 Not Found
- Code_NOT_FOUND Code = 5
- // The entity that a client attempted to create (e.g., file or directory)
- // already exists.
- //
- // HTTP Mapping: 409 Conflict
- Code_ALREADY_EXISTS Code = 6
- // The caller does not have permission to execute the specified
- // operation. `PERMISSION_DENIED` must not be used for rejections
- // caused by exhausting some resource (use `RESOURCE_EXHAUSTED`
- // instead for those errors). `PERMISSION_DENIED` must not be
- // used if the caller can not be identified (use `UNAUTHENTICATED`
- // instead for those errors). This error code does not imply the
- // request is valid or the requested entity exists or satisfies
- // other pre-conditions.
- //
- // HTTP Mapping: 403 Forbidden
- Code_PERMISSION_DENIED Code = 7
- // The request does not have valid authentication credentials for the
- // operation.
- //
- // HTTP Mapping: 401 Unauthorized
- Code_UNAUTHENTICATED Code = 16
- // Some resource has been exhausted, perhaps a per-user quota, or
- // perhaps the entire file system is out of space.
- //
- // HTTP Mapping: 429 Too Many Requests
- Code_RESOURCE_EXHAUSTED Code = 8
- // The operation was rejected because the system is not in a state
- // required for the operation's execution. For example, the directory
- // to be deleted is non-empty, an rmdir operation is applied to
- // a non-directory, etc.
- //
- // Service implementors can use the following guidelines to decide
- // between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:
- // (a) Use `UNAVAILABLE` if the client can retry just the failing call.
- // (b) Use `ABORTED` if the client should retry at a higher level
- // (e.g., when a client-specified test-and-set fails, indicating the
- // client should restart a read-modify-write sequence).
- // (c) Use `FAILED_PRECONDITION` if the client should not retry until
- // the system state has been explicitly fixed. E.g., if an "rmdir"
- // fails because the directory is non-empty, `FAILED_PRECONDITION`
- // should be returned since the client should not retry unless
- // the files are deleted from the directory.
- //
- // HTTP Mapping: 400 Bad Request
- Code_FAILED_PRECONDITION Code = 9
- // The operation was aborted, typically due to a concurrency issue such as
- // a sequencer check failure or transaction abort.
- //
- // See the guidelines above for deciding between `FAILED_PRECONDITION`,
- // `ABORTED`, and `UNAVAILABLE`.
- //
- // HTTP Mapping: 409 Conflict
- Code_ABORTED Code = 10
- // The operation was attempted past the valid range. E.g., seeking or
- // reading past end-of-file.
- //
- // Unlike `INVALID_ARGUMENT`, this error indicates a problem that may
- // be fixed if the system state changes. For example, a 32-bit file
- // system will generate `INVALID_ARGUMENT` if asked to read at an
- // offset that is not in the range [0,2^32-1], but it will generate
- // `OUT_OF_RANGE` if asked to read from an offset past the current
- // file size.
- //
- // There is a fair bit of overlap between `FAILED_PRECONDITION` and
- // `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific
- // error) when it applies so that callers who are iterating through
- // a space can easily look for an `OUT_OF_RANGE` error to detect when
- // they are done.
- //
- // HTTP Mapping: 400 Bad Request
- Code_OUT_OF_RANGE Code = 11
- // The operation is not implemented or is not supported/enabled in this
- // service.
- //
- // HTTP Mapping: 501 Not Implemented
- Code_UNIMPLEMENTED Code = 12
- // Internal errors. This means that some invariants expected by the
- // underlying system have been broken. This error code is reserved
- // for serious errors.
- //
- // HTTP Mapping: 500 Internal Server Error
- Code_INTERNAL Code = 13
- // The service is currently unavailable. This is most likely a
- // transient condition, which can be corrected by retrying with
- // a backoff. Note that it is not always safe to retry
- // non-idempotent operations.
- //
- // See the guidelines above for deciding between `FAILED_PRECONDITION`,
- // `ABORTED`, and `UNAVAILABLE`.
- //
- // HTTP Mapping: 503 Service Unavailable
- Code_UNAVAILABLE Code = 14
- // Unrecoverable data loss or corruption.
- //
- // HTTP Mapping: 500 Internal Server Error
- Code_DATA_LOSS Code = 15
-)
-
-// Enum value maps for Code.
-var (
- Code_name = map[int32]string{
- 0: "OK",
- 1: "CANCELLED",
- 2: "UNKNOWN",
- 3: "INVALID_ARGUMENT",
- 4: "DEADLINE_EXCEEDED",
- 5: "NOT_FOUND",
- 6: "ALREADY_EXISTS",
- 7: "PERMISSION_DENIED",
- 16: "UNAUTHENTICATED",
- 8: "RESOURCE_EXHAUSTED",
- 9: "FAILED_PRECONDITION",
- 10: "ABORTED",
- 11: "OUT_OF_RANGE",
- 12: "UNIMPLEMENTED",
- 13: "INTERNAL",
- 14: "UNAVAILABLE",
- 15: "DATA_LOSS",
- }
- Code_value = map[string]int32{
- "OK": 0,
- "CANCELLED": 1,
- "UNKNOWN": 2,
- "INVALID_ARGUMENT": 3,
- "DEADLINE_EXCEEDED": 4,
- "NOT_FOUND": 5,
- "ALREADY_EXISTS": 6,
- "PERMISSION_DENIED": 7,
- "UNAUTHENTICATED": 16,
- "RESOURCE_EXHAUSTED": 8,
- "FAILED_PRECONDITION": 9,
- "ABORTED": 10,
- "OUT_OF_RANGE": 11,
- "UNIMPLEMENTED": 12,
- "INTERNAL": 13,
- "UNAVAILABLE": 14,
- "DATA_LOSS": 15,
- }
-)
-
-func (x Code) Enum() *Code {
- p := new(Code)
- *p = x
- return p
-}
-
-func (x Code) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Code) Descriptor() protoreflect.EnumDescriptor {
- return file_google_rpc_code_proto_enumTypes[0].Descriptor()
-}
-
-func (Code) Type() protoreflect.EnumType {
- return &file_google_rpc_code_proto_enumTypes[0]
-}
-
-func (x Code) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Code.Descriptor instead.
-func (Code) EnumDescriptor() ([]byte, []int) {
- return file_google_rpc_code_proto_rawDescGZIP(), []int{0}
-}
-
-var File_google_rpc_code_proto protoreflect.FileDescriptor
-
-var file_google_rpc_code_proto_rawDesc = []byte{
- 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x64,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x72, 0x70, 0x63, 0x2a, 0xb7, 0x02, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02,
- 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45,
- 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x02,
- 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55,
- 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49,
- 0x4e, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a,
- 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e,
- 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x06,
- 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44,
- 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x41, 0x55, 0x54,
- 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x10, 0x12, 0x16, 0x0a, 0x12,
- 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x48, 0x41, 0x55, 0x53, 0x54,
- 0x45, 0x44, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x50,
- 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x0b, 0x0a,
- 0x07, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x55,
- 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d,
- 0x55, 0x4e, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x0c, 0x12,
- 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x0f, 0x0a,
- 0x0b, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0e, 0x12, 0x0d,
- 0x0a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x0f, 0x42, 0x58, 0x0a,
- 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x42,
- 0x09, 0x43, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
- 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
- 0x70, 0x69, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x3b, 0x63, 0x6f, 0x64,
- 0x65, 0xa2, 0x02, 0x03, 0x52, 0x50, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_rpc_code_proto_rawDescOnce sync.Once
- file_google_rpc_code_proto_rawDescData = file_google_rpc_code_proto_rawDesc
-)
-
-func file_google_rpc_code_proto_rawDescGZIP() []byte {
- file_google_rpc_code_proto_rawDescOnce.Do(func() {
- file_google_rpc_code_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_rpc_code_proto_rawDescData)
- })
- return file_google_rpc_code_proto_rawDescData
-}
-
-var file_google_rpc_code_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_google_rpc_code_proto_goTypes = []interface{}{
- (Code)(0), // 0: google.rpc.Code
-}
-var file_google_rpc_code_proto_depIdxs = []int32{
- 0, // [0:0] is the sub-list for method output_type
- 0, // [0:0] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_rpc_code_proto_init() }
-func file_google_rpc_code_proto_init() {
- if File_google_rpc_code_proto != nil {
- return
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_rpc_code_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 0,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_google_rpc_code_proto_goTypes,
- DependencyIndexes: file_google_rpc_code_proto_depIdxs,
- EnumInfos: file_google_rpc_code_proto_enumTypes,
- }.Build()
- File_google_rpc_code_proto = out.File
- file_google_rpc_code_proto_rawDesc = nil
- file_google_rpc_code_proto_goTypes = nil
- file_google_rpc_code_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/rpc/status.pb.go b/gen/proto/google/rpc/status.pb.go
deleted file mode 100644
index ed6a3b1..0000000
--- a/gen/proto/google/rpc/status.pb.go
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/rpc/status.proto
-
-package status
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- anypb "google.golang.org/protobuf/types/known/anypb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// The `Status` type defines a logical error model that is suitable for
-// different programming environments, including REST APIs and RPC APIs. It is
-// used by [gRPC](https://github.com/grpc). Each `Status` message contains
-// three pieces of data: error code, error message, and error details.
-//
-// You can find out more about this error model and how to work with it in the
-// [API Design Guide](https://cloud.google.com/apis/design/errors).
-type Status struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
- Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
- // A developer-facing error message, which should be in English. Any
- // user-facing error message should be localized and sent in the
- // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
- Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
- // A list of messages that carry the error details. There is a common set of
- // message types for APIs to use.
- Details []*anypb.Any `protobuf:"bytes,3,rep,name=details,proto3" json:"details,omitempty"`
-}
-
-func (x *Status) Reset() {
- *x = Status{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_rpc_status_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Status) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Status) ProtoMessage() {}
-
-func (x *Status) ProtoReflect() protoreflect.Message {
- mi := &file_google_rpc_status_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Status.ProtoReflect.Descriptor instead.
-func (*Status) Descriptor() ([]byte, []int) {
- return file_google_rpc_status_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Status) GetCode() int32 {
- if x != nil {
- return x.Code
- }
- return 0
-}
-
-func (x *Status) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-func (x *Status) GetDetails() []*anypb.Any {
- if x != nil {
- return x.Details
- }
- return nil
-}
-
-var File_google_rpc_status_proto protoreflect.FileDescriptor
-
-var file_google_rpc_status_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x72, 0x70, 0x63, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x22, 0x66, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
- 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18,
- 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52,
- 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x61, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x42, 0x0b, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
- 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x52, 0x50, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_rpc_status_proto_rawDescOnce sync.Once
- file_google_rpc_status_proto_rawDescData = file_google_rpc_status_proto_rawDesc
-)
-
-func file_google_rpc_status_proto_rawDescGZIP() []byte {
- file_google_rpc_status_proto_rawDescOnce.Do(func() {
- file_google_rpc_status_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_rpc_status_proto_rawDescData)
- })
- return file_google_rpc_status_proto_rawDescData
-}
-
-var file_google_rpc_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_rpc_status_proto_goTypes = []interface{}{
- (*Status)(nil), // 0: google.rpc.Status
- (*anypb.Any)(nil), // 1: google.protobuf.Any
-}
-var file_google_rpc_status_proto_depIdxs = []int32{
- 1, // 0: google.rpc.Status.details:type_name -> google.protobuf.Any
- 1, // [1:1] is the sub-list for method output_type
- 1, // [1:1] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_google_rpc_status_proto_init() }
-func file_google_rpc_status_proto_init() {
- if File_google_rpc_status_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_google_rpc_status_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Status); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_rpc_status_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_google_rpc_status_proto_goTypes,
- DependencyIndexes: file_google_rpc_status_proto_depIdxs,
- MessageInfos: file_google_rpc_status_proto_msgTypes,
- }.Build()
- File_google_rpc_status_proto = out.File
- file_google_rpc_status_proto_rawDesc = nil
- file_google_rpc_status_proto_goTypes = nil
- file_google_rpc_status_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/security/meshca/v1/meshca.pb.go b/gen/proto/google/security/meshca/v1/meshca.pb.go
deleted file mode 100644
index 601b867..0000000
--- a/gen/proto/google/security/meshca/v1/meshca.pb.go
+++ /dev/null
@@ -1,273 +0,0 @@
-// Copyright 2019 Istio Authors. All Rights Reserved.
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/security/meshca/v1/meshca.proto
-
-package google_ca
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Certificate request message.
-type MeshCertificateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The request WorkloadID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
- // PEM-encoded certificate request.
- Csr string `protobuf:"bytes,2,opt,name=csr,proto3" json:"csr,omitempty"`
- // Optional: requested certificate validity period.
- Validity *durationpb.Duration `protobuf:"bytes,3,opt,name=validity,proto3" json:"validity,omitempty"` // Reserved 4
-}
-
-func (x *MeshCertificateRequest) Reset() {
- *x = MeshCertificateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_security_meshca_v1_meshca_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MeshCertificateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MeshCertificateRequest) ProtoMessage() {}
-
-func (x *MeshCertificateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_google_security_meshca_v1_meshca_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MeshCertificateRequest.ProtoReflect.Descriptor instead.
-func (*MeshCertificateRequest) Descriptor() ([]byte, []int) {
- return file_google_security_meshca_v1_meshca_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *MeshCertificateRequest) GetRequestId() string {
- if x != nil {
- return x.RequestId
- }
- return ""
-}
-
-func (x *MeshCertificateRequest) GetCsr() string {
- if x != nil {
- return x.Csr
- }
- return ""
-}
-
-func (x *MeshCertificateRequest) GetValidity() *durationpb.Duration {
- if x != nil {
- return x.Validity
- }
- return nil
-}
-
-// Certificate response message.
-type MeshCertificateResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // PEM-encoded certificate chain.
- // Leaf cert is element '0'. Root cert is element 'n'.
- CertChain []string `protobuf:"bytes,1,rep,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"`
-}
-
-func (x *MeshCertificateResponse) Reset() {
- *x = MeshCertificateResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_security_meshca_v1_meshca_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MeshCertificateResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MeshCertificateResponse) ProtoMessage() {}
-
-func (x *MeshCertificateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_google_security_meshca_v1_meshca_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MeshCertificateResponse.ProtoReflect.Descriptor instead.
-func (*MeshCertificateResponse) Descriptor() ([]byte, []int) {
- return file_google_security_meshca_v1_meshca_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *MeshCertificateResponse) GetCertChain() []string {
- if x != nil {
- return x.CertChain
- }
- return nil
-}
-
-var File_google_security_meshca_v1_meshca_proto protoreflect.FileDescriptor
-
-var file_google_security_meshca_v1_meshca_proto_rawDesc = []byte{
- 0x0a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x68,
- 0x63, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61,
- 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x22, 0x80, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d,
- 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a,
- 0x03, 0x63, 0x73, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x73, 0x72, 0x12,
- 0x35, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x61,
- 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0x38, 0x0a, 0x17, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e,
- 0x32, 0x96, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7c, 0x0a, 0x11, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73,
- 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e,
- 0x4d, 0x65, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x5a, 0x0a, 0x1d, 0x63, 0x6f, 0x6d,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x65, 0x73, 0x68,
- 0x43, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75,
- 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72,
- 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_security_meshca_v1_meshca_proto_rawDescOnce sync.Once
- file_google_security_meshca_v1_meshca_proto_rawDescData = file_google_security_meshca_v1_meshca_proto_rawDesc
-)
-
-func file_google_security_meshca_v1_meshca_proto_rawDescGZIP() []byte {
- file_google_security_meshca_v1_meshca_proto_rawDescOnce.Do(func() {
- file_google_security_meshca_v1_meshca_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_security_meshca_v1_meshca_proto_rawDescData)
- })
- return file_google_security_meshca_v1_meshca_proto_rawDescData
-}
-
-var file_google_security_meshca_v1_meshca_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_google_security_meshca_v1_meshca_proto_goTypes = []interface{}{
- (*MeshCertificateRequest)(nil), // 0: google.security.meshca.v1.MeshCertificateRequest
- (*MeshCertificateResponse)(nil), // 1: google.security.meshca.v1.MeshCertificateResponse
- (*durationpb.Duration)(nil), // 2: google.protobuf.Duration
-}
-var file_google_security_meshca_v1_meshca_proto_depIdxs = []int32{
- 2, // 0: google.security.meshca.v1.MeshCertificateRequest.validity:type_name -> google.protobuf.Duration
- 0, // 1: google.security.meshca.v1.MeshCertificateService.CreateCertificate:input_type -> google.security.meshca.v1.MeshCertificateRequest
- 1, // 2: google.security.meshca.v1.MeshCertificateService.CreateCertificate:output_type -> google.security.meshca.v1.MeshCertificateResponse
- 2, // [2:3] is the sub-list for method output_type
- 1, // [1:2] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_google_security_meshca_v1_meshca_proto_init() }
-func file_google_security_meshca_v1_meshca_proto_init() {
- if File_google_security_meshca_v1_meshca_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_google_security_meshca_v1_meshca_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MeshCertificateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_google_security_meshca_v1_meshca_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MeshCertificateResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_security_meshca_v1_meshca_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 2,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_google_security_meshca_v1_meshca_proto_goTypes,
- DependencyIndexes: file_google_security_meshca_v1_meshca_proto_depIdxs,
- MessageInfos: file_google_security_meshca_v1_meshca_proto_msgTypes,
- }.Build()
- File_google_security_meshca_v1_meshca_proto = out.File
- file_google_security_meshca_v1_meshca_proto_rawDesc = nil
- file_google_security_meshca_v1_meshca_proto_goTypes = nil
- file_google_security_meshca_v1_meshca_proto_depIdxs = nil
-}
diff --git a/gen/proto/google/type/expr.pb.go b/gen/proto/google/type/expr.pb.go
deleted file mode 100644
index 32084e1..0000000
--- a/gen/proto/google/type/expr.pb.go
+++ /dev/null
@@ -1,231 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: google/type/expr.proto
-
-package expr
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Represents a textual expression in the Common Expression Language (CEL)
-// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
-// are documented at https://github.com/google/cel-spec.
-//
-// Example (Comparison):
-//
-// title: "Summary size limit"
-// description: "Determines if a summary is less than 100 chars"
-// expression: "document.summary.size() < 100"
-//
-// Example (Equality):
-//
-// title: "Requestor is owner"
-// description: "Determines if requestor is the document owner"
-// expression: "document.owner == request.auth.claims.email"
-//
-// Example (Logic):
-//
-// title: "Public documents"
-// description: "Determine whether the document should be publicly visible"
-// expression: "document.type != 'private' && document.type != 'internal'"
-//
-// Example (Data Manipulation):
-//
-// title: "Notification string"
-// description: "Create a notification string with a timestamp."
-// expression: "'New message received at ' + string(document.create_time)"
-//
-// The exact variables and functions that may be referenced within an expression
-// are determined by the service that evaluates it. See the service
-// documentation for additional information.
-type Expr struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Textual representation of an expression in Common Expression Language
- // syntax.
- Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
- // Optional. Title for the expression, i.e. a short string describing
- // its purpose. This can be used e.g. in UIs which allow to enter the
- // expression.
- Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
- // Optional. Description of the expression. This is a longer text which
- // describes the expression, e.g. when hovered over it in a UI.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // Optional. String indicating the location of the expression for error
- // reporting, e.g. a file name and a position in the file.
- Location string `protobuf:"bytes,4,opt,name=location,proto3" json:"location,omitempty"`
-}
-
-func (x *Expr) Reset() {
- *x = Expr{}
- if protoimpl.UnsafeEnabled {
- mi := &file_google_type_expr_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Expr) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Expr) ProtoMessage() {}
-
-func (x *Expr) ProtoReflect() protoreflect.Message {
- mi := &file_google_type_expr_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Expr.ProtoReflect.Descriptor instead.
-func (*Expr) Descriptor() ([]byte, []int) {
- return file_google_type_expr_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Expr) GetExpression() string {
- if x != nil {
- return x.Expression
- }
- return ""
-}
-
-func (x *Expr) GetTitle() string {
- if x != nil {
- return x.Title
- }
- return ""
-}
-
-func (x *Expr) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Expr) GetLocation() string {
- if x != nil {
- return x.Location
- }
- return ""
-}
-
-var File_google_type_expr_proto protoreflect.FileDescriptor
-
-var file_google_type_expr_proto_rawDesc = []byte{
- 0x0a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x65, 0x78,
- 0x70, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x74, 0x79, 0x70, 0x65, 0x22, 0x7a, 0x0a, 0x04, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1e, 0x0a,
- 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a,
- 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69,
- 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x42, 0x5a, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x45, 0x78, 0x70, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
- 0x01, 0x5a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
- 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x65, 0x78,
- 0x70, 0x72, 0x3b, 0x65, 0x78, 0x70, 0x72, 0xa2, 0x02, 0x03, 0x47, 0x54, 0x50, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_google_type_expr_proto_rawDescOnce sync.Once
- file_google_type_expr_proto_rawDescData = file_google_type_expr_proto_rawDesc
-)
-
-func file_google_type_expr_proto_rawDescGZIP() []byte {
- file_google_type_expr_proto_rawDescOnce.Do(func() {
- file_google_type_expr_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_type_expr_proto_rawDescData)
- })
- return file_google_type_expr_proto_rawDescData
-}
-
-var file_google_type_expr_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_type_expr_proto_goTypes = []interface{}{
- (*Expr)(nil), // 0: google.type.Expr
-}
-var file_google_type_expr_proto_depIdxs = []int32{
- 0, // [0:0] is the sub-list for method output_type
- 0, // [0:0] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_type_expr_proto_init() }
-func file_google_type_expr_proto_init() {
- if File_google_type_expr_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_google_type_expr_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Expr); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_google_type_expr_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_google_type_expr_proto_goTypes,
- DependencyIndexes: file_google_type_expr_proto_depIdxs,
- MessageInfos: file_google_type_expr_proto_msgTypes,
- }.Build()
- File_google_type_expr_proto = out.File
- file_google_type_expr_proto_rawDesc = nil
- file_google_type_expr_proto_goTypes = nil
- file_google_type_expr_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/binlog/v1/binarylog.pb.go b/gen/proto/grpc/binlog/v1/binarylog.pb.go
deleted file mode 100644
index 810e2a4..0000000
--- a/gen/proto/grpc/binlog/v1/binarylog.pb.go
+++ /dev/null
@@ -1,1182 +0,0 @@
-// Copyright 2018 The gRPC Authors
-// All rights reserved.
-//
-// 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/binlog/v1/binarylog.proto
-
-package grpc_binarylog_v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Enumerates the type of event
-// Note the terminology is different from the RPC semantics
-// definition, but the same meaning is expressed here.
-type GrpcLogEntry_EventType int32
-
-const (
- GrpcLogEntry_EVENT_TYPE_UNKNOWN GrpcLogEntry_EventType = 0
- // Header sent from client to server
- GrpcLogEntry_EVENT_TYPE_CLIENT_HEADER GrpcLogEntry_EventType = 1
- // Header sent from server to client
- GrpcLogEntry_EVENT_TYPE_SERVER_HEADER GrpcLogEntry_EventType = 2
- // Message sent from client to server
- GrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE GrpcLogEntry_EventType = 3
- // Message sent from server to client
- GrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE GrpcLogEntry_EventType = 4
- // A signal that client is done sending
- GrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE GrpcLogEntry_EventType = 5
- // Trailer indicates the end of the RPC.
- // On client side, this event means a trailer was either received
- // from the network or the gRPC library locally generated a status
- // to inform the application about a failure.
- // On server side, this event means the server application requested
- // to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after
- // this due to races on server side.
- GrpcLogEntry_EVENT_TYPE_SERVER_TRAILER GrpcLogEntry_EventType = 6
- // A signal that the RPC is cancelled. On client side, this
- // indicates the client application requests a cancellation.
- // On server side, this indicates that cancellation was detected.
- // Note: This marks the end of the RPC. Events may arrive after
- // this due to races. For example, on client side a trailer
- // may arrive even though the application requested to cancel the RPC.
- GrpcLogEntry_EVENT_TYPE_CANCEL GrpcLogEntry_EventType = 7
-)
-
-// Enum value maps for GrpcLogEntry_EventType.
-var (
- GrpcLogEntry_EventType_name = map[int32]string{
- 0: "EVENT_TYPE_UNKNOWN",
- 1: "EVENT_TYPE_CLIENT_HEADER",
- 2: "EVENT_TYPE_SERVER_HEADER",
- 3: "EVENT_TYPE_CLIENT_MESSAGE",
- 4: "EVENT_TYPE_SERVER_MESSAGE",
- 5: "EVENT_TYPE_CLIENT_HALF_CLOSE",
- 6: "EVENT_TYPE_SERVER_TRAILER",
- 7: "EVENT_TYPE_CANCEL",
- }
- GrpcLogEntry_EventType_value = map[string]int32{
- "EVENT_TYPE_UNKNOWN": 0,
- "EVENT_TYPE_CLIENT_HEADER": 1,
- "EVENT_TYPE_SERVER_HEADER": 2,
- "EVENT_TYPE_CLIENT_MESSAGE": 3,
- "EVENT_TYPE_SERVER_MESSAGE": 4,
- "EVENT_TYPE_CLIENT_HALF_CLOSE": 5,
- "EVENT_TYPE_SERVER_TRAILER": 6,
- "EVENT_TYPE_CANCEL": 7,
- }
-)
-
-func (x GrpcLogEntry_EventType) Enum() *GrpcLogEntry_EventType {
- p := new(GrpcLogEntry_EventType)
- *p = x
- return p
-}
-
-func (x GrpcLogEntry_EventType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (GrpcLogEntry_EventType) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_binlog_v1_binarylog_proto_enumTypes[0].Descriptor()
-}
-
-func (GrpcLogEntry_EventType) Type() protoreflect.EnumType {
- return &file_grpc_binlog_v1_binarylog_proto_enumTypes[0]
-}
-
-func (x GrpcLogEntry_EventType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use GrpcLogEntry_EventType.Descriptor instead.
-func (GrpcLogEntry_EventType) EnumDescriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// Enumerates the entity that generates the log entry
-type GrpcLogEntry_Logger int32
-
-const (
- GrpcLogEntry_LOGGER_UNKNOWN GrpcLogEntry_Logger = 0
- GrpcLogEntry_LOGGER_CLIENT GrpcLogEntry_Logger = 1
- GrpcLogEntry_LOGGER_SERVER GrpcLogEntry_Logger = 2
-)
-
-// Enum value maps for GrpcLogEntry_Logger.
-var (
- GrpcLogEntry_Logger_name = map[int32]string{
- 0: "LOGGER_UNKNOWN",
- 1: "LOGGER_CLIENT",
- 2: "LOGGER_SERVER",
- }
- GrpcLogEntry_Logger_value = map[string]int32{
- "LOGGER_UNKNOWN": 0,
- "LOGGER_CLIENT": 1,
- "LOGGER_SERVER": 2,
- }
-)
-
-func (x GrpcLogEntry_Logger) Enum() *GrpcLogEntry_Logger {
- p := new(GrpcLogEntry_Logger)
- *p = x
- return p
-}
-
-func (x GrpcLogEntry_Logger) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (GrpcLogEntry_Logger) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_binlog_v1_binarylog_proto_enumTypes[1].Descriptor()
-}
-
-func (GrpcLogEntry_Logger) Type() protoreflect.EnumType {
- return &file_grpc_binlog_v1_binarylog_proto_enumTypes[1]
-}
-
-func (x GrpcLogEntry_Logger) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use GrpcLogEntry_Logger.Descriptor instead.
-func (GrpcLogEntry_Logger) EnumDescriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 1}
-}
-
-type Address_Type int32
-
-const (
- Address_TYPE_UNKNOWN Address_Type = 0
- // address is in 1.2.3.4 form
- Address_TYPE_IPV4 Address_Type = 1
- // address is in IPv6 canonical form (RFC5952 section 4)
- // The scope is NOT included in the address string.
- Address_TYPE_IPV6 Address_Type = 2
- // address is UDS string
- Address_TYPE_UNIX Address_Type = 3
-)
-
-// Enum value maps for Address_Type.
-var (
- Address_Type_name = map[int32]string{
- 0: "TYPE_UNKNOWN",
- 1: "TYPE_IPV4",
- 2: "TYPE_IPV6",
- 3: "TYPE_UNIX",
- }
- Address_Type_value = map[string]int32{
- "TYPE_UNKNOWN": 0,
- "TYPE_IPV4": 1,
- "TYPE_IPV6": 2,
- "TYPE_UNIX": 3,
- }
-)
-
-func (x Address_Type) Enum() *Address_Type {
- p := new(Address_Type)
- *p = x
- return p
-}
-
-func (x Address_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Address_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_binlog_v1_binarylog_proto_enumTypes[2].Descriptor()
-}
-
-func (Address_Type) Type() protoreflect.EnumType {
- return &file_grpc_binlog_v1_binarylog_proto_enumTypes[2]
-}
-
-func (x Address_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Address_Type.Descriptor instead.
-func (Address_Type) EnumDescriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7, 0}
-}
-
-// Log entry we store in binary logs
-type GrpcLogEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The timestamp of the binary log message
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- // Uniquely identifies a call. The value must not be 0 in order to disambiguate
- // from an unset value.
- // Each call may have several log entries, they will all have the same call_id.
- // Nothing is guaranteed about their value other than they are unique across
- // different RPCs in the same gRPC process.
- CallId uint64 `protobuf:"varint,2,opt,name=call_id,json=callId,proto3" json:"call_id,omitempty"`
- // The entry sequence id for this call. The first GrpcLogEntry has a
- // value of 1, to disambiguate from an unset value. The purpose of
- // this field is to detect missing entries in environments where
- // durability or ordering is not guaranteed.
- SequenceIdWithinCall uint64 `protobuf:"varint,3,opt,name=sequence_id_within_call,json=sequenceIdWithinCall,proto3" json:"sequence_id_within_call,omitempty"`
- Type GrpcLogEntry_EventType `protobuf:"varint,4,opt,name=type,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_EventType" json:"type,omitempty"`
- Logger GrpcLogEntry_Logger `protobuf:"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger" json:"logger,omitempty"` // One of the above Logger enum
- // The logger uses one of the following fields to record the payload,
- // according to the type of the log entry.
- //
- // Types that are assignable to Payload:
- // *GrpcLogEntry_ClientHeader
- // *GrpcLogEntry_ServerHeader
- // *GrpcLogEntry_Message
- // *GrpcLogEntry_Trailer
- Payload isGrpcLogEntry_Payload `protobuf_oneof:"payload"`
- // true if payload does not represent the full message or metadata.
- PayloadTruncated bool `protobuf:"varint,10,opt,name=payload_truncated,json=payloadTruncated,proto3" json:"payload_truncated,omitempty"`
- // Peer address information, will only be recorded on the first
- // incoming event. On client side, peer is logged on
- // EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
- // the case of trailers-only. On server side, peer is always
- // logged on EVENT_TYPE_CLIENT_HEADER.
- Peer *Address `protobuf:"bytes,11,opt,name=peer,proto3" json:"peer,omitempty"`
-}
-
-func (x *GrpcLogEntry) Reset() {
- *x = GrpcLogEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GrpcLogEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GrpcLogEntry) ProtoMessage() {}
-
-func (x *GrpcLogEntry) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GrpcLogEntry.ProtoReflect.Descriptor instead.
-func (*GrpcLogEntry) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *GrpcLogEntry) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
- }
- return nil
-}
-
-func (x *GrpcLogEntry) GetCallId() uint64 {
- if x != nil {
- return x.CallId
- }
- return 0
-}
-
-func (x *GrpcLogEntry) GetSequenceIdWithinCall() uint64 {
- if x != nil {
- return x.SequenceIdWithinCall
- }
- return 0
-}
-
-func (x *GrpcLogEntry) GetType() GrpcLogEntry_EventType {
- if x != nil {
- return x.Type
- }
- return GrpcLogEntry_EVENT_TYPE_UNKNOWN
-}
-
-func (x *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger {
- if x != nil {
- return x.Logger
- }
- return GrpcLogEntry_LOGGER_UNKNOWN
-}
-
-func (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload {
- if m != nil {
- return m.Payload
- }
- return nil
-}
-
-func (x *GrpcLogEntry) GetClientHeader() *ClientHeader {
- if x, ok := x.GetPayload().(*GrpcLogEntry_ClientHeader); ok {
- return x.ClientHeader
- }
- return nil
-}
-
-func (x *GrpcLogEntry) GetServerHeader() *ServerHeader {
- if x, ok := x.GetPayload().(*GrpcLogEntry_ServerHeader); ok {
- return x.ServerHeader
- }
- return nil
-}
-
-func (x *GrpcLogEntry) GetMessage() *Message {
- if x, ok := x.GetPayload().(*GrpcLogEntry_Message); ok {
- return x.Message
- }
- return nil
-}
-
-func (x *GrpcLogEntry) GetTrailer() *Trailer {
- if x, ok := x.GetPayload().(*GrpcLogEntry_Trailer); ok {
- return x.Trailer
- }
- return nil
-}
-
-func (x *GrpcLogEntry) GetPayloadTruncated() bool {
- if x != nil {
- return x.PayloadTruncated
- }
- return false
-}
-
-func (x *GrpcLogEntry) GetPeer() *Address {
- if x != nil {
- return x.Peer
- }
- return nil
-}
-
-type isGrpcLogEntry_Payload interface {
- isGrpcLogEntry_Payload()
-}
-
-type GrpcLogEntry_ClientHeader struct {
- ClientHeader *ClientHeader `protobuf:"bytes,6,opt,name=client_header,json=clientHeader,proto3,oneof"`
-}
-
-type GrpcLogEntry_ServerHeader struct {
- ServerHeader *ServerHeader `protobuf:"bytes,7,opt,name=server_header,json=serverHeader,proto3,oneof"`
-}
-
-type GrpcLogEntry_Message struct {
- // Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
- Message *Message `protobuf:"bytes,8,opt,name=message,proto3,oneof"`
-}
-
-type GrpcLogEntry_Trailer struct {
- Trailer *Trailer `protobuf:"bytes,9,opt,name=trailer,proto3,oneof"`
-}
-
-func (*GrpcLogEntry_ClientHeader) isGrpcLogEntry_Payload() {}
-
-func (*GrpcLogEntry_ServerHeader) isGrpcLogEntry_Payload() {}
-
-func (*GrpcLogEntry_Message) isGrpcLogEntry_Payload() {}
-
-func (*GrpcLogEntry_Trailer) isGrpcLogEntry_Payload() {}
-
-type ClientHeader struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This contains only the metadata from the application.
- Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // The name of the RPC method, which looks something like:
- // //
- // Note the leading "/" character.
- MethodName string `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"`
- // A single process may be used to run multiple virtual
- // servers with different identities.
- // The authority is the name of such a server identitiy.
- // It is typically a portion of the URI in the form of
- // or : .
- Authority string `protobuf:"bytes,3,opt,name=authority,proto3" json:"authority,omitempty"`
- // the RPC timeout
- Timeout *durationpb.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
-}
-
-func (x *ClientHeader) Reset() {
- *x = ClientHeader{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientHeader) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientHeader) ProtoMessage() {}
-
-func (x *ClientHeader) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientHeader.ProtoReflect.Descriptor instead.
-func (*ClientHeader) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ClientHeader) GetMetadata() *Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *ClientHeader) GetMethodName() string {
- if x != nil {
- return x.MethodName
- }
- return ""
-}
-
-func (x *ClientHeader) GetAuthority() string {
- if x != nil {
- return x.Authority
- }
- return ""
-}
-
-func (x *ClientHeader) GetTimeout() *durationpb.Duration {
- if x != nil {
- return x.Timeout
- }
- return nil
-}
-
-type ServerHeader struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This contains only the metadata from the application.
- Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-}
-
-func (x *ServerHeader) Reset() {
- *x = ServerHeader{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerHeader) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerHeader) ProtoMessage() {}
-
-func (x *ServerHeader) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerHeader.ProtoReflect.Descriptor instead.
-func (*ServerHeader) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ServerHeader) GetMetadata() *Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-type Trailer struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This contains only the metadata from the application.
- Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // The gRPC status code.
- StatusCode uint32 `protobuf:"varint,2,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"`
- // An original status message before any transport specific
- // encoding.
- StatusMessage string `protobuf:"bytes,3,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"`
- // The value of the 'grpc-status-details-bin' metadata key. If
- // present, this is always an encoded 'google.rpc.Status' message.
- StatusDetails []byte `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"`
-}
-
-func (x *Trailer) Reset() {
- *x = Trailer{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Trailer) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Trailer) ProtoMessage() {}
-
-func (x *Trailer) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Trailer.ProtoReflect.Descriptor instead.
-func (*Trailer) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Trailer) GetMetadata() *Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *Trailer) GetStatusCode() uint32 {
- if x != nil {
- return x.StatusCode
- }
- return 0
-}
-
-func (x *Trailer) GetStatusMessage() string {
- if x != nil {
- return x.StatusMessage
- }
- return ""
-}
-
-func (x *Trailer) GetStatusDetails() []byte {
- if x != nil {
- return x.StatusDetails
- }
- return nil
-}
-
-// Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE
-type Message struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Length of the message. It may not be the same as the length of the
- // data field, as the logging payload can be truncated or omitted.
- Length uint32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"`
- // May be truncated or omitted.
- Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *Message) Reset() {
- *x = Message{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Message) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message) GetLength() uint32 {
- if x != nil {
- return x.Length
- }
- return 0
-}
-
-func (x *Message) GetData() []byte {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-// A list of metadata pairs, used in the payload of client header,
-// server header, and server trailer.
-// Implementations may omit some entries to honor the header limits
-// of GRPC_BINARY_LOG_CONFIG.
-//
-// Header keys added by gRPC are omitted. To be more specific,
-// implementations will not log the following entries, and this is
-// not to be treated as a truncation:
-// - entries handled by grpc that are not user visible, such as those
-// that begin with 'grpc-' (with exception of grpc-trace-bin)
-// or keys like 'lb-token'
-// - transport specific entries, including but not limited to:
-// ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc
-// - entries added for call credentials
-//
-// Implementations must always log grpc-trace-bin if it is present.
-// Practically speaking it will only be visible on server side because
-// grpc-trace-bin is managed by low level client side mechanisms
-// inaccessible from the application level. On server side, the
-// header is just a normal metadata key.
-// The pair will not count towards the size limit.
-type Metadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Entry []*MetadataEntry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
-}
-
-func (x *Metadata) Reset() {
- *x = Metadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Metadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Metadata) ProtoMessage() {}
-
-func (x *Metadata) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Metadata.ProtoReflect.Descriptor instead.
-func (*Metadata) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Metadata) GetEntry() []*MetadataEntry {
- if x != nil {
- return x.Entry
- }
- return nil
-}
-
-// A metadata key value pair
-type MetadataEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *MetadataEntry) Reset() {
- *x = MetadataEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MetadataEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MetadataEntry) ProtoMessage() {}
-
-func (x *MetadataEntry) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MetadataEntry.ProtoReflect.Descriptor instead.
-func (*MetadataEntry) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *MetadataEntry) GetKey() string {
- if x != nil {
- return x.Key
- }
- return ""
-}
-
-func (x *MetadataEntry) GetValue() []byte {
- if x != nil {
- return x.Value
- }
- return nil
-}
-
-// Address information
-type Address struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type Address_Type `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.binarylog.v1.Address_Type" json:"type,omitempty"`
- Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
- // only for TYPE_IPV4 and TYPE_IPV6
- IpPort uint32 `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"`
-}
-
-func (x *Address) Reset() {
- *x = Address{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Address) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Address) ProtoMessage() {}
-
-func (x *Address) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Address.ProtoReflect.Descriptor instead.
-func (*Address) Descriptor() ([]byte, []int) {
- return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Address) GetType() Address_Type {
- if x != nil {
- return x.Type
- }
- return Address_TYPE_UNKNOWN
-}
-
-func (x *Address) GetAddress() string {
- if x != nil {
- return x.Address
- }
- return ""
-}
-
-func (x *Address) GetIpPort() uint32 {
- if x != nil {
- return x.IpPort
- }
- return 0
-}
-
-var File_grpc_binlog_v1_binarylog_proto protoreflect.FileDescriptor
-
-var file_grpc_binlog_v1_binarylog_proto_rawDesc = []byte{
- 0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x2f, 0x76, 0x31,
- 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x12, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
- 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x07, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
- 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x65, 0x71, 0x75,
- 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x63,
- 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x73, 0x65, 0x71, 0x75, 0x65,
- 0x6e, 0x63, 0x65, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12,
- 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45,
- 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e,
- 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e,
- 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x46,
- 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,
- 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
- 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
- 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00,
- 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36,
- 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65,
- 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,
- 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69,
- 0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x2b,
- 0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61,
- 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x61, 0x79, 0x6c, 0x6f,
- 0x61, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70,
- 0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x22, 0xf5, 0x01, 0x0a, 0x09,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45,
- 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
- 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12,
- 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45,
- 0x52, 0x56, 0x45, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a,
- 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45,
- 0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19,
- 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45,
- 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x45,
- 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,
- 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x05, 0x12, 0x1d, 0x0a,
- 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56,
- 0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11,
- 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45,
- 0x4c, 0x10, 0x07, 0x22, 0x42, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a,
- 0x0e, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
- 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x49, 0x45,
- 0x4e, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53,
- 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
- 0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61,
- 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,
- 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b,
- 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a,
- 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74,
- 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
- 0x22, 0x47, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
- 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79,
- 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52,
- 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x54, 0x72,
- 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,
- 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f,
- 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,
- 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a,
- 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67,
- 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
- 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
- 0x64, 0x61, 0x74, 0x61, 0x22, 0x42, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x12, 0x36, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
- 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x37, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a,
- 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e,
- 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07,
- 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69,
- 0x70, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x45, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
- 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
- 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x0d,
- 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x12, 0x0d, 0x0a,
- 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x03, 0x42, 0x5c, 0x0a, 0x14,
- 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f,
- 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
- 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62,
- 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x62, 0x69,
- 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
-}
-
-var (
- file_grpc_binlog_v1_binarylog_proto_rawDescOnce sync.Once
- file_grpc_binlog_v1_binarylog_proto_rawDescData = file_grpc_binlog_v1_binarylog_proto_rawDesc
-)
-
-func file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte {
- file_grpc_binlog_v1_binarylog_proto_rawDescOnce.Do(func() {
- file_grpc_binlog_v1_binarylog_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_binlog_v1_binarylog_proto_rawDescData)
- })
- return file_grpc_binlog_v1_binarylog_proto_rawDescData
-}
-
-var file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_grpc_binlog_v1_binarylog_proto_goTypes = []interface{}{
- (GrpcLogEntry_EventType)(0), // 0: grpc.binarylog.v1.GrpcLogEntry.EventType
- (GrpcLogEntry_Logger)(0), // 1: grpc.binarylog.v1.GrpcLogEntry.Logger
- (Address_Type)(0), // 2: grpc.binarylog.v1.Address.Type
- (*GrpcLogEntry)(nil), // 3: grpc.binarylog.v1.GrpcLogEntry
- (*ClientHeader)(nil), // 4: grpc.binarylog.v1.ClientHeader
- (*ServerHeader)(nil), // 5: grpc.binarylog.v1.ServerHeader
- (*Trailer)(nil), // 6: grpc.binarylog.v1.Trailer
- (*Message)(nil), // 7: grpc.binarylog.v1.Message
- (*Metadata)(nil), // 8: grpc.binarylog.v1.Metadata
- (*MetadataEntry)(nil), // 9: grpc.binarylog.v1.MetadataEntry
- (*Address)(nil), // 10: grpc.binarylog.v1.Address
- (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp
- (*durationpb.Duration)(nil), // 12: google.protobuf.Duration
-}
-var file_grpc_binlog_v1_binarylog_proto_depIdxs = []int32{
- 11, // 0: grpc.binarylog.v1.GrpcLogEntry.timestamp:type_name -> google.protobuf.Timestamp
- 0, // 1: grpc.binarylog.v1.GrpcLogEntry.type:type_name -> grpc.binarylog.v1.GrpcLogEntry.EventType
- 1, // 2: grpc.binarylog.v1.GrpcLogEntry.logger:type_name -> grpc.binarylog.v1.GrpcLogEntry.Logger
- 4, // 3: grpc.binarylog.v1.GrpcLogEntry.client_header:type_name -> grpc.binarylog.v1.ClientHeader
- 5, // 4: grpc.binarylog.v1.GrpcLogEntry.server_header:type_name -> grpc.binarylog.v1.ServerHeader
- 7, // 5: grpc.binarylog.v1.GrpcLogEntry.message:type_name -> grpc.binarylog.v1.Message
- 6, // 6: grpc.binarylog.v1.GrpcLogEntry.trailer:type_name -> grpc.binarylog.v1.Trailer
- 10, // 7: grpc.binarylog.v1.GrpcLogEntry.peer:type_name -> grpc.binarylog.v1.Address
- 8, // 8: grpc.binarylog.v1.ClientHeader.metadata:type_name -> grpc.binarylog.v1.Metadata
- 12, // 9: grpc.binarylog.v1.ClientHeader.timeout:type_name -> google.protobuf.Duration
- 8, // 10: grpc.binarylog.v1.ServerHeader.metadata:type_name -> grpc.binarylog.v1.Metadata
- 8, // 11: grpc.binarylog.v1.Trailer.metadata:type_name -> grpc.binarylog.v1.Metadata
- 9, // 12: grpc.binarylog.v1.Metadata.entry:type_name -> grpc.binarylog.v1.MetadataEntry
- 2, // 13: grpc.binarylog.v1.Address.type:type_name -> grpc.binarylog.v1.Address.Type
- 14, // [14:14] is the sub-list for method output_type
- 14, // [14:14] is the sub-list for method input_type
- 14, // [14:14] is the sub-list for extension type_name
- 14, // [14:14] is the sub-list for extension extendee
- 0, // [0:14] is the sub-list for field type_name
-}
-
-func init() { file_grpc_binlog_v1_binarylog_proto_init() }
-func file_grpc_binlog_v1_binarylog_proto_init() {
- if File_grpc_binlog_v1_binarylog_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GrpcLogEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientHeader); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerHeader); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Trailer); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Message); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Metadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MetadataEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Address); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*GrpcLogEntry_ClientHeader)(nil),
- (*GrpcLogEntry_ServerHeader)(nil),
- (*GrpcLogEntry_Message)(nil),
- (*GrpcLogEntry_Trailer)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_binlog_v1_binarylog_proto_rawDesc,
- NumEnums: 3,
- NumMessages: 8,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_binlog_v1_binarylog_proto_goTypes,
- DependencyIndexes: file_grpc_binlog_v1_binarylog_proto_depIdxs,
- EnumInfos: file_grpc_binlog_v1_binarylog_proto_enumTypes,
- MessageInfos: file_grpc_binlog_v1_binarylog_proto_msgTypes,
- }.Build()
- File_grpc_binlog_v1_binarylog_proto = out.File
- file_grpc_binlog_v1_binarylog_proto_rawDesc = nil
- file_grpc_binlog_v1_binarylog_proto_goTypes = nil
- file_grpc_binlog_v1_binarylog_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/channelz/v1/channelz.pb.go b/gen/proto/grpc/channelz/v1/channelz.pb.go
deleted file mode 100644
index ea9c0f3..0000000
--- a/gen/proto/grpc/channelz/v1/channelz.pb.go
+++ /dev/null
@@ -1,4222 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// This file defines an interface for exporting monitoring information
-// out of gRPC servers. See the full design at
-// https://github.com/grpc/proposal/blob/master/A14-channelz.md
-//
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/channelz/v1/channelz.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/channelz/v1/channelz.proto
-
-package grpc_channelz_v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- anypb "google.golang.org/protobuf/types/known/anypb"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type ChannelConnectivityState_State int32
-
-const (
- ChannelConnectivityState_UNKNOWN ChannelConnectivityState_State = 0
- ChannelConnectivityState_IDLE ChannelConnectivityState_State = 1
- ChannelConnectivityState_CONNECTING ChannelConnectivityState_State = 2
- ChannelConnectivityState_READY ChannelConnectivityState_State = 3
- ChannelConnectivityState_TRANSIENT_FAILURE ChannelConnectivityState_State = 4
- ChannelConnectivityState_SHUTDOWN ChannelConnectivityState_State = 5
-)
-
-// Enum value maps for ChannelConnectivityState_State.
-var (
- ChannelConnectivityState_State_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "IDLE",
- 2: "CONNECTING",
- 3: "READY",
- 4: "TRANSIENT_FAILURE",
- 5: "SHUTDOWN",
- }
- ChannelConnectivityState_State_value = map[string]int32{
- "UNKNOWN": 0,
- "IDLE": 1,
- "CONNECTING": 2,
- "READY": 3,
- "TRANSIENT_FAILURE": 4,
- "SHUTDOWN": 5,
- }
-)
-
-func (x ChannelConnectivityState_State) Enum() *ChannelConnectivityState_State {
- p := new(ChannelConnectivityState_State)
- *p = x
- return p
-}
-
-func (x ChannelConnectivityState_State) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ChannelConnectivityState_State) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_channelz_v1_channelz_proto_enumTypes[0].Descriptor()
-}
-
-func (ChannelConnectivityState_State) Type() protoreflect.EnumType {
- return &file_grpc_channelz_v1_channelz_proto_enumTypes[0]
-}
-
-func (x ChannelConnectivityState_State) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ChannelConnectivityState_State.Descriptor instead.
-func (ChannelConnectivityState_State) EnumDescriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{2, 0}
-}
-
-// The supported severity levels of trace events.
-type ChannelTraceEvent_Severity int32
-
-const (
- ChannelTraceEvent_CT_UNKNOWN ChannelTraceEvent_Severity = 0
- ChannelTraceEvent_CT_INFO ChannelTraceEvent_Severity = 1
- ChannelTraceEvent_CT_WARNING ChannelTraceEvent_Severity = 2
- ChannelTraceEvent_CT_ERROR ChannelTraceEvent_Severity = 3
-)
-
-// Enum value maps for ChannelTraceEvent_Severity.
-var (
- ChannelTraceEvent_Severity_name = map[int32]string{
- 0: "CT_UNKNOWN",
- 1: "CT_INFO",
- 2: "CT_WARNING",
- 3: "CT_ERROR",
- }
- ChannelTraceEvent_Severity_value = map[string]int32{
- "CT_UNKNOWN": 0,
- "CT_INFO": 1,
- "CT_WARNING": 2,
- "CT_ERROR": 3,
- }
-)
-
-func (x ChannelTraceEvent_Severity) Enum() *ChannelTraceEvent_Severity {
- p := new(ChannelTraceEvent_Severity)
- *p = x
- return p
-}
-
-func (x ChannelTraceEvent_Severity) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ChannelTraceEvent_Severity) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_channelz_v1_channelz_proto_enumTypes[1].Descriptor()
-}
-
-func (ChannelTraceEvent_Severity) Type() protoreflect.EnumType {
- return &file_grpc_channelz_v1_channelz_proto_enumTypes[1]
-}
-
-func (x ChannelTraceEvent_Severity) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ChannelTraceEvent_Severity.Descriptor instead.
-func (ChannelTraceEvent_Severity) EnumDescriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{4, 0}
-}
-
-// Channel is a logical grouping of channels, subchannels, and sockets.
-type Channel struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The identifier for this channel. This should be set.
- Ref *ChannelRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
- // Data specific to this channel.
- Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
- // There are no ordering guarantees on the order of channel refs.
- // There may not be cycles in the ref graph.
- // A channel ref may be present in more than one channel or subchannel.
- ChannelRef []*ChannelRef `protobuf:"bytes,3,rep,name=channel_ref,json=channelRef,proto3" json:"channel_ref,omitempty"`
- // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
- // There are no ordering guarantees on the order of subchannel refs.
- // There may not be cycles in the ref graph.
- // A sub channel ref may be present in more than one channel or subchannel.
- SubchannelRef []*SubchannelRef `protobuf:"bytes,4,rep,name=subchannel_ref,json=subchannelRef,proto3" json:"subchannel_ref,omitempty"`
- // There are no ordering guarantees on the order of sockets.
- SocketRef []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
-}
-
-func (x *Channel) Reset() {
- *x = Channel{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Channel) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Channel) ProtoMessage() {}
-
-func (x *Channel) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Channel.ProtoReflect.Descriptor instead.
-func (*Channel) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Channel) GetRef() *ChannelRef {
- if x != nil {
- return x.Ref
- }
- return nil
-}
-
-func (x *Channel) GetData() *ChannelData {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-func (x *Channel) GetChannelRef() []*ChannelRef {
- if x != nil {
- return x.ChannelRef
- }
- return nil
-}
-
-func (x *Channel) GetSubchannelRef() []*SubchannelRef {
- if x != nil {
- return x.SubchannelRef
- }
- return nil
-}
-
-func (x *Channel) GetSocketRef() []*SocketRef {
- if x != nil {
- return x.SocketRef
- }
- return nil
-}
-
-// Subchannel is a logical grouping of channels, subchannels, and sockets.
-// A subchannel is load balanced over by it's ancestor
-type Subchannel struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The identifier for this channel.
- Ref *SubchannelRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
- // Data specific to this channel.
- Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
- // There are no ordering guarantees on the order of channel refs.
- // There may not be cycles in the ref graph.
- // A channel ref may be present in more than one channel or subchannel.
- ChannelRef []*ChannelRef `protobuf:"bytes,3,rep,name=channel_ref,json=channelRef,proto3" json:"channel_ref,omitempty"`
- // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
- // There are no ordering guarantees on the order of subchannel refs.
- // There may not be cycles in the ref graph.
- // A sub channel ref may be present in more than one channel or subchannel.
- SubchannelRef []*SubchannelRef `protobuf:"bytes,4,rep,name=subchannel_ref,json=subchannelRef,proto3" json:"subchannel_ref,omitempty"`
- // There are no ordering guarantees on the order of sockets.
- SocketRef []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
-}
-
-func (x *Subchannel) Reset() {
- *x = Subchannel{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Subchannel) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Subchannel) ProtoMessage() {}
-
-func (x *Subchannel) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Subchannel.ProtoReflect.Descriptor instead.
-func (*Subchannel) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Subchannel) GetRef() *SubchannelRef {
- if x != nil {
- return x.Ref
- }
- return nil
-}
-
-func (x *Subchannel) GetData() *ChannelData {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-func (x *Subchannel) GetChannelRef() []*ChannelRef {
- if x != nil {
- return x.ChannelRef
- }
- return nil
-}
-
-func (x *Subchannel) GetSubchannelRef() []*SubchannelRef {
- if x != nil {
- return x.SubchannelRef
- }
- return nil
-}
-
-func (x *Subchannel) GetSocketRef() []*SocketRef {
- if x != nil {
- return x.SocketRef
- }
- return nil
-}
-
-// These come from the specified states in this document:
-// https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md
-type ChannelConnectivityState struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- State ChannelConnectivityState_State `protobuf:"varint,1,opt,name=state,proto3,enum=grpc.channelz.v1.ChannelConnectivityState_State" json:"state,omitempty"`
-}
-
-func (x *ChannelConnectivityState) Reset() {
- *x = ChannelConnectivityState{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChannelConnectivityState) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChannelConnectivityState) ProtoMessage() {}
-
-func (x *ChannelConnectivityState) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChannelConnectivityState.ProtoReflect.Descriptor instead.
-func (*ChannelConnectivityState) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ChannelConnectivityState) GetState() ChannelConnectivityState_State {
- if x != nil {
- return x.State
- }
- return ChannelConnectivityState_UNKNOWN
-}
-
-// Channel data is data related to a specific Channel or Subchannel.
-type ChannelData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The connectivity state of the channel or subchannel. Implementations
- // should always set this.
- State *ChannelConnectivityState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
- // The target this channel originally tried to connect to. May be absent
- Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
- // A trace of recent events on the channel. May be absent.
- Trace *ChannelTrace `protobuf:"bytes,3,opt,name=trace,proto3" json:"trace,omitempty"`
- // The number of calls started on the channel
- CallsStarted int64 `protobuf:"varint,4,opt,name=calls_started,json=callsStarted,proto3" json:"calls_started,omitempty"`
- // The number of calls that have completed with an OK status
- CallsSucceeded int64 `protobuf:"varint,5,opt,name=calls_succeeded,json=callsSucceeded,proto3" json:"calls_succeeded,omitempty"`
- // The number of calls that have completed with a non-OK status
- CallsFailed int64 `protobuf:"varint,6,opt,name=calls_failed,json=callsFailed,proto3" json:"calls_failed,omitempty"`
- // The last time a call was started on the channel.
- LastCallStartedTimestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_call_started_timestamp,json=lastCallStartedTimestamp,proto3" json:"last_call_started_timestamp,omitempty"`
-}
-
-func (x *ChannelData) Reset() {
- *x = ChannelData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChannelData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChannelData) ProtoMessage() {}
-
-func (x *ChannelData) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChannelData.ProtoReflect.Descriptor instead.
-func (*ChannelData) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ChannelData) GetState() *ChannelConnectivityState {
- if x != nil {
- return x.State
- }
- return nil
-}
-
-func (x *ChannelData) GetTarget() string {
- if x != nil {
- return x.Target
- }
- return ""
-}
-
-func (x *ChannelData) GetTrace() *ChannelTrace {
- if x != nil {
- return x.Trace
- }
- return nil
-}
-
-func (x *ChannelData) GetCallsStarted() int64 {
- if x != nil {
- return x.CallsStarted
- }
- return 0
-}
-
-func (x *ChannelData) GetCallsSucceeded() int64 {
- if x != nil {
- return x.CallsSucceeded
- }
- return 0
-}
-
-func (x *ChannelData) GetCallsFailed() int64 {
- if x != nil {
- return x.CallsFailed
- }
- return 0
-}
-
-func (x *ChannelData) GetLastCallStartedTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.LastCallStartedTimestamp
- }
- return nil
-}
-
-// A trace event is an interesting thing that happened to a channel or
-// subchannel, such as creation, address resolution, subchannel creation, etc.
-type ChannelTraceEvent struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // High level description of the event.
- Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
- // the severity of the trace event
- Severity ChannelTraceEvent_Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=grpc.channelz.v1.ChannelTraceEvent_Severity" json:"severity,omitempty"`
- // When this event occurred.
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- // ref of referenced channel or subchannel.
- // Optional, only present if this event refers to a child object. For example,
- // this field would be filled if this trace event was for a subchannel being
- // created.
- //
- // Types that are assignable to ChildRef:
- // *ChannelTraceEvent_ChannelRef
- // *ChannelTraceEvent_SubchannelRef
- ChildRef isChannelTraceEvent_ChildRef `protobuf_oneof:"child_ref"`
-}
-
-func (x *ChannelTraceEvent) Reset() {
- *x = ChannelTraceEvent{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChannelTraceEvent) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChannelTraceEvent) ProtoMessage() {}
-
-func (x *ChannelTraceEvent) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChannelTraceEvent.ProtoReflect.Descriptor instead.
-func (*ChannelTraceEvent) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *ChannelTraceEvent) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *ChannelTraceEvent) GetSeverity() ChannelTraceEvent_Severity {
- if x != nil {
- return x.Severity
- }
- return ChannelTraceEvent_CT_UNKNOWN
-}
-
-func (x *ChannelTraceEvent) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
- }
- return nil
-}
-
-func (m *ChannelTraceEvent) GetChildRef() isChannelTraceEvent_ChildRef {
- if m != nil {
- return m.ChildRef
- }
- return nil
-}
-
-func (x *ChannelTraceEvent) GetChannelRef() *ChannelRef {
- if x, ok := x.GetChildRef().(*ChannelTraceEvent_ChannelRef); ok {
- return x.ChannelRef
- }
- return nil
-}
-
-func (x *ChannelTraceEvent) GetSubchannelRef() *SubchannelRef {
- if x, ok := x.GetChildRef().(*ChannelTraceEvent_SubchannelRef); ok {
- return x.SubchannelRef
- }
- return nil
-}
-
-type isChannelTraceEvent_ChildRef interface {
- isChannelTraceEvent_ChildRef()
-}
-
-type ChannelTraceEvent_ChannelRef struct {
- ChannelRef *ChannelRef `protobuf:"bytes,4,opt,name=channel_ref,json=channelRef,proto3,oneof"`
-}
-
-type ChannelTraceEvent_SubchannelRef struct {
- SubchannelRef *SubchannelRef `protobuf:"bytes,5,opt,name=subchannel_ref,json=subchannelRef,proto3,oneof"`
-}
-
-func (*ChannelTraceEvent_ChannelRef) isChannelTraceEvent_ChildRef() {}
-
-func (*ChannelTraceEvent_SubchannelRef) isChannelTraceEvent_ChildRef() {}
-
-// ChannelTrace represents the recent events that have occurred on the channel.
-type ChannelTrace struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Number of events ever logged in this tracing object. This can differ from
- // events.size() because events can be overwritten or garbage collected by
- // implementations.
- NumEventsLogged int64 `protobuf:"varint,1,opt,name=num_events_logged,json=numEventsLogged,proto3" json:"num_events_logged,omitempty"`
- // Time that this channel was created.
- CreationTimestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=creation_timestamp,json=creationTimestamp,proto3" json:"creation_timestamp,omitempty"`
- // List of events that have occurred on this channel.
- Events []*ChannelTraceEvent `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"`
-}
-
-func (x *ChannelTrace) Reset() {
- *x = ChannelTrace{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChannelTrace) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChannelTrace) ProtoMessage() {}
-
-func (x *ChannelTrace) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChannelTrace.ProtoReflect.Descriptor instead.
-func (*ChannelTrace) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *ChannelTrace) GetNumEventsLogged() int64 {
- if x != nil {
- return x.NumEventsLogged
- }
- return 0
-}
-
-func (x *ChannelTrace) GetCreationTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.CreationTimestamp
- }
- return nil
-}
-
-func (x *ChannelTrace) GetEvents() []*ChannelTraceEvent {
- if x != nil {
- return x.Events
- }
- return nil
-}
-
-// ChannelRef is a reference to a Channel.
-type ChannelRef struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The globally unique id for this channel. Must be a positive number.
- ChannelId int64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
- // An optional name associated with the channel.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *ChannelRef) Reset() {
- *x = ChannelRef{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChannelRef) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChannelRef) ProtoMessage() {}
-
-func (x *ChannelRef) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChannelRef.ProtoReflect.Descriptor instead.
-func (*ChannelRef) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *ChannelRef) GetChannelId() int64 {
- if x != nil {
- return x.ChannelId
- }
- return 0
-}
-
-func (x *ChannelRef) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// SubchannelRef is a reference to a Subchannel.
-type SubchannelRef struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The globally unique id for this subchannel. Must be a positive number.
- SubchannelId int64 `protobuf:"varint,7,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
- // An optional name associated with the subchannel.
- Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *SubchannelRef) Reset() {
- *x = SubchannelRef{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SubchannelRef) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubchannelRef) ProtoMessage() {}
-
-func (x *SubchannelRef) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SubchannelRef.ProtoReflect.Descriptor instead.
-func (*SubchannelRef) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *SubchannelRef) GetSubchannelId() int64 {
- if x != nil {
- return x.SubchannelId
- }
- return 0
-}
-
-func (x *SubchannelRef) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// SocketRef is a reference to a Socket.
-type SocketRef struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The globally unique id for this socket. Must be a positive number.
- SocketId int64 `protobuf:"varint,3,opt,name=socket_id,json=socketId,proto3" json:"socket_id,omitempty"`
- // An optional name associated with the socket.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *SocketRef) Reset() {
- *x = SocketRef{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SocketRef) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SocketRef) ProtoMessage() {}
-
-func (x *SocketRef) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SocketRef.ProtoReflect.Descriptor instead.
-func (*SocketRef) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *SocketRef) GetSocketId() int64 {
- if x != nil {
- return x.SocketId
- }
- return 0
-}
-
-func (x *SocketRef) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// ServerRef is a reference to a Server.
-type ServerRef struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A globally unique identifier for this server. Must be a positive number.
- ServerId int64 `protobuf:"varint,5,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
- // An optional name associated with the server.
- Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *ServerRef) Reset() {
- *x = ServerRef{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerRef) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerRef) ProtoMessage() {}
-
-func (x *ServerRef) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerRef.ProtoReflect.Descriptor instead.
-func (*ServerRef) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *ServerRef) GetServerId() int64 {
- if x != nil {
- return x.ServerId
- }
- return 0
-}
-
-func (x *ServerRef) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Server represents a single server. There may be multiple servers in a single
-// program.
-type Server struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The identifier for a Server. This should be set.
- Ref *ServerRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
- // The associated data of the Server.
- Data *ServerData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
- // The sockets that the server is listening on. There are no ordering
- // guarantees. This may be absent.
- ListenSocket []*SocketRef `protobuf:"bytes,3,rep,name=listen_socket,json=listenSocket,proto3" json:"listen_socket,omitempty"`
-}
-
-func (x *Server) Reset() {
- *x = Server{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Server) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Server) ProtoMessage() {}
-
-func (x *Server) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Server.ProtoReflect.Descriptor instead.
-func (*Server) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Server) GetRef() *ServerRef {
- if x != nil {
- return x.Ref
- }
- return nil
-}
-
-func (x *Server) GetData() *ServerData {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-func (x *Server) GetListenSocket() []*SocketRef {
- if x != nil {
- return x.ListenSocket
- }
- return nil
-}
-
-// ServerData is data for a specific Server.
-type ServerData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A trace of recent events on the server. May be absent.
- Trace *ChannelTrace `protobuf:"bytes,1,opt,name=trace,proto3" json:"trace,omitempty"`
- // The number of incoming calls started on the server
- CallsStarted int64 `protobuf:"varint,2,opt,name=calls_started,json=callsStarted,proto3" json:"calls_started,omitempty"`
- // The number of incoming calls that have completed with an OK status
- CallsSucceeded int64 `protobuf:"varint,3,opt,name=calls_succeeded,json=callsSucceeded,proto3" json:"calls_succeeded,omitempty"`
- // The number of incoming calls that have a completed with a non-OK status
- CallsFailed int64 `protobuf:"varint,4,opt,name=calls_failed,json=callsFailed,proto3" json:"calls_failed,omitempty"`
- // The last time a call was started on the server.
- LastCallStartedTimestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_call_started_timestamp,json=lastCallStartedTimestamp,proto3" json:"last_call_started_timestamp,omitempty"`
-}
-
-func (x *ServerData) Reset() {
- *x = ServerData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerData) ProtoMessage() {}
-
-func (x *ServerData) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerData.ProtoReflect.Descriptor instead.
-func (*ServerData) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *ServerData) GetTrace() *ChannelTrace {
- if x != nil {
- return x.Trace
- }
- return nil
-}
-
-func (x *ServerData) GetCallsStarted() int64 {
- if x != nil {
- return x.CallsStarted
- }
- return 0
-}
-
-func (x *ServerData) GetCallsSucceeded() int64 {
- if x != nil {
- return x.CallsSucceeded
- }
- return 0
-}
-
-func (x *ServerData) GetCallsFailed() int64 {
- if x != nil {
- return x.CallsFailed
- }
- return 0
-}
-
-func (x *ServerData) GetLastCallStartedTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.LastCallStartedTimestamp
- }
- return nil
-}
-
-// Information about an actual connection. Pronounced "sock-ay".
-type Socket struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The identifier for the Socket.
- Ref *SocketRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
- // Data specific to this Socket.
- Data *SocketData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
- // The locally bound address.
- Local *Address `protobuf:"bytes,3,opt,name=local,proto3" json:"local,omitempty"`
- // The remote bound address. May be absent.
- Remote *Address `protobuf:"bytes,4,opt,name=remote,proto3" json:"remote,omitempty"`
- // Security details for this socket. May be absent if not available, or
- // there is no security on the socket.
- Security *Security `protobuf:"bytes,5,opt,name=security,proto3" json:"security,omitempty"`
- // Optional, represents the name of the remote endpoint, if different than
- // the original target name.
- RemoteName string `protobuf:"bytes,6,opt,name=remote_name,json=remoteName,proto3" json:"remote_name,omitempty"`
-}
-
-func (x *Socket) Reset() {
- *x = Socket{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Socket) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Socket) ProtoMessage() {}
-
-func (x *Socket) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Socket.ProtoReflect.Descriptor instead.
-func (*Socket) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Socket) GetRef() *SocketRef {
- if x != nil {
- return x.Ref
- }
- return nil
-}
-
-func (x *Socket) GetData() *SocketData {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-func (x *Socket) GetLocal() *Address {
- if x != nil {
- return x.Local
- }
- return nil
-}
-
-func (x *Socket) GetRemote() *Address {
- if x != nil {
- return x.Remote
- }
- return nil
-}
-
-func (x *Socket) GetSecurity() *Security {
- if x != nil {
- return x.Security
- }
- return nil
-}
-
-func (x *Socket) GetRemoteName() string {
- if x != nil {
- return x.RemoteName
- }
- return ""
-}
-
-// SocketData is data associated for a specific Socket. The fields present
-// are specific to the implementation, so there may be minor differences in
-// the semantics. (e.g. flow control windows)
-type SocketData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The number of streams that have been started.
- StreamsStarted int64 `protobuf:"varint,1,opt,name=streams_started,json=streamsStarted,proto3" json:"streams_started,omitempty"`
- // The number of streams that have ended successfully:
- // On client side, received frame with eos bit set;
- // On server side, sent frame with eos bit set.
- StreamsSucceeded int64 `protobuf:"varint,2,opt,name=streams_succeeded,json=streamsSucceeded,proto3" json:"streams_succeeded,omitempty"`
- // The number of streams that have ended unsuccessfully:
- // On client side, ended without receiving frame with eos bit set;
- // On server side, ended without sending frame with eos bit set.
- StreamsFailed int64 `protobuf:"varint,3,opt,name=streams_failed,json=streamsFailed,proto3" json:"streams_failed,omitempty"`
- // The number of grpc messages successfully sent on this socket.
- MessagesSent int64 `protobuf:"varint,4,opt,name=messages_sent,json=messagesSent,proto3" json:"messages_sent,omitempty"`
- // The number of grpc messages received on this socket.
- MessagesReceived int64 `protobuf:"varint,5,opt,name=messages_received,json=messagesReceived,proto3" json:"messages_received,omitempty"`
- // The number of keep alives sent. This is typically implemented with HTTP/2
- // ping messages.
- KeepAlivesSent int64 `protobuf:"varint,6,opt,name=keep_alives_sent,json=keepAlivesSent,proto3" json:"keep_alives_sent,omitempty"`
- // The last time a stream was created by this endpoint. Usually unset for
- // servers.
- LastLocalStreamCreatedTimestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_local_stream_created_timestamp,json=lastLocalStreamCreatedTimestamp,proto3" json:"last_local_stream_created_timestamp,omitempty"`
- // The last time a stream was created by the remote endpoint. Usually unset
- // for clients.
- LastRemoteStreamCreatedTimestamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_remote_stream_created_timestamp,json=lastRemoteStreamCreatedTimestamp,proto3" json:"last_remote_stream_created_timestamp,omitempty"`
- // The last time a message was sent by this endpoint.
- LastMessageSentTimestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_message_sent_timestamp,json=lastMessageSentTimestamp,proto3" json:"last_message_sent_timestamp,omitempty"`
- // The last time a message was received by this endpoint.
- LastMessageReceivedTimestamp *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_message_received_timestamp,json=lastMessageReceivedTimestamp,proto3" json:"last_message_received_timestamp,omitempty"`
- // The amount of window, granted to the local endpoint by the remote endpoint.
- // This may be slightly out of date due to network latency. This does NOT
- // include stream level or TCP level flow control info.
- LocalFlowControlWindow *wrapperspb.Int64Value `protobuf:"bytes,11,opt,name=local_flow_control_window,json=localFlowControlWindow,proto3" json:"local_flow_control_window,omitempty"`
- // The amount of window, granted to the remote endpoint by the local endpoint.
- // This may be slightly out of date due to network latency. This does NOT
- // include stream level or TCP level flow control info.
- RemoteFlowControlWindow *wrapperspb.Int64Value `protobuf:"bytes,12,opt,name=remote_flow_control_window,json=remoteFlowControlWindow,proto3" json:"remote_flow_control_window,omitempty"`
- // Socket options set on this socket. May be absent if 'summary' is set
- // on GetSocketRequest.
- Option []*SocketOption `protobuf:"bytes,13,rep,name=option,proto3" json:"option,omitempty"`
-}
-
-func (x *SocketData) Reset() {
- *x = SocketData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SocketData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SocketData) ProtoMessage() {}
-
-func (x *SocketData) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SocketData.ProtoReflect.Descriptor instead.
-func (*SocketData) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *SocketData) GetStreamsStarted() int64 {
- if x != nil {
- return x.StreamsStarted
- }
- return 0
-}
-
-func (x *SocketData) GetStreamsSucceeded() int64 {
- if x != nil {
- return x.StreamsSucceeded
- }
- return 0
-}
-
-func (x *SocketData) GetStreamsFailed() int64 {
- if x != nil {
- return x.StreamsFailed
- }
- return 0
-}
-
-func (x *SocketData) GetMessagesSent() int64 {
- if x != nil {
- return x.MessagesSent
- }
- return 0
-}
-
-func (x *SocketData) GetMessagesReceived() int64 {
- if x != nil {
- return x.MessagesReceived
- }
- return 0
-}
-
-func (x *SocketData) GetKeepAlivesSent() int64 {
- if x != nil {
- return x.KeepAlivesSent
- }
- return 0
-}
-
-func (x *SocketData) GetLastLocalStreamCreatedTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.LastLocalStreamCreatedTimestamp
- }
- return nil
-}
-
-func (x *SocketData) GetLastRemoteStreamCreatedTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.LastRemoteStreamCreatedTimestamp
- }
- return nil
-}
-
-func (x *SocketData) GetLastMessageSentTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.LastMessageSentTimestamp
- }
- return nil
-}
-
-func (x *SocketData) GetLastMessageReceivedTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.LastMessageReceivedTimestamp
- }
- return nil
-}
-
-func (x *SocketData) GetLocalFlowControlWindow() *wrapperspb.Int64Value {
- if x != nil {
- return x.LocalFlowControlWindow
- }
- return nil
-}
-
-func (x *SocketData) GetRemoteFlowControlWindow() *wrapperspb.Int64Value {
- if x != nil {
- return x.RemoteFlowControlWindow
- }
- return nil
-}
-
-func (x *SocketData) GetOption() []*SocketOption {
- if x != nil {
- return x.Option
- }
- return nil
-}
-
-// Address represents the address used to create the socket.
-type Address struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Address:
- // *Address_TcpipAddress
- // *Address_UdsAddress_
- // *Address_OtherAddress_
- Address isAddress_Address `protobuf_oneof:"address"`
-}
-
-func (x *Address) Reset() {
- *x = Address{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Address) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Address) ProtoMessage() {}
-
-func (x *Address) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Address.ProtoReflect.Descriptor instead.
-func (*Address) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14}
-}
-
-func (m *Address) GetAddress() isAddress_Address {
- if m != nil {
- return m.Address
- }
- return nil
-}
-
-func (x *Address) GetTcpipAddress() *Address_TcpIpAddress {
- if x, ok := x.GetAddress().(*Address_TcpipAddress); ok {
- return x.TcpipAddress
- }
- return nil
-}
-
-func (x *Address) GetUdsAddress() *Address_UdsAddress {
- if x, ok := x.GetAddress().(*Address_UdsAddress_); ok {
- return x.UdsAddress
- }
- return nil
-}
-
-func (x *Address) GetOtherAddress() *Address_OtherAddress {
- if x, ok := x.GetAddress().(*Address_OtherAddress_); ok {
- return x.OtherAddress
- }
- return nil
-}
-
-type isAddress_Address interface {
- isAddress_Address()
-}
-
-type Address_TcpipAddress struct {
- TcpipAddress *Address_TcpIpAddress `protobuf:"bytes,1,opt,name=tcpip_address,json=tcpipAddress,proto3,oneof"`
-}
-
-type Address_UdsAddress_ struct {
- UdsAddress *Address_UdsAddress `protobuf:"bytes,2,opt,name=uds_address,json=udsAddress,proto3,oneof"`
-}
-
-type Address_OtherAddress_ struct {
- OtherAddress *Address_OtherAddress `protobuf:"bytes,3,opt,name=other_address,json=otherAddress,proto3,oneof"`
-}
-
-func (*Address_TcpipAddress) isAddress_Address() {}
-
-func (*Address_UdsAddress_) isAddress_Address() {}
-
-func (*Address_OtherAddress_) isAddress_Address() {}
-
-// Security represents details about how secure the socket is.
-type Security struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Model:
- // *Security_Tls_
- // *Security_Other
- Model isSecurity_Model `protobuf_oneof:"model"`
-}
-
-func (x *Security) Reset() {
- *x = Security{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Security) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Security) ProtoMessage() {}
-
-func (x *Security) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Security.ProtoReflect.Descriptor instead.
-func (*Security) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{15}
-}
-
-func (m *Security) GetModel() isSecurity_Model {
- if m != nil {
- return m.Model
- }
- return nil
-}
-
-func (x *Security) GetTls() *Security_Tls {
- if x, ok := x.GetModel().(*Security_Tls_); ok {
- return x.Tls
- }
- return nil
-}
-
-func (x *Security) GetOther() *Security_OtherSecurity {
- if x, ok := x.GetModel().(*Security_Other); ok {
- return x.Other
- }
- return nil
-}
-
-type isSecurity_Model interface {
- isSecurity_Model()
-}
-
-type Security_Tls_ struct {
- Tls *Security_Tls `protobuf:"bytes,1,opt,name=tls,proto3,oneof"`
-}
-
-type Security_Other struct {
- Other *Security_OtherSecurity `protobuf:"bytes,2,opt,name=other,proto3,oneof"`
-}
-
-func (*Security_Tls_) isSecurity_Model() {}
-
-func (*Security_Other) isSecurity_Model() {}
-
-// SocketOption represents socket options for a socket. Specifically, these
-// are the options returned by getsockopt().
-type SocketOption struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The full name of the socket option. Typically this will be the upper case
- // name, such as "SO_REUSEPORT".
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The human readable value of this socket option. At least one of value or
- // additional will be set.
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
- // Additional data associated with the socket option. At least one of value
- // or additional will be set.
- Additional *anypb.Any `protobuf:"bytes,3,opt,name=additional,proto3" json:"additional,omitempty"`
-}
-
-func (x *SocketOption) Reset() {
- *x = SocketOption{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SocketOption) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SocketOption) ProtoMessage() {}
-
-func (x *SocketOption) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SocketOption.ProtoReflect.Descriptor instead.
-func (*SocketOption) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *SocketOption) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *SocketOption) GetValue() string {
- if x != nil {
- return x.Value
- }
- return ""
-}
-
-func (x *SocketOption) GetAdditional() *anypb.Any {
- if x != nil {
- return x.Additional
- }
- return nil
-}
-
-// For use with SocketOption's additional field. This is primarily used for
-// SO_RCVTIMEO and SO_SNDTIMEO
-type SocketOptionTimeout struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
-}
-
-func (x *SocketOptionTimeout) Reset() {
- *x = SocketOptionTimeout{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SocketOptionTimeout) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SocketOptionTimeout) ProtoMessage() {}
-
-func (x *SocketOptionTimeout) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SocketOptionTimeout.ProtoReflect.Descriptor instead.
-func (*SocketOptionTimeout) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *SocketOptionTimeout) GetDuration() *durationpb.Duration {
- if x != nil {
- return x.Duration
- }
- return nil
-}
-
-// For use with SocketOption's additional field. This is primarily used for
-// SO_LINGER.
-type SocketOptionLinger struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // active maps to `struct linger.l_onoff`
- Active bool `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"`
- // duration maps to `struct linger.l_linger`
- Duration *durationpb.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
-}
-
-func (x *SocketOptionLinger) Reset() {
- *x = SocketOptionLinger{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SocketOptionLinger) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SocketOptionLinger) ProtoMessage() {}
-
-func (x *SocketOptionLinger) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SocketOptionLinger.ProtoReflect.Descriptor instead.
-func (*SocketOptionLinger) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *SocketOptionLinger) GetActive() bool {
- if x != nil {
- return x.Active
- }
- return false
-}
-
-func (x *SocketOptionLinger) GetDuration() *durationpb.Duration {
- if x != nil {
- return x.Duration
- }
- return nil
-}
-
-// For use with SocketOption's additional field. Tcp info for
-// SOL_TCP and TCP_INFO.
-type SocketOptionTcpInfo struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- TcpiState uint32 `protobuf:"varint,1,opt,name=tcpi_state,json=tcpiState,proto3" json:"tcpi_state,omitempty"`
- TcpiCaState uint32 `protobuf:"varint,2,opt,name=tcpi_ca_state,json=tcpiCaState,proto3" json:"tcpi_ca_state,omitempty"`
- TcpiRetransmits uint32 `protobuf:"varint,3,opt,name=tcpi_retransmits,json=tcpiRetransmits,proto3" json:"tcpi_retransmits,omitempty"`
- TcpiProbes uint32 `protobuf:"varint,4,opt,name=tcpi_probes,json=tcpiProbes,proto3" json:"tcpi_probes,omitempty"`
- TcpiBackoff uint32 `protobuf:"varint,5,opt,name=tcpi_backoff,json=tcpiBackoff,proto3" json:"tcpi_backoff,omitempty"`
- TcpiOptions uint32 `protobuf:"varint,6,opt,name=tcpi_options,json=tcpiOptions,proto3" json:"tcpi_options,omitempty"`
- TcpiSndWscale uint32 `protobuf:"varint,7,opt,name=tcpi_snd_wscale,json=tcpiSndWscale,proto3" json:"tcpi_snd_wscale,omitempty"`
- TcpiRcvWscale uint32 `protobuf:"varint,8,opt,name=tcpi_rcv_wscale,json=tcpiRcvWscale,proto3" json:"tcpi_rcv_wscale,omitempty"`
- TcpiRto uint32 `protobuf:"varint,9,opt,name=tcpi_rto,json=tcpiRto,proto3" json:"tcpi_rto,omitempty"`
- TcpiAto uint32 `protobuf:"varint,10,opt,name=tcpi_ato,json=tcpiAto,proto3" json:"tcpi_ato,omitempty"`
- TcpiSndMss uint32 `protobuf:"varint,11,opt,name=tcpi_snd_mss,json=tcpiSndMss,proto3" json:"tcpi_snd_mss,omitempty"`
- TcpiRcvMss uint32 `protobuf:"varint,12,opt,name=tcpi_rcv_mss,json=tcpiRcvMss,proto3" json:"tcpi_rcv_mss,omitempty"`
- TcpiUnacked uint32 `protobuf:"varint,13,opt,name=tcpi_unacked,json=tcpiUnacked,proto3" json:"tcpi_unacked,omitempty"`
- TcpiSacked uint32 `protobuf:"varint,14,opt,name=tcpi_sacked,json=tcpiSacked,proto3" json:"tcpi_sacked,omitempty"`
- TcpiLost uint32 `protobuf:"varint,15,opt,name=tcpi_lost,json=tcpiLost,proto3" json:"tcpi_lost,omitempty"`
- TcpiRetrans uint32 `protobuf:"varint,16,opt,name=tcpi_retrans,json=tcpiRetrans,proto3" json:"tcpi_retrans,omitempty"`
- TcpiFackets uint32 `protobuf:"varint,17,opt,name=tcpi_fackets,json=tcpiFackets,proto3" json:"tcpi_fackets,omitempty"`
- TcpiLastDataSent uint32 `protobuf:"varint,18,opt,name=tcpi_last_data_sent,json=tcpiLastDataSent,proto3" json:"tcpi_last_data_sent,omitempty"`
- TcpiLastAckSent uint32 `protobuf:"varint,19,opt,name=tcpi_last_ack_sent,json=tcpiLastAckSent,proto3" json:"tcpi_last_ack_sent,omitempty"`
- TcpiLastDataRecv uint32 `protobuf:"varint,20,opt,name=tcpi_last_data_recv,json=tcpiLastDataRecv,proto3" json:"tcpi_last_data_recv,omitempty"`
- TcpiLastAckRecv uint32 `protobuf:"varint,21,opt,name=tcpi_last_ack_recv,json=tcpiLastAckRecv,proto3" json:"tcpi_last_ack_recv,omitempty"`
- TcpiPmtu uint32 `protobuf:"varint,22,opt,name=tcpi_pmtu,json=tcpiPmtu,proto3" json:"tcpi_pmtu,omitempty"`
- TcpiRcvSsthresh uint32 `protobuf:"varint,23,opt,name=tcpi_rcv_ssthresh,json=tcpiRcvSsthresh,proto3" json:"tcpi_rcv_ssthresh,omitempty"`
- TcpiRtt uint32 `protobuf:"varint,24,opt,name=tcpi_rtt,json=tcpiRtt,proto3" json:"tcpi_rtt,omitempty"`
- TcpiRttvar uint32 `protobuf:"varint,25,opt,name=tcpi_rttvar,json=tcpiRttvar,proto3" json:"tcpi_rttvar,omitempty"`
- TcpiSndSsthresh uint32 `protobuf:"varint,26,opt,name=tcpi_snd_ssthresh,json=tcpiSndSsthresh,proto3" json:"tcpi_snd_ssthresh,omitempty"`
- TcpiSndCwnd uint32 `protobuf:"varint,27,opt,name=tcpi_snd_cwnd,json=tcpiSndCwnd,proto3" json:"tcpi_snd_cwnd,omitempty"`
- TcpiAdvmss uint32 `protobuf:"varint,28,opt,name=tcpi_advmss,json=tcpiAdvmss,proto3" json:"tcpi_advmss,omitempty"`
- TcpiReordering uint32 `protobuf:"varint,29,opt,name=tcpi_reordering,json=tcpiReordering,proto3" json:"tcpi_reordering,omitempty"`
-}
-
-func (x *SocketOptionTcpInfo) Reset() {
- *x = SocketOptionTcpInfo{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[19]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SocketOptionTcpInfo) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SocketOptionTcpInfo) ProtoMessage() {}
-
-func (x *SocketOptionTcpInfo) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[19]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SocketOptionTcpInfo.ProtoReflect.Descriptor instead.
-func (*SocketOptionTcpInfo) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiState() uint32 {
- if x != nil {
- return x.TcpiState
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiCaState() uint32 {
- if x != nil {
- return x.TcpiCaState
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRetransmits() uint32 {
- if x != nil {
- return x.TcpiRetransmits
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiProbes() uint32 {
- if x != nil {
- return x.TcpiProbes
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiBackoff() uint32 {
- if x != nil {
- return x.TcpiBackoff
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiOptions() uint32 {
- if x != nil {
- return x.TcpiOptions
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiSndWscale() uint32 {
- if x != nil {
- return x.TcpiSndWscale
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRcvWscale() uint32 {
- if x != nil {
- return x.TcpiRcvWscale
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRto() uint32 {
- if x != nil {
- return x.TcpiRto
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiAto() uint32 {
- if x != nil {
- return x.TcpiAto
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiSndMss() uint32 {
- if x != nil {
- return x.TcpiSndMss
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRcvMss() uint32 {
- if x != nil {
- return x.TcpiRcvMss
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiUnacked() uint32 {
- if x != nil {
- return x.TcpiUnacked
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiSacked() uint32 {
- if x != nil {
- return x.TcpiSacked
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiLost() uint32 {
- if x != nil {
- return x.TcpiLost
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRetrans() uint32 {
- if x != nil {
- return x.TcpiRetrans
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiFackets() uint32 {
- if x != nil {
- return x.TcpiFackets
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiLastDataSent() uint32 {
- if x != nil {
- return x.TcpiLastDataSent
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiLastAckSent() uint32 {
- if x != nil {
- return x.TcpiLastAckSent
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiLastDataRecv() uint32 {
- if x != nil {
- return x.TcpiLastDataRecv
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiLastAckRecv() uint32 {
- if x != nil {
- return x.TcpiLastAckRecv
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiPmtu() uint32 {
- if x != nil {
- return x.TcpiPmtu
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRcvSsthresh() uint32 {
- if x != nil {
- return x.TcpiRcvSsthresh
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRtt() uint32 {
- if x != nil {
- return x.TcpiRtt
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiRttvar() uint32 {
- if x != nil {
- return x.TcpiRttvar
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiSndSsthresh() uint32 {
- if x != nil {
- return x.TcpiSndSsthresh
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiSndCwnd() uint32 {
- if x != nil {
- return x.TcpiSndCwnd
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiAdvmss() uint32 {
- if x != nil {
- return x.TcpiAdvmss
- }
- return 0
-}
-
-func (x *SocketOptionTcpInfo) GetTcpiReordering() uint32 {
- if x != nil {
- return x.TcpiReordering
- }
- return 0
-}
-
-type GetTopChannelsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // start_channel_id indicates that only channels at or above this id should be
- // included in the results.
- // To request the first page, this should be set to 0. To request
- // subsequent pages, the client generates this value by adding 1 to
- // the highest seen result WorkloadID.
- StartChannelId int64 `protobuf:"varint,1,opt,name=start_channel_id,json=startChannelId,proto3" json:"start_channel_id,omitempty"`
- // If non-zero, the server will return a page of results containing
- // at most this many items. If zero, the server will choose a
- // reasonable page size. Must never be negative.
- MaxResults int64 `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-}
-
-func (x *GetTopChannelsRequest) Reset() {
- *x = GetTopChannelsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetTopChannelsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetTopChannelsRequest) ProtoMessage() {}
-
-func (x *GetTopChannelsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetTopChannelsRequest.ProtoReflect.Descriptor instead.
-func (*GetTopChannelsRequest) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *GetTopChannelsRequest) GetStartChannelId() int64 {
- if x != nil {
- return x.StartChannelId
- }
- return 0
-}
-
-func (x *GetTopChannelsRequest) GetMaxResults() int64 {
- if x != nil {
- return x.MaxResults
- }
- return 0
-}
-
-type GetTopChannelsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // list of channels that the connection detail service knows about. Sorted in
- // ascending channel_id order.
- // Must contain at least 1 result, otherwise 'end' must be true.
- Channel []*Channel `protobuf:"bytes,1,rep,name=channel,proto3" json:"channel,omitempty"`
- // If set, indicates that the list of channels is the final list. Requesting
- // more channels can only return more if they are created after this RPC
- // completes.
- End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-}
-
-func (x *GetTopChannelsResponse) Reset() {
- *x = GetTopChannelsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetTopChannelsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetTopChannelsResponse) ProtoMessage() {}
-
-func (x *GetTopChannelsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[21]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetTopChannelsResponse.ProtoReflect.Descriptor instead.
-func (*GetTopChannelsResponse) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *GetTopChannelsResponse) GetChannel() []*Channel {
- if x != nil {
- return x.Channel
- }
- return nil
-}
-
-func (x *GetTopChannelsResponse) GetEnd() bool {
- if x != nil {
- return x.End
- }
- return false
-}
-
-type GetServersRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // start_server_id indicates that only servers at or above this id should be
- // included in the results.
- // To request the first page, this must be set to 0. To request
- // subsequent pages, the client generates this value by adding 1 to
- // the highest seen result WorkloadID.
- StartServerId int64 `protobuf:"varint,1,opt,name=start_server_id,json=startServerId,proto3" json:"start_server_id,omitempty"`
- // If non-zero, the server will return a page of results containing
- // at most this many items. If zero, the server will choose a
- // reasonable page size. Must never be negative.
- MaxResults int64 `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-}
-
-func (x *GetServersRequest) Reset() {
- *x = GetServersRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[22]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetServersRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetServersRequest) ProtoMessage() {}
-
-func (x *GetServersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[22]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetServersRequest.ProtoReflect.Descriptor instead.
-func (*GetServersRequest) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *GetServersRequest) GetStartServerId() int64 {
- if x != nil {
- return x.StartServerId
- }
- return 0
-}
-
-func (x *GetServersRequest) GetMaxResults() int64 {
- if x != nil {
- return x.MaxResults
- }
- return 0
-}
-
-type GetServersResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // list of servers that the connection detail service knows about. Sorted in
- // ascending server_id order.
- // Must contain at least 1 result, otherwise 'end' must be true.
- Server []*Server `protobuf:"bytes,1,rep,name=server,proto3" json:"server,omitempty"`
- // If set, indicates that the list of servers is the final list. Requesting
- // more servers will only return more if they are created after this RPC
- // completes.
- End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-}
-
-func (x *GetServersResponse) Reset() {
- *x = GetServersResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetServersResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetServersResponse) ProtoMessage() {}
-
-func (x *GetServersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[23]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetServersResponse.ProtoReflect.Descriptor instead.
-func (*GetServersResponse) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *GetServersResponse) GetServer() []*Server {
- if x != nil {
- return x.Server
- }
- return nil
-}
-
-func (x *GetServersResponse) GetEnd() bool {
- if x != nil {
- return x.End
- }
- return false
-}
-
-type GetServerRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // server_id is the identifier of the specific server to get.
- ServerId int64 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
-}
-
-func (x *GetServerRequest) Reset() {
- *x = GetServerRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[24]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetServerRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetServerRequest) ProtoMessage() {}
-
-func (x *GetServerRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[24]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetServerRequest.ProtoReflect.Descriptor instead.
-func (*GetServerRequest) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *GetServerRequest) GetServerId() int64 {
- if x != nil {
- return x.ServerId
- }
- return 0
-}
-
-type GetServerResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The Server that corresponds to the requested server_id. This field
- // should be set.
- Server *Server `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
-}
-
-func (x *GetServerResponse) Reset() {
- *x = GetServerResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetServerResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetServerResponse) ProtoMessage() {}
-
-func (x *GetServerResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[25]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetServerResponse.ProtoReflect.Descriptor instead.
-func (*GetServerResponse) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *GetServerResponse) GetServer() *Server {
- if x != nil {
- return x.Server
- }
- return nil
-}
-
-type GetServerSocketsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ServerId int64 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
- // start_socket_id indicates that only sockets at or above this id should be
- // included in the results.
- // To request the first page, this must be set to 0. To request
- // subsequent pages, the client generates this value by adding 1 to
- // the highest seen result WorkloadID.
- StartSocketId int64 `protobuf:"varint,2,opt,name=start_socket_id,json=startSocketId,proto3" json:"start_socket_id,omitempty"`
- // If non-zero, the server will return a page of results containing
- // at most this many items. If zero, the server will choose a
- // reasonable page size. Must never be negative.
- MaxResults int64 `protobuf:"varint,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-}
-
-func (x *GetServerSocketsRequest) Reset() {
- *x = GetServerSocketsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[26]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetServerSocketsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetServerSocketsRequest) ProtoMessage() {}
-
-func (x *GetServerSocketsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[26]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetServerSocketsRequest.ProtoReflect.Descriptor instead.
-func (*GetServerSocketsRequest) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *GetServerSocketsRequest) GetServerId() int64 {
- if x != nil {
- return x.ServerId
- }
- return 0
-}
-
-func (x *GetServerSocketsRequest) GetStartSocketId() int64 {
- if x != nil {
- return x.StartSocketId
- }
- return 0
-}
-
-func (x *GetServerSocketsRequest) GetMaxResults() int64 {
- if x != nil {
- return x.MaxResults
- }
- return 0
-}
-
-type GetServerSocketsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // list of socket refs that the connection detail service knows about. Sorted in
- // ascending socket_id order.
- // Must contain at least 1 result, otherwise 'end' must be true.
- SocketRef []*SocketRef `protobuf:"bytes,1,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
- // If set, indicates that the list of sockets is the final list. Requesting
- // more sockets will only return more if they are created after this RPC
- // completes.
- End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-}
-
-func (x *GetServerSocketsResponse) Reset() {
- *x = GetServerSocketsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[27]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetServerSocketsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetServerSocketsResponse) ProtoMessage() {}
-
-func (x *GetServerSocketsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[27]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetServerSocketsResponse.ProtoReflect.Descriptor instead.
-func (*GetServerSocketsResponse) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *GetServerSocketsResponse) GetSocketRef() []*SocketRef {
- if x != nil {
- return x.SocketRef
- }
- return nil
-}
-
-func (x *GetServerSocketsResponse) GetEnd() bool {
- if x != nil {
- return x.End
- }
- return false
-}
-
-type GetChannelRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // channel_id is the identifier of the specific channel to get.
- ChannelId int64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
-}
-
-func (x *GetChannelRequest) Reset() {
- *x = GetChannelRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[28]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetChannelRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetChannelRequest) ProtoMessage() {}
-
-func (x *GetChannelRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[28]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetChannelRequest.ProtoReflect.Descriptor instead.
-func (*GetChannelRequest) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *GetChannelRequest) GetChannelId() int64 {
- if x != nil {
- return x.ChannelId
- }
- return 0
-}
-
-type GetChannelResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The Channel that corresponds to the requested channel_id. This field
- // should be set.
- Channel *Channel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
-}
-
-func (x *GetChannelResponse) Reset() {
- *x = GetChannelResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[29]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetChannelResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetChannelResponse) ProtoMessage() {}
-
-func (x *GetChannelResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[29]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetChannelResponse.ProtoReflect.Descriptor instead.
-func (*GetChannelResponse) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *GetChannelResponse) GetChannel() *Channel {
- if x != nil {
- return x.Channel
- }
- return nil
-}
-
-type GetSubchannelRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // subchannel_id is the identifier of the specific subchannel to get.
- SubchannelId int64 `protobuf:"varint,1,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
-}
-
-func (x *GetSubchannelRequest) Reset() {
- *x = GetSubchannelRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[30]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetSubchannelRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSubchannelRequest) ProtoMessage() {}
-
-func (x *GetSubchannelRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[30]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetSubchannelRequest.ProtoReflect.Descriptor instead.
-func (*GetSubchannelRequest) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *GetSubchannelRequest) GetSubchannelId() int64 {
- if x != nil {
- return x.SubchannelId
- }
- return 0
-}
-
-type GetSubchannelResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The Subchannel that corresponds to the requested subchannel_id. This
- // field should be set.
- Subchannel *Subchannel `protobuf:"bytes,1,opt,name=subchannel,proto3" json:"subchannel,omitempty"`
-}
-
-func (x *GetSubchannelResponse) Reset() {
- *x = GetSubchannelResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[31]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetSubchannelResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSubchannelResponse) ProtoMessage() {}
-
-func (x *GetSubchannelResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[31]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetSubchannelResponse.ProtoReflect.Descriptor instead.
-func (*GetSubchannelResponse) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *GetSubchannelResponse) GetSubchannel() *Subchannel {
- if x != nil {
- return x.Subchannel
- }
- return nil
-}
-
-type GetSocketRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // socket_id is the identifier of the specific socket to get.
- SocketId int64 `protobuf:"varint,1,opt,name=socket_id,json=socketId,proto3" json:"socket_id,omitempty"`
- // If true, the response will contain only high level information
- // that is inexpensive to obtain. Fields thay may be omitted are
- // documented.
- Summary bool `protobuf:"varint,2,opt,name=summary,proto3" json:"summary,omitempty"`
-}
-
-func (x *GetSocketRequest) Reset() {
- *x = GetSocketRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[32]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetSocketRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSocketRequest) ProtoMessage() {}
-
-func (x *GetSocketRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[32]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetSocketRequest.ProtoReflect.Descriptor instead.
-func (*GetSocketRequest) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *GetSocketRequest) GetSocketId() int64 {
- if x != nil {
- return x.SocketId
- }
- return 0
-}
-
-func (x *GetSocketRequest) GetSummary() bool {
- if x != nil {
- return x.Summary
- }
- return false
-}
-
-type GetSocketResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The Socket that corresponds to the requested socket_id. This field
- // should be set.
- Socket *Socket `protobuf:"bytes,1,opt,name=socket,proto3" json:"socket,omitempty"`
-}
-
-func (x *GetSocketResponse) Reset() {
- *x = GetSocketResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[33]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GetSocketResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSocketResponse) ProtoMessage() {}
-
-func (x *GetSocketResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[33]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetSocketResponse.ProtoReflect.Descriptor instead.
-func (*GetSocketResponse) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *GetSocketResponse) GetSocket() *Socket {
- if x != nil {
- return x.Socket
- }
- return nil
-}
-
-type Address_TcpIpAddress struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Either the IPv4 or IPv6 address in bytes. Will be either 4 bytes or 16
- // bytes in length.
- IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
- // 0-64k, or -1 if not appropriate.
- Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-}
-
-func (x *Address_TcpIpAddress) Reset() {
- *x = Address_TcpIpAddress{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[34]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Address_TcpIpAddress) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Address_TcpIpAddress) ProtoMessage() {}
-
-func (x *Address_TcpIpAddress) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[34]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Address_TcpIpAddress.ProtoReflect.Descriptor instead.
-func (*Address_TcpIpAddress) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14, 0}
-}
-
-func (x *Address_TcpIpAddress) GetIpAddress() []byte {
- if x != nil {
- return x.IpAddress
- }
- return nil
-}
-
-func (x *Address_TcpIpAddress) GetPort() int32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-// A Unix Domain Socket address.
-type Address_UdsAddress struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
-}
-
-func (x *Address_UdsAddress) Reset() {
- *x = Address_UdsAddress{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[35]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Address_UdsAddress) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Address_UdsAddress) ProtoMessage() {}
-
-func (x *Address_UdsAddress) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[35]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Address_UdsAddress.ProtoReflect.Descriptor instead.
-func (*Address_UdsAddress) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14, 1}
-}
-
-func (x *Address_UdsAddress) GetFilename() string {
- if x != nil {
- return x.Filename
- }
- return ""
-}
-
-// An address type not included above.
-type Address_OtherAddress struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The human readable version of the value. This value should be set.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The actual address message.
- Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Address_OtherAddress) Reset() {
- *x = Address_OtherAddress{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[36]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Address_OtherAddress) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Address_OtherAddress) ProtoMessage() {}
-
-func (x *Address_OtherAddress) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[36]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Address_OtherAddress.ProtoReflect.Descriptor instead.
-func (*Address_OtherAddress) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14, 2}
-}
-
-func (x *Address_OtherAddress) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Address_OtherAddress) GetValue() *anypb.Any {
- if x != nil {
- return x.Value
- }
- return nil
-}
-
-type Security_Tls struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to CipherSuite:
- // *Security_Tls_StandardName
- // *Security_Tls_OtherName
- CipherSuite isSecurity_Tls_CipherSuite `protobuf_oneof:"cipher_suite"`
- // the certificate used by this endpoint.
- LocalCertificate []byte `protobuf:"bytes,3,opt,name=local_certificate,json=localCertificate,proto3" json:"local_certificate,omitempty"`
- // the certificate used by the remote endpoint.
- RemoteCertificate []byte `protobuf:"bytes,4,opt,name=remote_certificate,json=remoteCertificate,proto3" json:"remote_certificate,omitempty"`
-}
-
-func (x *Security_Tls) Reset() {
- *x = Security_Tls{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[37]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Security_Tls) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Security_Tls) ProtoMessage() {}
-
-func (x *Security_Tls) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[37]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Security_Tls.ProtoReflect.Descriptor instead.
-func (*Security_Tls) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{15, 0}
-}
-
-func (m *Security_Tls) GetCipherSuite() isSecurity_Tls_CipherSuite {
- if m != nil {
- return m.CipherSuite
- }
- return nil
-}
-
-func (x *Security_Tls) GetStandardName() string {
- if x, ok := x.GetCipherSuite().(*Security_Tls_StandardName); ok {
- return x.StandardName
- }
- return ""
-}
-
-func (x *Security_Tls) GetOtherName() string {
- if x, ok := x.GetCipherSuite().(*Security_Tls_OtherName); ok {
- return x.OtherName
- }
- return ""
-}
-
-func (x *Security_Tls) GetLocalCertificate() []byte {
- if x != nil {
- return x.LocalCertificate
- }
- return nil
-}
-
-func (x *Security_Tls) GetRemoteCertificate() []byte {
- if x != nil {
- return x.RemoteCertificate
- }
- return nil
-}
-
-type isSecurity_Tls_CipherSuite interface {
- isSecurity_Tls_CipherSuite()
-}
-
-type Security_Tls_StandardName struct {
- // The cipher suite name in the RFC 4346 format:
- // https://tools.ietf.org/html/rfc4346#appendix-C
- StandardName string `protobuf:"bytes,1,opt,name=standard_name,json=standardName,proto3,oneof"`
-}
-
-type Security_Tls_OtherName struct {
- // Some other way to describe the cipher suite if
- // the RFC 4346 name is not available.
- OtherName string `protobuf:"bytes,2,opt,name=other_name,json=otherName,proto3,oneof"`
-}
-
-func (*Security_Tls_StandardName) isSecurity_Tls_CipherSuite() {}
-
-func (*Security_Tls_OtherName) isSecurity_Tls_CipherSuite() {}
-
-type Security_OtherSecurity struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The human readable version of the value.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The actual security details message.
- Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Security_OtherSecurity) Reset() {
- *x = Security_OtherSecurity{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[38]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Security_OtherSecurity) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Security_OtherSecurity) ProtoMessage() {}
-
-func (x *Security_OtherSecurity) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[38]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Security_OtherSecurity.ProtoReflect.Descriptor instead.
-func (*Security_OtherSecurity) Descriptor() ([]byte, []int) {
- return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{15, 1}
-}
-
-func (x *Security_OtherSecurity) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Security_OtherSecurity) GetValue() *anypb.Any {
- if x != nil {
- return x.Value
- }
- return nil
-}
-
-var File_grpc_channelz_v1_channelz_proto protoreflect.FileDescriptor
-
-var file_grpc_channelz_v1_channelz_proto_rawDesc = []byte{
- 0x0a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2f,
- 0x76, 0x31, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x12, 0x10, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a,
- 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
- 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
- 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
- 0xaf, 0x02, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x03, 0x72,
- 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x31, 0x0a, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3d,
- 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65,
- 0x66, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x46, 0x0a,
- 0x0e, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18,
- 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f,
- 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63,
- 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65,
- 0x66, 0x22, 0xb5, 0x02, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x12, 0x31, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x03,
- 0x72, 0x65, 0x66, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61,
- 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x46, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x0d,
- 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x3a, 0x0a,
- 0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x09,
- 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x22, 0xc2, 0x01, 0x0a, 0x18, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
- 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74,
- 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5e,
- 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
- 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e,
- 0x0a, 0x0a, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09,
- 0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x52, 0x41,
- 0x4e, 0x53, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x04,
- 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x22, 0xe9,
- 0x02, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x40,
- 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
- 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x12, 0x23,
- 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72,
- 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x75, 0x63,
- 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61,
- 0x6c, 0x6c, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c,
- 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12,
- 0x59, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65,
- 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x98, 0x03, 0x0a, 0x11, 0x43,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
- 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54,
- 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69,
- 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x09,
- 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x63, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
- 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66,
- 0x48, 0x00, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65,
- 0x66, 0x22, 0x45, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a,
- 0x0a, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a,
- 0x07, 0x43, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x54,
- 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x54,
- 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x68, 0x69, 0x6c,
- 0x64, 0x5f, 0x72, 0x65, 0x66, 0x22, 0xc2, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x65, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x67,
- 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a,
- 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x0a, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10,
- 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08,
- 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22,
- 0x6c, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66,
- 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69,
- 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a,
- 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10,
- 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x60, 0x0a,
- 0x09, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f,
- 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73,
- 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10,
- 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08,
- 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22,
- 0x60, 0x0a, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x09,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08,
- 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a,
- 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10,
- 0x09, 0x22, 0xab, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x03,
- 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x30, 0x0a, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a,
- 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65,
- 0x66, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x22,
- 0x8e, 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34,
- 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x05, 0x74,
- 0x72, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x61, 0x6c,
- 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x6c,
- 0x6c, 0x73, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64,
- 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c,
- 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46,
- 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x61,
- 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x61, 0x6c, 0x6c,
- 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x22, 0xa6, 0x02, 0x0a, 0x06, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x72,
- 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b,
- 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61,
- 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b,
- 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x05,
- 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x41,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x31, 0x0a,
- 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
- 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
- 0x12, 0x36, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f,
- 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72,
- 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x83, 0x07, 0x0a, 0x0a, 0x53, 0x6f,
- 0x63, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65,
- 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x73, 0x75, 0x63,
- 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x74,
- 0x72, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x25,
- 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x46,
- 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52,
- 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6b, 0x65, 0x65, 0x70, 0x5f,
- 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0e, 0x6b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x53, 0x65, 0x6e,
- 0x74, 0x12, 0x68, 0x0a, 0x23, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f,
- 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1f, 0x6c, 0x61, 0x73, 0x74,
- 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x6a, 0x0a, 0x24, 0x6c,
- 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74,
- 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x59, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x12, 0x61, 0x0a, 0x1f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x56, 0x0a, 0x19, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x66,
- 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x77, 0x69, 0x6e, 0x64,
- 0x6f, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77,
- 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x58, 0x0a,
- 0x1a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e,
- 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17,
- 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
- 0x6c, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65,
- 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22,
- 0xb8, 0x03, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x74,
- 0x63, 0x70, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x63,
- 0x70, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x63,
- 0x70, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x47, 0x0a, 0x0b, 0x75, 0x64,
- 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
- 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x55, 0x64, 0x73, 0x41, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x64, 0x73, 0x41, 0x64, 0x64, 0x72,
- 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65,
- 0x73, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65,
- 0x73, 0x73, 0x1a, 0x41, 0x0a, 0x0c, 0x54, 0x63, 0x70, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65,
- 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
- 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x04, 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x28, 0x0a, 0x0a, 0x55, 0x64, 0x73, 0x41, 0x64, 0x64, 0x72,
- 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x1a,
- 0x4e, 0x0a, 0x0c, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
- 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42,
- 0x09, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x96, 0x03, 0x0a, 0x08, 0x53,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x2e, 0x54, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x6f,
- 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
- 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x65, 0x63, 0x75,
- 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0xb9, 0x01,
- 0x0a, 0x03, 0x54, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
- 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c,
- 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a,
- 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x00, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a,
- 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65,
- 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x63, 0x69, 0x70,
- 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x4f, 0x0a, 0x0d, 0x4f, 0x74, 0x68,
- 0x65, 0x72, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6d, 0x6f,
- 0x64, 0x65, 0x6c, 0x22, 0x6e, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a,
- 0x0a, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x61, 0x6c, 0x22, 0x4c, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x22, 0x63, 0x0a, 0x12, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x4c, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12,
- 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb2, 0x08, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x6b, 0x65,
- 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x63, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d,
- 0x0a, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0d, 0x52, 0x09, 0x74, 0x63, 0x70, 0x69, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a,
- 0x0d, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x63, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x43, 0x61, 0x53, 0x74, 0x61, 0x74,
- 0x65, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e,
- 0x73, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63, 0x70,
- 0x69, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b,
- 0x74, 0x63, 0x70, 0x69, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x12, 0x21, 0x0a,
- 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66,
- 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x4f, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f,
- 0x77, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x63,
- 0x70, 0x69, 0x53, 0x6e, 0x64, 0x57, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74,
- 0x63, 0x70, 0x69, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x77, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x08,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x63, 0x70, 0x69, 0x52, 0x63, 0x76, 0x57, 0x73, 0x63,
- 0x61, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x74, 0x6f, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x63, 0x70, 0x69, 0x52, 0x74, 0x6f, 0x12, 0x19,
- 0x0a, 0x08, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x61, 0x74, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d,
- 0x52, 0x07, 0x74, 0x63, 0x70, 0x69, 0x41, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x63, 0x70,
- 0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f, 0x6d, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x0a, 0x74, 0x63, 0x70, 0x69, 0x53, 0x6e, 0x64, 0x4d, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x74,
- 0x63, 0x70, 0x69, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x6d, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x52, 0x63, 0x76, 0x4d, 0x73, 0x73, 0x12, 0x21, 0x0a,
- 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x75, 0x6e, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x0d, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x55, 0x6e, 0x61, 0x63, 0x6b, 0x65, 0x64,
- 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18,
- 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x53, 0x61, 0x63, 0x6b, 0x65,
- 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x6f, 0x73, 0x74, 0x18, 0x0f,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x63, 0x70, 0x69, 0x4c, 0x6f, 0x73, 0x74, 0x12, 0x21,
- 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x10,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e,
- 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x66, 0x61, 0x63, 0x6b, 0x65, 0x74,
- 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x46, 0x61, 0x63,
- 0x6b, 0x65, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73,
- 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28,
- 0x0d, 0x52, 0x10, 0x74, 0x63, 0x70, 0x69, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53,
- 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73, 0x74,
- 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x0f, 0x74, 0x63, 0x70, 0x69, 0x4c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x53, 0x65, 0x6e, 0x74,
- 0x12, 0x2d, 0x0a, 0x13, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x61,
- 0x74, 0x61, 0x5f, 0x72, 0x65, 0x63, 0x76, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x74,
- 0x63, 0x70, 0x69, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x63, 0x76, 0x12,
- 0x2b, 0x0a, 0x12, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x6b,
- 0x5f, 0x72, 0x65, 0x63, 0x76, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63, 0x70,
- 0x69, 0x4c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x76, 0x12, 0x1b, 0x0a, 0x09,
- 0x74, 0x63, 0x70, 0x69, 0x5f, 0x70, 0x6d, 0x74, 0x75, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x08, 0x74, 0x63, 0x70, 0x69, 0x50, 0x6d, 0x74, 0x75, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x63, 0x70,
- 0x69, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x73, 0x73, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x18, 0x17,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63, 0x70, 0x69, 0x52, 0x63, 0x76, 0x53, 0x73, 0x74,
- 0x68, 0x72, 0x65, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x74,
- 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x63, 0x70, 0x69, 0x52, 0x74, 0x74,
- 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x74, 0x74, 0x76, 0x61, 0x72, 0x18,
- 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x52, 0x74, 0x74, 0x76, 0x61,
- 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f, 0x73, 0x73,
- 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63,
- 0x70, 0x69, 0x53, 0x6e, 0x64, 0x53, 0x73, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x12, 0x22, 0x0a,
- 0x0d, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f, 0x63, 0x77, 0x6e, 0x64, 0x18, 0x1b,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x53, 0x6e, 0x64, 0x43, 0x77, 0x6e,
- 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x61, 0x64, 0x76, 0x6d, 0x73, 0x73,
- 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x41, 0x64, 0x76, 0x6d,
- 0x73, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x64,
- 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x63, 0x70,
- 0x69, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x62, 0x0a, 0x15, 0x47,
- 0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1f,
- 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22,
- 0x5f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x10,
- 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64,
- 0x22, 0x5c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a,
- 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x58,
- 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x2f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x11, 0x47, 0x65, 0x74,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30,
- 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x22, 0x7f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f, 0x63,
- 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64,
- 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x73, 0x22, 0x68, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f,
- 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a,
- 0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x09,
- 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x32, 0x0a, 0x11, 0x47,
- 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22,
- 0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x3b, 0x0a, 0x14, 0x47, 0x65,
- 0x74, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x63, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x75,
- 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x49,
- 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12,
- 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x45, 0x0a, 0x11, 0x47, 0x65, 0x74,
- 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30,
- 0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
- 0x32, 0x9a, 0x05, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x12, 0x63, 0x0a,
- 0x0e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12,
- 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54,
- 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
- 0x12, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x47,
- 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x69, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f,
- 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f, 0x63,
- 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0a,
- 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x23, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x6f,
- 0x63, 0x6b, 0x65, 0x74, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65,
- 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53,
- 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x58, 0x0a,
- 0x13, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x7a, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x50, 0x72,
- 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
- 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x7a, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_channelz_v1_channelz_proto_rawDescOnce sync.Once
- file_grpc_channelz_v1_channelz_proto_rawDescData = file_grpc_channelz_v1_channelz_proto_rawDesc
-)
-
-func file_grpc_channelz_v1_channelz_proto_rawDescGZIP() []byte {
- file_grpc_channelz_v1_channelz_proto_rawDescOnce.Do(func() {
- file_grpc_channelz_v1_channelz_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_channelz_v1_channelz_proto_rawDescData)
- })
- return file_grpc_channelz_v1_channelz_proto_rawDescData
-}
-
-var file_grpc_channelz_v1_channelz_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_grpc_channelz_v1_channelz_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
-var file_grpc_channelz_v1_channelz_proto_goTypes = []interface{}{
- (ChannelConnectivityState_State)(0), // 0: grpc.channelz.v1.ChannelConnectivityState.State
- (ChannelTraceEvent_Severity)(0), // 1: grpc.channelz.v1.ChannelTraceEvent.Severity
- (*Channel)(nil), // 2: grpc.channelz.v1.Channel
- (*Subchannel)(nil), // 3: grpc.channelz.v1.Subchannel
- (*ChannelConnectivityState)(nil), // 4: grpc.channelz.v1.ChannelConnectivityState
- (*ChannelData)(nil), // 5: grpc.channelz.v1.ChannelData
- (*ChannelTraceEvent)(nil), // 6: grpc.channelz.v1.ChannelTraceEvent
- (*ChannelTrace)(nil), // 7: grpc.channelz.v1.ChannelTrace
- (*ChannelRef)(nil), // 8: grpc.channelz.v1.ChannelRef
- (*SubchannelRef)(nil), // 9: grpc.channelz.v1.SubchannelRef
- (*SocketRef)(nil), // 10: grpc.channelz.v1.SocketRef
- (*ServerRef)(nil), // 11: grpc.channelz.v1.ServerRef
- (*Server)(nil), // 12: grpc.channelz.v1.Server
- (*ServerData)(nil), // 13: grpc.channelz.v1.ServerData
- (*Socket)(nil), // 14: grpc.channelz.v1.Socket
- (*SocketData)(nil), // 15: grpc.channelz.v1.SocketData
- (*Address)(nil), // 16: grpc.channelz.v1.Address
- (*Security)(nil), // 17: grpc.channelz.v1.Security
- (*SocketOption)(nil), // 18: grpc.channelz.v1.SocketOption
- (*SocketOptionTimeout)(nil), // 19: grpc.channelz.v1.SocketOptionTimeout
- (*SocketOptionLinger)(nil), // 20: grpc.channelz.v1.SocketOptionLinger
- (*SocketOptionTcpInfo)(nil), // 21: grpc.channelz.v1.SocketOptionTcpInfo
- (*GetTopChannelsRequest)(nil), // 22: grpc.channelz.v1.GetTopChannelsRequest
- (*GetTopChannelsResponse)(nil), // 23: grpc.channelz.v1.GetTopChannelsResponse
- (*GetServersRequest)(nil), // 24: grpc.channelz.v1.GetServersRequest
- (*GetServersResponse)(nil), // 25: grpc.channelz.v1.GetServersResponse
- (*GetServerRequest)(nil), // 26: grpc.channelz.v1.GetServerRequest
- (*GetServerResponse)(nil), // 27: grpc.channelz.v1.GetServerResponse
- (*GetServerSocketsRequest)(nil), // 28: grpc.channelz.v1.GetServerSocketsRequest
- (*GetServerSocketsResponse)(nil), // 29: grpc.channelz.v1.GetServerSocketsResponse
- (*GetChannelRequest)(nil), // 30: grpc.channelz.v1.GetChannelRequest
- (*GetChannelResponse)(nil), // 31: grpc.channelz.v1.GetChannelResponse
- (*GetSubchannelRequest)(nil), // 32: grpc.channelz.v1.GetSubchannelRequest
- (*GetSubchannelResponse)(nil), // 33: grpc.channelz.v1.GetSubchannelResponse
- (*GetSocketRequest)(nil), // 34: grpc.channelz.v1.GetSocketRequest
- (*GetSocketResponse)(nil), // 35: grpc.channelz.v1.GetSocketResponse
- (*Address_TcpIpAddress)(nil), // 36: grpc.channelz.v1.Address.TcpIpAddress
- (*Address_UdsAddress)(nil), // 37: grpc.channelz.v1.Address.UdsAddress
- (*Address_OtherAddress)(nil), // 38: grpc.channelz.v1.Address.OtherAddress
- (*Security_Tls)(nil), // 39: grpc.channelz.v1.Security.Tls
- (*Security_OtherSecurity)(nil), // 40: grpc.channelz.v1.Security.OtherSecurity
- (*timestamppb.Timestamp)(nil), // 41: google.protobuf.Timestamp
- (*wrapperspb.Int64Value)(nil), // 42: google.protobuf.Int64Value
- (*anypb.Any)(nil), // 43: google.protobuf.Any
- (*durationpb.Duration)(nil), // 44: google.protobuf.Duration
-}
-var file_grpc_channelz_v1_channelz_proto_depIdxs = []int32{
- 8, // 0: grpc.channelz.v1.Channel.ref:type_name -> grpc.channelz.v1.ChannelRef
- 5, // 1: grpc.channelz.v1.Channel.data:type_name -> grpc.channelz.v1.ChannelData
- 8, // 2: grpc.channelz.v1.Channel.channel_ref:type_name -> grpc.channelz.v1.ChannelRef
- 9, // 3: grpc.channelz.v1.Channel.subchannel_ref:type_name -> grpc.channelz.v1.SubchannelRef
- 10, // 4: grpc.channelz.v1.Channel.socket_ref:type_name -> grpc.channelz.v1.SocketRef
- 9, // 5: grpc.channelz.v1.Subchannel.ref:type_name -> grpc.channelz.v1.SubchannelRef
- 5, // 6: grpc.channelz.v1.Subchannel.data:type_name -> grpc.channelz.v1.ChannelData
- 8, // 7: grpc.channelz.v1.Subchannel.channel_ref:type_name -> grpc.channelz.v1.ChannelRef
- 9, // 8: grpc.channelz.v1.Subchannel.subchannel_ref:type_name -> grpc.channelz.v1.SubchannelRef
- 10, // 9: grpc.channelz.v1.Subchannel.socket_ref:type_name -> grpc.channelz.v1.SocketRef
- 0, // 10: grpc.channelz.v1.ChannelConnectivityState.state:type_name -> grpc.channelz.v1.ChannelConnectivityState.State
- 4, // 11: grpc.channelz.v1.ChannelData.state:type_name -> grpc.channelz.v1.ChannelConnectivityState
- 7, // 12: grpc.channelz.v1.ChannelData.trace:type_name -> grpc.channelz.v1.ChannelTrace
- 41, // 13: grpc.channelz.v1.ChannelData.last_call_started_timestamp:type_name -> google.protobuf.Timestamp
- 1, // 14: grpc.channelz.v1.ChannelTraceEvent.severity:type_name -> grpc.channelz.v1.ChannelTraceEvent.Severity
- 41, // 15: grpc.channelz.v1.ChannelTraceEvent.timestamp:type_name -> google.protobuf.Timestamp
- 8, // 16: grpc.channelz.v1.ChannelTraceEvent.channel_ref:type_name -> grpc.channelz.v1.ChannelRef
- 9, // 17: grpc.channelz.v1.ChannelTraceEvent.subchannel_ref:type_name -> grpc.channelz.v1.SubchannelRef
- 41, // 18: grpc.channelz.v1.ChannelTrace.creation_timestamp:type_name -> google.protobuf.Timestamp
- 6, // 19: grpc.channelz.v1.ChannelTrace.events:type_name -> grpc.channelz.v1.ChannelTraceEvent
- 11, // 20: grpc.channelz.v1.Server.ref:type_name -> grpc.channelz.v1.ServerRef
- 13, // 21: grpc.channelz.v1.Server.data:type_name -> grpc.channelz.v1.ServerData
- 10, // 22: grpc.channelz.v1.Server.listen_socket:type_name -> grpc.channelz.v1.SocketRef
- 7, // 23: grpc.channelz.v1.ServerData.trace:type_name -> grpc.channelz.v1.ChannelTrace
- 41, // 24: grpc.channelz.v1.ServerData.last_call_started_timestamp:type_name -> google.protobuf.Timestamp
- 10, // 25: grpc.channelz.v1.Socket.ref:type_name -> grpc.channelz.v1.SocketRef
- 15, // 26: grpc.channelz.v1.Socket.data:type_name -> grpc.channelz.v1.SocketData
- 16, // 27: grpc.channelz.v1.Socket.local:type_name -> grpc.channelz.v1.Address
- 16, // 28: grpc.channelz.v1.Socket.remote:type_name -> grpc.channelz.v1.Address
- 17, // 29: grpc.channelz.v1.Socket.security:type_name -> grpc.channelz.v1.Security
- 41, // 30: grpc.channelz.v1.SocketData.last_local_stream_created_timestamp:type_name -> google.protobuf.Timestamp
- 41, // 31: grpc.channelz.v1.SocketData.last_remote_stream_created_timestamp:type_name -> google.protobuf.Timestamp
- 41, // 32: grpc.channelz.v1.SocketData.last_message_sent_timestamp:type_name -> google.protobuf.Timestamp
- 41, // 33: grpc.channelz.v1.SocketData.last_message_received_timestamp:type_name -> google.protobuf.Timestamp
- 42, // 34: grpc.channelz.v1.SocketData.local_flow_control_window:type_name -> google.protobuf.Int64Value
- 42, // 35: grpc.channelz.v1.SocketData.remote_flow_control_window:type_name -> google.protobuf.Int64Value
- 18, // 36: grpc.channelz.v1.SocketData.option:type_name -> grpc.channelz.v1.SocketOption
- 36, // 37: grpc.channelz.v1.Address.tcpip_address:type_name -> grpc.channelz.v1.Address.TcpIpAddress
- 37, // 38: grpc.channelz.v1.Address.uds_address:type_name -> grpc.channelz.v1.Address.UdsAddress
- 38, // 39: grpc.channelz.v1.Address.other_address:type_name -> grpc.channelz.v1.Address.OtherAddress
- 39, // 40: grpc.channelz.v1.Security.tls:type_name -> grpc.channelz.v1.Security.Tls
- 40, // 41: grpc.channelz.v1.Security.other:type_name -> grpc.channelz.v1.Security.OtherSecurity
- 43, // 42: grpc.channelz.v1.SocketOption.additional:type_name -> google.protobuf.Any
- 44, // 43: grpc.channelz.v1.SocketOptionTimeout.duration:type_name -> google.protobuf.Duration
- 44, // 44: grpc.channelz.v1.SocketOptionLinger.duration:type_name -> google.protobuf.Duration
- 2, // 45: grpc.channelz.v1.GetTopChannelsResponse.channel:type_name -> grpc.channelz.v1.Channel
- 12, // 46: grpc.channelz.v1.GetServersResponse.server:type_name -> grpc.channelz.v1.Server
- 12, // 47: grpc.channelz.v1.GetServerResponse.server:type_name -> grpc.channelz.v1.Server
- 10, // 48: grpc.channelz.v1.GetServerSocketsResponse.socket_ref:type_name -> grpc.channelz.v1.SocketRef
- 2, // 49: grpc.channelz.v1.GetChannelResponse.channel:type_name -> grpc.channelz.v1.Channel
- 3, // 50: grpc.channelz.v1.GetSubchannelResponse.subchannel:type_name -> grpc.channelz.v1.Subchannel
- 14, // 51: grpc.channelz.v1.GetSocketResponse.socket:type_name -> grpc.channelz.v1.Socket
- 43, // 52: grpc.channelz.v1.Address.OtherAddress.value:type_name -> google.protobuf.Any
- 43, // 53: grpc.channelz.v1.Security.OtherSecurity.value:type_name -> google.protobuf.Any
- 22, // 54: grpc.channelz.v1.Channelz.GetTopChannels:input_type -> grpc.channelz.v1.GetTopChannelsRequest
- 24, // 55: grpc.channelz.v1.Channelz.GetServers:input_type -> grpc.channelz.v1.GetServersRequest
- 26, // 56: grpc.channelz.v1.Channelz.GetServer:input_type -> grpc.channelz.v1.GetServerRequest
- 28, // 57: grpc.channelz.v1.Channelz.GetServerSockets:input_type -> grpc.channelz.v1.GetServerSocketsRequest
- 30, // 58: grpc.channelz.v1.Channelz.GetChannel:input_type -> grpc.channelz.v1.GetChannelRequest
- 32, // 59: grpc.channelz.v1.Channelz.GetSubchannel:input_type -> grpc.channelz.v1.GetSubchannelRequest
- 34, // 60: grpc.channelz.v1.Channelz.GetSocket:input_type -> grpc.channelz.v1.GetSocketRequest
- 23, // 61: grpc.channelz.v1.Channelz.GetTopChannels:output_type -> grpc.channelz.v1.GetTopChannelsResponse
- 25, // 62: grpc.channelz.v1.Channelz.GetServers:output_type -> grpc.channelz.v1.GetServersResponse
- 27, // 63: grpc.channelz.v1.Channelz.GetServer:output_type -> grpc.channelz.v1.GetServerResponse
- 29, // 64: grpc.channelz.v1.Channelz.GetServerSockets:output_type -> grpc.channelz.v1.GetServerSocketsResponse
- 31, // 65: grpc.channelz.v1.Channelz.GetChannel:output_type -> grpc.channelz.v1.GetChannelResponse
- 33, // 66: grpc.channelz.v1.Channelz.GetSubchannel:output_type -> grpc.channelz.v1.GetSubchannelResponse
- 35, // 67: grpc.channelz.v1.Channelz.GetSocket:output_type -> grpc.channelz.v1.GetSocketResponse
- 61, // [61:68] is the sub-list for method output_type
- 54, // [54:61] is the sub-list for method input_type
- 54, // [54:54] is the sub-list for extension type_name
- 54, // [54:54] is the sub-list for extension extendee
- 0, // [0:54] is the sub-list for field type_name
-}
-
-func init() { file_grpc_channelz_v1_channelz_proto_init() }
-func file_grpc_channelz_v1_channelz_proto_init() {
- if File_grpc_channelz_v1_channelz_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_channelz_v1_channelz_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Channel); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Subchannel); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChannelConnectivityState); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChannelData); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChannelTraceEvent); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChannelTrace); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChannelRef); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubchannelRef); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SocketRef); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerRef); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Server); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerData); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Socket); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SocketData); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Address); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Security); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SocketOption); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SocketOptionTimeout); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SocketOptionLinger); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SocketOptionTcpInfo); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetTopChannelsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetTopChannelsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetServersRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetServersResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetServerRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetServerResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetServerSocketsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetServerSocketsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetChannelRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetChannelResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetSubchannelRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetSubchannelResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetSocketRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetSocketResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Address_TcpIpAddress); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Address_UdsAddress); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Address_OtherAddress); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Security_Tls); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Security_OtherSecurity); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[4].OneofWrappers = []interface{}{
- (*ChannelTraceEvent_ChannelRef)(nil),
- (*ChannelTraceEvent_SubchannelRef)(nil),
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[14].OneofWrappers = []interface{}{
- (*Address_TcpipAddress)(nil),
- (*Address_UdsAddress_)(nil),
- (*Address_OtherAddress_)(nil),
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[15].OneofWrappers = []interface{}{
- (*Security_Tls_)(nil),
- (*Security_Other)(nil),
- }
- file_grpc_channelz_v1_channelz_proto_msgTypes[37].OneofWrappers = []interface{}{
- (*Security_Tls_StandardName)(nil),
- (*Security_Tls_OtherName)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_channelz_v1_channelz_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 39,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_channelz_v1_channelz_proto_goTypes,
- DependencyIndexes: file_grpc_channelz_v1_channelz_proto_depIdxs,
- EnumInfos: file_grpc_channelz_v1_channelz_proto_enumTypes,
- MessageInfos: file_grpc_channelz_v1_channelz_proto_msgTypes,
- }.Build()
- File_grpc_channelz_v1_channelz_proto = out.File
- file_grpc_channelz_v1_channelz_proto_rawDesc = nil
- file_grpc_channelz_v1_channelz_proto_goTypes = nil
- file_grpc_channelz_v1_channelz_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/core/stats.pb.go b/gen/proto/grpc/core/stats.pb.go
deleted file mode 100644
index 01c2947..0000000
--- a/gen/proto/grpc/core/stats.pb.go
+++ /dev/null
@@ -1,410 +0,0 @@
-// Copyright 2017 gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/core/stats.proto
-
-package core
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type Bucket struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Start float64 `protobuf:"fixed64,1,opt,name=start,proto3" json:"start,omitempty"`
- Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
-}
-
-func (x *Bucket) Reset() {
- *x = Bucket{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_core_stats_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Bucket) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Bucket) ProtoMessage() {}
-
-func (x *Bucket) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_core_stats_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Bucket.ProtoReflect.Descriptor instead.
-func (*Bucket) Descriptor() ([]byte, []int) {
- return file_grpc_core_stats_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Bucket) GetStart() float64 {
- if x != nil {
- return x.Start
- }
- return 0
-}
-
-func (x *Bucket) GetCount() uint64 {
- if x != nil {
- return x.Count
- }
- return 0
-}
-
-type Histogram struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Buckets []*Bucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"`
-}
-
-func (x *Histogram) Reset() {
- *x = Histogram{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_core_stats_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Histogram) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Histogram) ProtoMessage() {}
-
-func (x *Histogram) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_core_stats_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Histogram.ProtoReflect.Descriptor instead.
-func (*Histogram) Descriptor() ([]byte, []int) {
- return file_grpc_core_stats_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Histogram) GetBuckets() []*Bucket {
- if x != nil {
- return x.Buckets
- }
- return nil
-}
-
-type Metric struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Types that are assignable to Value:
- // *Metric_Count
- // *Metric_Histogram
- Value isMetric_Value `protobuf_oneof:"value"`
-}
-
-func (x *Metric) Reset() {
- *x = Metric{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_core_stats_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Metric) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Metric) ProtoMessage() {}
-
-func (x *Metric) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_core_stats_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Metric.ProtoReflect.Descriptor instead.
-func (*Metric) Descriptor() ([]byte, []int) {
- return file_grpc_core_stats_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Metric) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (m *Metric) GetValue() isMetric_Value {
- if m != nil {
- return m.Value
- }
- return nil
-}
-
-func (x *Metric) GetCount() uint64 {
- if x, ok := x.GetValue().(*Metric_Count); ok {
- return x.Count
- }
- return 0
-}
-
-func (x *Metric) GetHistogram() *Histogram {
- if x, ok := x.GetValue().(*Metric_Histogram); ok {
- return x.Histogram
- }
- return nil
-}
-
-type isMetric_Value interface {
- isMetric_Value()
-}
-
-type Metric_Count struct {
- Count uint64 `protobuf:"varint,10,opt,name=count,proto3,oneof"`
-}
-
-type Metric_Histogram struct {
- Histogram *Histogram `protobuf:"bytes,11,opt,name=histogram,proto3,oneof"`
-}
-
-func (*Metric_Count) isMetric_Value() {}
-
-func (*Metric_Histogram) isMetric_Value() {}
-
-type Stats struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Metrics []*Metric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"`
-}
-
-func (x *Stats) Reset() {
- *x = Stats{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_core_stats_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Stats) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Stats) ProtoMessage() {}
-
-func (x *Stats) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_core_stats_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Stats.ProtoReflect.Descriptor instead.
-func (*Stats) Descriptor() ([]byte, []int) {
- return file_grpc_core_stats_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Stats) GetMetrics() []*Metric {
- if x != nil {
- return x.Metrics
- }
- return nil
-}
-
-var File_grpc_core_stats_proto protoreflect.FileDescriptor
-
-var file_grpc_core_stats_proto_rawDesc = []byte{
- 0x0a, 0x15, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74,
- 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f,
- 0x72, 0x65, 0x22, 0x34, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x38, 0x0a, 0x09, 0x48, 0x69, 0x73, 0x74,
- 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x2b, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f,
- 0x72, 0x65, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65,
- 0x74, 0x73, 0x22, 0x73, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x16, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48,
- 0x00, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x68, 0x69, 0x73, 0x74,
- 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61,
- 0x6d, 0x48, 0x00, 0x52, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x07,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x34, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73,
- 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x2e, 0x5a,
- 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74,
- 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_core_stats_proto_rawDescOnce sync.Once
- file_grpc_core_stats_proto_rawDescData = file_grpc_core_stats_proto_rawDesc
-)
-
-func file_grpc_core_stats_proto_rawDescGZIP() []byte {
- file_grpc_core_stats_proto_rawDescOnce.Do(func() {
- file_grpc_core_stats_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_core_stats_proto_rawDescData)
- })
- return file_grpc_core_stats_proto_rawDescData
-}
-
-var file_grpc_core_stats_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_grpc_core_stats_proto_goTypes = []interface{}{
- (*Bucket)(nil), // 0: grpc.core.Bucket
- (*Histogram)(nil), // 1: grpc.core.Histogram
- (*Metric)(nil), // 2: grpc.core.Metric
- (*Stats)(nil), // 3: grpc.core.Stats
-}
-var file_grpc_core_stats_proto_depIdxs = []int32{
- 0, // 0: grpc.core.Histogram.buckets:type_name -> grpc.core.Bucket
- 1, // 1: grpc.core.Metric.histogram:type_name -> grpc.core.Histogram
- 2, // 2: grpc.core.Stats.metrics:type_name -> grpc.core.Metric
- 3, // [3:3] is the sub-list for method output_type
- 3, // [3:3] is the sub-list for method input_type
- 3, // [3:3] is the sub-list for extension type_name
- 3, // [3:3] is the sub-list for extension extendee
- 0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_grpc_core_stats_proto_init() }
-func file_grpc_core_stats_proto_init() {
- if File_grpc_core_stats_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_core_stats_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Bucket); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_core_stats_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Histogram); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_core_stats_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Metric); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_core_stats_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Stats); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_core_stats_proto_msgTypes[2].OneofWrappers = []interface{}{
- (*Metric_Count)(nil),
- (*Metric_Histogram)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_core_stats_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 4,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_core_stats_proto_goTypes,
- DependencyIndexes: file_grpc_core_stats_proto_depIdxs,
- MessageInfos: file_grpc_core_stats_proto_msgTypes,
- }.Build()
- File_grpc_core_stats_proto = out.File
- file_grpc_core_stats_proto_rawDesc = nil
- file_grpc_core_stats_proto_goTypes = nil
- file_grpc_core_stats_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/gcp/altscontext.pb.go b/gen/proto/grpc/gcp/altscontext.pb.go
deleted file mode 100644
index ae9529b..0000000
--- a/gen/proto/grpc/gcp/altscontext.pb.go
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/altscontext.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/gcp/altscontext.proto
-
-package grpc_gcp
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type AltsContext struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The application protocol negotiated for this connection.
- ApplicationProtocol string `protobuf:"bytes,1,opt,name=application_protocol,json=applicationProtocol,proto3" json:"application_protocol,omitempty"`
- // The record protocol negotiated for this connection.
- RecordProtocol string `protobuf:"bytes,2,opt,name=record_protocol,json=recordProtocol,proto3" json:"record_protocol,omitempty"`
- // The security level of the created secure channel.
- SecurityLevel SecurityLevel `protobuf:"varint,3,opt,name=security_level,json=securityLevel,proto3,enum=grpc.gcp.SecurityLevel" json:"security_level,omitempty"`
- // The peer service account.
- PeerServiceAccount string `protobuf:"bytes,4,opt,name=peer_service_account,json=peerServiceAccount,proto3" json:"peer_service_account,omitempty"`
- // The local service account.
- LocalServiceAccount string `protobuf:"bytes,5,opt,name=local_service_account,json=localServiceAccount,proto3" json:"local_service_account,omitempty"`
- // The RPC protocol versions supported by the peer.
- PeerRpcVersions *RpcProtocolVersions `protobuf:"bytes,6,opt,name=peer_rpc_versions,json=peerRpcVersions,proto3" json:"peer_rpc_versions,omitempty"`
- // Additional attributes of the peer.
- PeerAttributes map[string]string `protobuf:"bytes,7,rep,name=peer_attributes,json=peerAttributes,proto3" json:"peer_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *AltsContext) Reset() {
- *x = AltsContext{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_altscontext_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AltsContext) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AltsContext) ProtoMessage() {}
-
-func (x *AltsContext) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_altscontext_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AltsContext.ProtoReflect.Descriptor instead.
-func (*AltsContext) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_altscontext_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *AltsContext) GetApplicationProtocol() string {
- if x != nil {
- return x.ApplicationProtocol
- }
- return ""
-}
-
-func (x *AltsContext) GetRecordProtocol() string {
- if x != nil {
- return x.RecordProtocol
- }
- return ""
-}
-
-func (x *AltsContext) GetSecurityLevel() SecurityLevel {
- if x != nil {
- return x.SecurityLevel
- }
- return SecurityLevel_SECURITY_NONE
-}
-
-func (x *AltsContext) GetPeerServiceAccount() string {
- if x != nil {
- return x.PeerServiceAccount
- }
- return ""
-}
-
-func (x *AltsContext) GetLocalServiceAccount() string {
- if x != nil {
- return x.LocalServiceAccount
- }
- return ""
-}
-
-func (x *AltsContext) GetPeerRpcVersions() *RpcProtocolVersions {
- if x != nil {
- return x.PeerRpcVersions
- }
- return nil
-}
-
-func (x *AltsContext) GetPeerAttributes() map[string]string {
- if x != nil {
- return x.PeerAttributes
- }
- return nil
-}
-
-var File_grpc_gcp_altscontext_proto protoreflect.FileDescriptor
-
-var file_grpc_gcp_altscontext_proto_rawDesc = []byte{
- 0x0a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x63,
- 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x1a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70,
- 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72,
- 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x22, 0xf1, 0x03, 0x0a, 0x0b, 0x41, 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x12, 0x31, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
- 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65,
- 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3e, 0x0a, 0x0e,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
- 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, 0x73,
- 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x14,
- 0x70, 0x65, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x65, 0x65, 0x72,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32,
- 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
- 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c,
- 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x65,
- 0x65, 0x72, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a,
- 0x0f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
- 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
- 0x70, 0x2e, 0x41, 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x50, 0x65,
- 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0e, 0x70, 0x65, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
- 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x65, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
- 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x42, 0x6c, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x10, 0x41,
- 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
- 0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
- 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
- 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67,
- 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_gcp_altscontext_proto_rawDescOnce sync.Once
- file_grpc_gcp_altscontext_proto_rawDescData = file_grpc_gcp_altscontext_proto_rawDesc
-)
-
-func file_grpc_gcp_altscontext_proto_rawDescGZIP() []byte {
- file_grpc_gcp_altscontext_proto_rawDescOnce.Do(func() {
- file_grpc_gcp_altscontext_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_gcp_altscontext_proto_rawDescData)
- })
- return file_grpc_gcp_altscontext_proto_rawDescData
-}
-
-var file_grpc_gcp_altscontext_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_grpc_gcp_altscontext_proto_goTypes = []interface{}{
- (*AltsContext)(nil), // 0: grpc.gcp.AltsContext
- nil, // 1: grpc.gcp.AltsContext.PeerAttributesEntry
- (SecurityLevel)(0), // 2: grpc.gcp.SecurityLevel
- (*RpcProtocolVersions)(nil), // 3: grpc.gcp.RpcProtocolVersions
-}
-var file_grpc_gcp_altscontext_proto_depIdxs = []int32{
- 2, // 0: grpc.gcp.AltsContext.security_level:type_name -> grpc.gcp.SecurityLevel
- 3, // 1: grpc.gcp.AltsContext.peer_rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
- 1, // 2: grpc.gcp.AltsContext.peer_attributes:type_name -> grpc.gcp.AltsContext.PeerAttributesEntry
- 3, // [3:3] is the sub-list for method output_type
- 3, // [3:3] is the sub-list for method input_type
- 3, // [3:3] is the sub-list for extension type_name
- 3, // [3:3] is the sub-list for extension extendee
- 0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_grpc_gcp_altscontext_proto_init() }
-func file_grpc_gcp_altscontext_proto_init() {
- if File_grpc_gcp_altscontext_proto != nil {
- return
- }
- file_grpc_gcp_transport_security_common_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_grpc_gcp_altscontext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AltsContext); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_gcp_altscontext_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 2,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_gcp_altscontext_proto_goTypes,
- DependencyIndexes: file_grpc_gcp_altscontext_proto_depIdxs,
- MessageInfos: file_grpc_gcp_altscontext_proto_msgTypes,
- }.Build()
- File_grpc_gcp_altscontext_proto = out.File
- file_grpc_gcp_altscontext_proto_rawDesc = nil
- file_grpc_gcp_altscontext_proto_goTypes = nil
- file_grpc_gcp_altscontext_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/gcp/handshaker.pb.go b/gen/proto/grpc/gcp/handshaker.pb.go
deleted file mode 100644
index 2755d58..0000000
--- a/gen/proto/grpc/gcp/handshaker.pb.go
+++ /dev/null
@@ -1,1421 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/handshaker.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/gcp/handshaker.proto
-
-package grpc_gcp
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type HandshakeProtocol int32
-
-const (
- // Default value.
- HandshakeProtocol_HANDSHAKE_PROTOCOL_UNSPECIFIED HandshakeProtocol = 0
- // TLS handshake protocol.
- HandshakeProtocol_TLS HandshakeProtocol = 1
- // Application Layer Transport Security handshake protocol.
- HandshakeProtocol_ALTS HandshakeProtocol = 2
-)
-
-// Enum value maps for HandshakeProtocol.
-var (
- HandshakeProtocol_name = map[int32]string{
- 0: "HANDSHAKE_PROTOCOL_UNSPECIFIED",
- 1: "TLS",
- 2: "ALTS",
- }
- HandshakeProtocol_value = map[string]int32{
- "HANDSHAKE_PROTOCOL_UNSPECIFIED": 0,
- "TLS": 1,
- "ALTS": 2,
- }
-)
-
-func (x HandshakeProtocol) Enum() *HandshakeProtocol {
- p := new(HandshakeProtocol)
- *p = x
- return p
-}
-
-func (x HandshakeProtocol) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (HandshakeProtocol) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_gcp_handshaker_proto_enumTypes[0].Descriptor()
-}
-
-func (HandshakeProtocol) Type() protoreflect.EnumType {
- return &file_grpc_gcp_handshaker_proto_enumTypes[0]
-}
-
-func (x HandshakeProtocol) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use HandshakeProtocol.Descriptor instead.
-func (HandshakeProtocol) EnumDescriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{0}
-}
-
-type NetworkProtocol int32
-
-const (
- NetworkProtocol_NETWORK_PROTOCOL_UNSPECIFIED NetworkProtocol = 0
- NetworkProtocol_TCP NetworkProtocol = 1
- NetworkProtocol_UDP NetworkProtocol = 2
-)
-
-// Enum value maps for NetworkProtocol.
-var (
- NetworkProtocol_name = map[int32]string{
- 0: "NETWORK_PROTOCOL_UNSPECIFIED",
- 1: "TCP",
- 2: "UDP",
- }
- NetworkProtocol_value = map[string]int32{
- "NETWORK_PROTOCOL_UNSPECIFIED": 0,
- "TCP": 1,
- "UDP": 2,
- }
-)
-
-func (x NetworkProtocol) Enum() *NetworkProtocol {
- p := new(NetworkProtocol)
- *p = x
- return p
-}
-
-func (x NetworkProtocol) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (NetworkProtocol) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_gcp_handshaker_proto_enumTypes[1].Descriptor()
-}
-
-func (NetworkProtocol) Type() protoreflect.EnumType {
- return &file_grpc_gcp_handshaker_proto_enumTypes[1]
-}
-
-func (x NetworkProtocol) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use NetworkProtocol.Descriptor instead.
-func (NetworkProtocol) EnumDescriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{1}
-}
-
-type Endpoint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // IP address. It should contain an IPv4 or IPv6 string literal, e.g.
- // "192.168.0.1" or "2001:db8::1".
- IpAddress string `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
- // Port number.
- Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
- // Network protocol (e.g., TCP, UDP) associated with this endpoint.
- Protocol NetworkProtocol `protobuf:"varint,3,opt,name=protocol,proto3,enum=grpc.gcp.NetworkProtocol" json:"protocol,omitempty"`
-}
-
-func (x *Endpoint) Reset() {
- *x = Endpoint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Endpoint) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Endpoint) ProtoMessage() {}
-
-func (x *Endpoint) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Endpoint.ProtoReflect.Descriptor instead.
-func (*Endpoint) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Endpoint) GetIpAddress() string {
- if x != nil {
- return x.IpAddress
- }
- return ""
-}
-
-func (x *Endpoint) GetPort() int32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *Endpoint) GetProtocol() NetworkProtocol {
- if x != nil {
- return x.Protocol
- }
- return NetworkProtocol_NETWORK_PROTOCOL_UNSPECIFIED
-}
-
-type Identity struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to IdentityOneof:
- // *Identity_ServiceAccount
- // *Identity_Hostname
- IdentityOneof isIdentity_IdentityOneof `protobuf_oneof:"identity_oneof"`
- // Additional attributes of the identity.
- Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Identity) Reset() {
- *x = Identity{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Identity) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Identity) ProtoMessage() {}
-
-func (x *Identity) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Identity.ProtoReflect.Descriptor instead.
-func (*Identity) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{1}
-}
-
-func (m *Identity) GetIdentityOneof() isIdentity_IdentityOneof {
- if m != nil {
- return m.IdentityOneof
- }
- return nil
-}
-
-func (x *Identity) GetServiceAccount() string {
- if x, ok := x.GetIdentityOneof().(*Identity_ServiceAccount); ok {
- return x.ServiceAccount
- }
- return ""
-}
-
-func (x *Identity) GetHostname() string {
- if x, ok := x.GetIdentityOneof().(*Identity_Hostname); ok {
- return x.Hostname
- }
- return ""
-}
-
-func (x *Identity) GetAttributes() map[string]string {
- if x != nil {
- return x.Attributes
- }
- return nil
-}
-
-type isIdentity_IdentityOneof interface {
- isIdentity_IdentityOneof()
-}
-
-type Identity_ServiceAccount struct {
- // Service account of a connection endpoint.
- ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3,oneof"`
-}
-
-type Identity_Hostname struct {
- // Hostname of a connection endpoint.
- Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3,oneof"`
-}
-
-func (*Identity_ServiceAccount) isIdentity_IdentityOneof() {}
-
-func (*Identity_Hostname) isIdentity_IdentityOneof() {}
-
-type StartClientHandshakeReq struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Handshake security protocol requested by the client.
- HandshakeSecurityProtocol HandshakeProtocol `protobuf:"varint,1,opt,name=handshake_security_protocol,json=handshakeSecurityProtocol,proto3,enum=grpc.gcp.HandshakeProtocol" json:"handshake_security_protocol,omitempty"`
- // The application protocols supported by the client, e.g., "h2" (for http2),
- // "grpc".
- ApplicationProtocols []string `protobuf:"bytes,2,rep,name=application_protocols,json=applicationProtocols,proto3" json:"application_protocols,omitempty"`
- // The record protocols supported by the client, e.g.,
- // "ALTSRP_GCM_AES128".
- RecordProtocols []string `protobuf:"bytes,3,rep,name=record_protocols,json=recordProtocols,proto3" json:"record_protocols,omitempty"`
- // (Optional) Describes which server identities are acceptable by the client.
- // If target identities are provided and none of them matches the peer
- // identity of the server, handshake will fail.
- TargetIdentities []*Identity `protobuf:"bytes,4,rep,name=target_identities,json=targetIdentities,proto3" json:"target_identities,omitempty"`
- // (Optional) Application may specify a local identity. Otherwise, the
- // handshaker chooses a default local identity.
- LocalIdentity *Identity `protobuf:"bytes,5,opt,name=local_identity,json=localIdentity,proto3" json:"local_identity,omitempty"`
- // (Optional) Local endpoint information of the connection to the server,
- // such as local IP address, port number, and network protocol.
- LocalEndpoint *Endpoint `protobuf:"bytes,6,opt,name=local_endpoint,json=localEndpoint,proto3" json:"local_endpoint,omitempty"`
- // (Optional) Endpoint information of the remote server, such as IP address,
- // port number, and network protocol.
- RemoteEndpoint *Endpoint `protobuf:"bytes,7,opt,name=remote_endpoint,json=remoteEndpoint,proto3" json:"remote_endpoint,omitempty"`
- // (Optional) If target name is provided, a secure naming check is performed
- // to verify that the peer authenticated identity is indeed authorized to run
- // the target name.
- TargetName string `protobuf:"bytes,8,opt,name=target_name,json=targetName,proto3" json:"target_name,omitempty"`
- // (Optional) RPC protocol versions supported by the client.
- RpcVersions *RpcProtocolVersions `protobuf:"bytes,9,opt,name=rpc_versions,json=rpcVersions,proto3" json:"rpc_versions,omitempty"`
- // (Optional) Maximum frame size supported by the client.
- MaxFrameSize uint32 `protobuf:"varint,10,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
-}
-
-func (x *StartClientHandshakeReq) Reset() {
- *x = StartClientHandshakeReq{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StartClientHandshakeReq) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StartClientHandshakeReq) ProtoMessage() {}
-
-func (x *StartClientHandshakeReq) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StartClientHandshakeReq.ProtoReflect.Descriptor instead.
-func (*StartClientHandshakeReq) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *StartClientHandshakeReq) GetHandshakeSecurityProtocol() HandshakeProtocol {
- if x != nil {
- return x.HandshakeSecurityProtocol
- }
- return HandshakeProtocol_HANDSHAKE_PROTOCOL_UNSPECIFIED
-}
-
-func (x *StartClientHandshakeReq) GetApplicationProtocols() []string {
- if x != nil {
- return x.ApplicationProtocols
- }
- return nil
-}
-
-func (x *StartClientHandshakeReq) GetRecordProtocols() []string {
- if x != nil {
- return x.RecordProtocols
- }
- return nil
-}
-
-func (x *StartClientHandshakeReq) GetTargetIdentities() []*Identity {
- if x != nil {
- return x.TargetIdentities
- }
- return nil
-}
-
-func (x *StartClientHandshakeReq) GetLocalIdentity() *Identity {
- if x != nil {
- return x.LocalIdentity
- }
- return nil
-}
-
-func (x *StartClientHandshakeReq) GetLocalEndpoint() *Endpoint {
- if x != nil {
- return x.LocalEndpoint
- }
- return nil
-}
-
-func (x *StartClientHandshakeReq) GetRemoteEndpoint() *Endpoint {
- if x != nil {
- return x.RemoteEndpoint
- }
- return nil
-}
-
-func (x *StartClientHandshakeReq) GetTargetName() string {
- if x != nil {
- return x.TargetName
- }
- return ""
-}
-
-func (x *StartClientHandshakeReq) GetRpcVersions() *RpcProtocolVersions {
- if x != nil {
- return x.RpcVersions
- }
- return nil
-}
-
-func (x *StartClientHandshakeReq) GetMaxFrameSize() uint32 {
- if x != nil {
- return x.MaxFrameSize
- }
- return 0
-}
-
-type ServerHandshakeParameters struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The record protocols supported by the server, e.g.,
- // "ALTSRP_GCM_AES128".
- RecordProtocols []string `protobuf:"bytes,1,rep,name=record_protocols,json=recordProtocols,proto3" json:"record_protocols,omitempty"`
- // (Optional) A list of local identities supported by the server, if
- // specified. Otherwise, the handshaker chooses a default local identity.
- LocalIdentities []*Identity `protobuf:"bytes,2,rep,name=local_identities,json=localIdentities,proto3" json:"local_identities,omitempty"`
-}
-
-func (x *ServerHandshakeParameters) Reset() {
- *x = ServerHandshakeParameters{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerHandshakeParameters) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerHandshakeParameters) ProtoMessage() {}
-
-func (x *ServerHandshakeParameters) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerHandshakeParameters.ProtoReflect.Descriptor instead.
-func (*ServerHandshakeParameters) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ServerHandshakeParameters) GetRecordProtocols() []string {
- if x != nil {
- return x.RecordProtocols
- }
- return nil
-}
-
-func (x *ServerHandshakeParameters) GetLocalIdentities() []*Identity {
- if x != nil {
- return x.LocalIdentities
- }
- return nil
-}
-
-type StartServerHandshakeReq struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The application protocols supported by the server, e.g., "h2" (for http2),
- // "grpc".
- ApplicationProtocols []string `protobuf:"bytes,1,rep,name=application_protocols,json=applicationProtocols,proto3" json:"application_protocols,omitempty"`
- // Handshake parameters (record protocols and local identities supported by
- // the server) mapped by the handshake protocol. Each handshake security
- // protocol (e.g., TLS or ALTS) has its own set of record protocols and local
- // identities. Since protobuf does not support enum as key to the map, the key
- // to handshake_parameters is the integer value of HandshakeProtocol enum.
- HandshakeParameters map[int32]*ServerHandshakeParameters `protobuf:"bytes,2,rep,name=handshake_parameters,json=handshakeParameters,proto3" json:"handshake_parameters,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
- // that the peer's out_frames are split into multiple HandshakReq messages.
- InBytes []byte `protobuf:"bytes,3,opt,name=in_bytes,json=inBytes,proto3" json:"in_bytes,omitempty"`
- // (Optional) Local endpoint information of the connection to the client,
- // such as local IP address, port number, and network protocol.
- LocalEndpoint *Endpoint `protobuf:"bytes,4,opt,name=local_endpoint,json=localEndpoint,proto3" json:"local_endpoint,omitempty"`
- // (Optional) Endpoint information of the remote client, such as IP address,
- // port number, and network protocol.
- RemoteEndpoint *Endpoint `protobuf:"bytes,5,opt,name=remote_endpoint,json=remoteEndpoint,proto3" json:"remote_endpoint,omitempty"`
- // (Optional) RPC protocol versions supported by the server.
- RpcVersions *RpcProtocolVersions `protobuf:"bytes,6,opt,name=rpc_versions,json=rpcVersions,proto3" json:"rpc_versions,omitempty"`
- // (Optional) Maximum frame size supported by the server.
- MaxFrameSize uint32 `protobuf:"varint,7,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
-}
-
-func (x *StartServerHandshakeReq) Reset() {
- *x = StartServerHandshakeReq{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StartServerHandshakeReq) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StartServerHandshakeReq) ProtoMessage() {}
-
-func (x *StartServerHandshakeReq) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StartServerHandshakeReq.ProtoReflect.Descriptor instead.
-func (*StartServerHandshakeReq) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *StartServerHandshakeReq) GetApplicationProtocols() []string {
- if x != nil {
- return x.ApplicationProtocols
- }
- return nil
-}
-
-func (x *StartServerHandshakeReq) GetHandshakeParameters() map[int32]*ServerHandshakeParameters {
- if x != nil {
- return x.HandshakeParameters
- }
- return nil
-}
-
-func (x *StartServerHandshakeReq) GetInBytes() []byte {
- if x != nil {
- return x.InBytes
- }
- return nil
-}
-
-func (x *StartServerHandshakeReq) GetLocalEndpoint() *Endpoint {
- if x != nil {
- return x.LocalEndpoint
- }
- return nil
-}
-
-func (x *StartServerHandshakeReq) GetRemoteEndpoint() *Endpoint {
- if x != nil {
- return x.RemoteEndpoint
- }
- return nil
-}
-
-func (x *StartServerHandshakeReq) GetRpcVersions() *RpcProtocolVersions {
- if x != nil {
- return x.RpcVersions
- }
- return nil
-}
-
-func (x *StartServerHandshakeReq) GetMaxFrameSize() uint32 {
- if x != nil {
- return x.MaxFrameSize
- }
- return 0
-}
-
-type NextHandshakeMessageReq struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
- // that the peer's out_frames are split into multiple NextHandshakerMessageReq
- // messages.
- InBytes []byte `protobuf:"bytes,1,opt,name=in_bytes,json=inBytes,proto3" json:"in_bytes,omitempty"`
-}
-
-func (x *NextHandshakeMessageReq) Reset() {
- *x = NextHandshakeMessageReq{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NextHandshakeMessageReq) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NextHandshakeMessageReq) ProtoMessage() {}
-
-func (x *NextHandshakeMessageReq) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NextHandshakeMessageReq.ProtoReflect.Descriptor instead.
-func (*NextHandshakeMessageReq) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *NextHandshakeMessageReq) GetInBytes() []byte {
- if x != nil {
- return x.InBytes
- }
- return nil
-}
-
-type HandshakerReq struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to ReqOneof:
- // *HandshakerReq_ClientStart
- // *HandshakerReq_ServerStart
- // *HandshakerReq_Next
- ReqOneof isHandshakerReq_ReqOneof `protobuf_oneof:"req_oneof"`
-}
-
-func (x *HandshakerReq) Reset() {
- *x = HandshakerReq{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HandshakerReq) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HandshakerReq) ProtoMessage() {}
-
-func (x *HandshakerReq) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HandshakerReq.ProtoReflect.Descriptor instead.
-func (*HandshakerReq) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{6}
-}
-
-func (m *HandshakerReq) GetReqOneof() isHandshakerReq_ReqOneof {
- if m != nil {
- return m.ReqOneof
- }
- return nil
-}
-
-func (x *HandshakerReq) GetClientStart() *StartClientHandshakeReq {
- if x, ok := x.GetReqOneof().(*HandshakerReq_ClientStart); ok {
- return x.ClientStart
- }
- return nil
-}
-
-func (x *HandshakerReq) GetServerStart() *StartServerHandshakeReq {
- if x, ok := x.GetReqOneof().(*HandshakerReq_ServerStart); ok {
- return x.ServerStart
- }
- return nil
-}
-
-func (x *HandshakerReq) GetNext() *NextHandshakeMessageReq {
- if x, ok := x.GetReqOneof().(*HandshakerReq_Next); ok {
- return x.Next
- }
- return nil
-}
-
-type isHandshakerReq_ReqOneof interface {
- isHandshakerReq_ReqOneof()
-}
-
-type HandshakerReq_ClientStart struct {
- // The start client handshake request message.
- ClientStart *StartClientHandshakeReq `protobuf:"bytes,1,opt,name=client_start,json=clientStart,proto3,oneof"`
-}
-
-type HandshakerReq_ServerStart struct {
- // The start server handshake request message.
- ServerStart *StartServerHandshakeReq `protobuf:"bytes,2,opt,name=server_start,json=serverStart,proto3,oneof"`
-}
-
-type HandshakerReq_Next struct {
- // The next handshake request message.
- Next *NextHandshakeMessageReq `protobuf:"bytes,3,opt,name=next,proto3,oneof"`
-}
-
-func (*HandshakerReq_ClientStart) isHandshakerReq_ReqOneof() {}
-
-func (*HandshakerReq_ServerStart) isHandshakerReq_ReqOneof() {}
-
-func (*HandshakerReq_Next) isHandshakerReq_ReqOneof() {}
-
-type HandshakerResult struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The application protocol negotiated for this connection.
- ApplicationProtocol string `protobuf:"bytes,1,opt,name=application_protocol,json=applicationProtocol,proto3" json:"application_protocol,omitempty"`
- // The record protocol negotiated for this connection.
- RecordProtocol string `protobuf:"bytes,2,opt,name=record_protocol,json=recordProtocol,proto3" json:"record_protocol,omitempty"`
- // Cryptographic key data. The key data may be more than the key length
- // required for the record protocol, thus the client of the handshaker
- // service needs to truncate the key data into the right key length.
- KeyData []byte `protobuf:"bytes,3,opt,name=key_data,json=keyData,proto3" json:"key_data,omitempty"`
- // The authenticated identity of the peer.
- PeerIdentity *Identity `protobuf:"bytes,4,opt,name=peer_identity,json=peerIdentity,proto3" json:"peer_identity,omitempty"`
- // The local identity used in the handshake.
- LocalIdentity *Identity `protobuf:"bytes,5,opt,name=local_identity,json=localIdentity,proto3" json:"local_identity,omitempty"`
- // Indicate whether the handshaker service client should keep the channel
- // between the handshaker service open, e.g., in order to handle
- // post-handshake messages in the future.
- KeepChannelOpen bool `protobuf:"varint,6,opt,name=keep_channel_open,json=keepChannelOpen,proto3" json:"keep_channel_open,omitempty"`
- // The RPC protocol versions supported by the peer.
- PeerRpcVersions *RpcProtocolVersions `protobuf:"bytes,7,opt,name=peer_rpc_versions,json=peerRpcVersions,proto3" json:"peer_rpc_versions,omitempty"`
- // The maximum frame size of the peer.
- MaxFrameSize uint32 `protobuf:"varint,8,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
-}
-
-func (x *HandshakerResult) Reset() {
- *x = HandshakerResult{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HandshakerResult) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HandshakerResult) ProtoMessage() {}
-
-func (x *HandshakerResult) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HandshakerResult.ProtoReflect.Descriptor instead.
-func (*HandshakerResult) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *HandshakerResult) GetApplicationProtocol() string {
- if x != nil {
- return x.ApplicationProtocol
- }
- return ""
-}
-
-func (x *HandshakerResult) GetRecordProtocol() string {
- if x != nil {
- return x.RecordProtocol
- }
- return ""
-}
-
-func (x *HandshakerResult) GetKeyData() []byte {
- if x != nil {
- return x.KeyData
- }
- return nil
-}
-
-func (x *HandshakerResult) GetPeerIdentity() *Identity {
- if x != nil {
- return x.PeerIdentity
- }
- return nil
-}
-
-func (x *HandshakerResult) GetLocalIdentity() *Identity {
- if x != nil {
- return x.LocalIdentity
- }
- return nil
-}
-
-func (x *HandshakerResult) GetKeepChannelOpen() bool {
- if x != nil {
- return x.KeepChannelOpen
- }
- return false
-}
-
-func (x *HandshakerResult) GetPeerRpcVersions() *RpcProtocolVersions {
- if x != nil {
- return x.PeerRpcVersions
- }
- return nil
-}
-
-func (x *HandshakerResult) GetMaxFrameSize() uint32 {
- if x != nil {
- return x.MaxFrameSize
- }
- return 0
-}
-
-type HandshakerStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The status code. This could be the gRPC status code.
- Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
- // The status details.
- Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"`
-}
-
-func (x *HandshakerStatus) Reset() {
- *x = HandshakerStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HandshakerStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HandshakerStatus) ProtoMessage() {}
-
-func (x *HandshakerStatus) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HandshakerStatus.ProtoReflect.Descriptor instead.
-func (*HandshakerStatus) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *HandshakerStatus) GetCode() uint32 {
- if x != nil {
- return x.Code
- }
- return 0
-}
-
-func (x *HandshakerStatus) GetDetails() string {
- if x != nil {
- return x.Details
- }
- return ""
-}
-
-type HandshakerResp struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Frames to be given to the peer for the NextHandshakeMessageReq. May be
- // empty if no out_frames have to be sent to the peer or if in_bytes in the
- // HandshakerReq are incomplete. All the non-empty out frames must be sent to
- // the peer even if the handshaker status is not OK as these frames may
- // contain the alert frames.
- OutFrames []byte `protobuf:"bytes,1,opt,name=out_frames,json=outFrames,proto3" json:"out_frames,omitempty"`
- // Number of bytes in the in_bytes consumed by the handshaker. It is possible
- // that part of in_bytes in HandshakerReq was unrelated to the handshake
- // process.
- BytesConsumed uint32 `protobuf:"varint,2,opt,name=bytes_consumed,json=bytesConsumed,proto3" json:"bytes_consumed,omitempty"`
- // This is set iff the handshake was successful. out_frames may still be set
- // to frames that needs to be forwarded to the peer.
- Result *HandshakerResult `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"`
- // Status of the handshaker.
- Status *HandshakerStatus `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
-}
-
-func (x *HandshakerResp) Reset() {
- *x = HandshakerResp{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HandshakerResp) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HandshakerResp) ProtoMessage() {}
-
-func (x *HandshakerResp) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_handshaker_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HandshakerResp.ProtoReflect.Descriptor instead.
-func (*HandshakerResp) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *HandshakerResp) GetOutFrames() []byte {
- if x != nil {
- return x.OutFrames
- }
- return nil
-}
-
-func (x *HandshakerResp) GetBytesConsumed() uint32 {
- if x != nil {
- return x.BytesConsumed
- }
- return 0
-}
-
-func (x *HandshakerResp) GetResult() *HandshakerResult {
- if x != nil {
- return x.Result
- }
- return nil
-}
-
-func (x *HandshakerResp) GetStatus() *HandshakerStatus {
- if x != nil {
- return x.Status
- }
- return nil
-}
-
-var File_grpc_gcp_handshaker_proto protoreflect.FileDescriptor
-
-var file_grpc_gcp_handshaker_proto_rawDesc = []byte{
- 0x0a, 0x19, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x68, 0x61, 0x6e, 0x64, 0x73,
- 0x68, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x67, 0x63, 0x70, 0x1a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f,
- 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
- 0x74, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
- 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f,
- 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x35,
- 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x4e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0xe8, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a,
- 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x61,
- 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a,
- 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10,
- 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
- 0x22, 0xd3, 0x04, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
- 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, 0x1b,
- 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e,
- 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x19,
- 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x29,
- 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x11, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f,
- 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65,
- 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x12, 0x3b, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x72,
- 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a,
- 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40,
- 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
- 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73,
- 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61,
- 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
- 0x74, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
- 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12,
- 0x3d, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x6c,
- 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xa5,
- 0x04, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61,
- 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12,
- 0x6d, 0x0a, 0x14, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x61, 0x72,
- 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71,
- 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
- 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x61, 0x6e, 0x64, 0x73,
- 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x19,
- 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
- 0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63,
- 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64,
- 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65,
- 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67,
- 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65,
- 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78,
- 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6b, 0x0a, 0x18, 0x48, 0x61, 0x6e,
- 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
- 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
- 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x34, 0x0a, 0x17, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61,
- 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x71, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe5, 0x01, 0x0a,
- 0x0d, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x46,
- 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
- 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73,
- 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e,
- 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48,
- 0x00, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x37,
- 0x0a, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x6e, 0x64,
- 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x48,
- 0x00, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x6f,
- 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x9a, 0x03, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61,
- 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x31, 0x0a, 0x14, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f,
- 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61,
- 0x12, 0x37, 0x0a, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67,
- 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x70, 0x65, 0x65,
- 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63,
- 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e,
- 0x12, 0x49, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x65, 0x65, 0x72,
- 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d,
- 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a,
- 0x65, 0x22, 0x40, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74,
- 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61,
- 0x69, 0x6c, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
- 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x72,
- 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x46,
- 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63,
- 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x06,
- 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
- 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64,
- 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4a, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
- 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x41, 0x4e,
- 0x44, 0x53, 0x48, 0x41, 0x4b, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f,
- 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a,
- 0x03, 0x54, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4c, 0x54, 0x53, 0x10, 0x02,
- 0x2a, 0x45, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50,
- 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x07,
- 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x02, 0x32, 0x5b, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73,
- 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0b,
- 0x44, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x17, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65,
- 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
- 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00,
- 0x28, 0x01, 0x30, 0x01, 0x42, 0x6b, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x0f, 0x48,
- 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
- 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
- 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x63,
- 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_gcp_handshaker_proto_rawDescOnce sync.Once
- file_grpc_gcp_handshaker_proto_rawDescData = file_grpc_gcp_handshaker_proto_rawDesc
-)
-
-func file_grpc_gcp_handshaker_proto_rawDescGZIP() []byte {
- file_grpc_gcp_handshaker_proto_rawDescOnce.Do(func() {
- file_grpc_gcp_handshaker_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_gcp_handshaker_proto_rawDescData)
- })
- return file_grpc_gcp_handshaker_proto_rawDescData
-}
-
-var file_grpc_gcp_handshaker_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_grpc_gcp_handshaker_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
-var file_grpc_gcp_handshaker_proto_goTypes = []interface{}{
- (HandshakeProtocol)(0), // 0: grpc.gcp.HandshakeProtocol
- (NetworkProtocol)(0), // 1: grpc.gcp.NetworkProtocol
- (*Endpoint)(nil), // 2: grpc.gcp.Endpoint
- (*Identity)(nil), // 3: grpc.gcp.Identity
- (*StartClientHandshakeReq)(nil), // 4: grpc.gcp.StartClientHandshakeReq
- (*ServerHandshakeParameters)(nil), // 5: grpc.gcp.ServerHandshakeParameters
- (*StartServerHandshakeReq)(nil), // 6: grpc.gcp.StartServerHandshakeReq
- (*NextHandshakeMessageReq)(nil), // 7: grpc.gcp.NextHandshakeMessageReq
- (*HandshakerReq)(nil), // 8: grpc.gcp.HandshakerReq
- (*HandshakerResult)(nil), // 9: grpc.gcp.HandshakerResult
- (*HandshakerStatus)(nil), // 10: grpc.gcp.HandshakerStatus
- (*HandshakerResp)(nil), // 11: grpc.gcp.HandshakerResp
- nil, // 12: grpc.gcp.Identity.AttributesEntry
- nil, // 13: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry
- (*RpcProtocolVersions)(nil), // 14: grpc.gcp.RpcProtocolVersions
-}
-var file_grpc_gcp_handshaker_proto_depIdxs = []int32{
- 1, // 0: grpc.gcp.Endpoint.protocol:type_name -> grpc.gcp.NetworkProtocol
- 12, // 1: grpc.gcp.Identity.attributes:type_name -> grpc.gcp.Identity.AttributesEntry
- 0, // 2: grpc.gcp.StartClientHandshakeReq.handshake_security_protocol:type_name -> grpc.gcp.HandshakeProtocol
- 3, // 3: grpc.gcp.StartClientHandshakeReq.target_identities:type_name -> grpc.gcp.Identity
- 3, // 4: grpc.gcp.StartClientHandshakeReq.local_identity:type_name -> grpc.gcp.Identity
- 2, // 5: grpc.gcp.StartClientHandshakeReq.local_endpoint:type_name -> grpc.gcp.Endpoint
- 2, // 6: grpc.gcp.StartClientHandshakeReq.remote_endpoint:type_name -> grpc.gcp.Endpoint
- 14, // 7: grpc.gcp.StartClientHandshakeReq.rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
- 3, // 8: grpc.gcp.ServerHandshakeParameters.local_identities:type_name -> grpc.gcp.Identity
- 13, // 9: grpc.gcp.StartServerHandshakeReq.handshake_parameters:type_name -> grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry
- 2, // 10: grpc.gcp.StartServerHandshakeReq.local_endpoint:type_name -> grpc.gcp.Endpoint
- 2, // 11: grpc.gcp.StartServerHandshakeReq.remote_endpoint:type_name -> grpc.gcp.Endpoint
- 14, // 12: grpc.gcp.StartServerHandshakeReq.rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
- 4, // 13: grpc.gcp.HandshakerReq.client_start:type_name -> grpc.gcp.StartClientHandshakeReq
- 6, // 14: grpc.gcp.HandshakerReq.server_start:type_name -> grpc.gcp.StartServerHandshakeReq
- 7, // 15: grpc.gcp.HandshakerReq.next:type_name -> grpc.gcp.NextHandshakeMessageReq
- 3, // 16: grpc.gcp.HandshakerResult.peer_identity:type_name -> grpc.gcp.Identity
- 3, // 17: grpc.gcp.HandshakerResult.local_identity:type_name -> grpc.gcp.Identity
- 14, // 18: grpc.gcp.HandshakerResult.peer_rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
- 9, // 19: grpc.gcp.HandshakerResp.result:type_name -> grpc.gcp.HandshakerResult
- 10, // 20: grpc.gcp.HandshakerResp.status:type_name -> grpc.gcp.HandshakerStatus
- 5, // 21: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry.value:type_name -> grpc.gcp.ServerHandshakeParameters
- 8, // 22: grpc.gcp.HandshakerService.DoHandshake:input_type -> grpc.gcp.HandshakerReq
- 11, // 23: grpc.gcp.HandshakerService.DoHandshake:output_type -> grpc.gcp.HandshakerResp
- 23, // [23:24] is the sub-list for method output_type
- 22, // [22:23] is the sub-list for method input_type
- 22, // [22:22] is the sub-list for extension type_name
- 22, // [22:22] is the sub-list for extension extendee
- 0, // [0:22] is the sub-list for field type_name
-}
-
-func init() { file_grpc_gcp_handshaker_proto_init() }
-func file_grpc_gcp_handshaker_proto_init() {
- if File_grpc_gcp_handshaker_proto != nil {
- return
- }
- file_grpc_gcp_transport_security_common_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_grpc_gcp_handshaker_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Endpoint); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Identity); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StartClientHandshakeReq); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerHandshakeParameters); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StartServerHandshakeReq); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NextHandshakeMessageReq); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HandshakerReq); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HandshakerResult); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HandshakerStatus); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HandshakerResp); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_gcp_handshaker_proto_msgTypes[1].OneofWrappers = []interface{}{
- (*Identity_ServiceAccount)(nil),
- (*Identity_Hostname)(nil),
- }
- file_grpc_gcp_handshaker_proto_msgTypes[6].OneofWrappers = []interface{}{
- (*HandshakerReq_ClientStart)(nil),
- (*HandshakerReq_ServerStart)(nil),
- (*HandshakerReq_Next)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_gcp_handshaker_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 12,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_gcp_handshaker_proto_goTypes,
- DependencyIndexes: file_grpc_gcp_handshaker_proto_depIdxs,
- EnumInfos: file_grpc_gcp_handshaker_proto_enumTypes,
- MessageInfos: file_grpc_gcp_handshaker_proto_msgTypes,
- }.Build()
- File_grpc_gcp_handshaker_proto = out.File
- file_grpc_gcp_handshaker_proto_rawDesc = nil
- file_grpc_gcp_handshaker_proto_goTypes = nil
- file_grpc_gcp_handshaker_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/gcp/transport_security_common.pb.go b/gen/proto/grpc/gcp/transport_security_common.pb.go
deleted file mode 100644
index 859f3fe..0000000
--- a/gen/proto/grpc/gcp/transport_security_common.pb.go
+++ /dev/null
@@ -1,321 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/transport_security_common.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/gcp/transport_security_common.proto
-
-package grpc_gcp
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// The security level of the created channel. The list is sorted in increasing
-// level of security. This order must always be maintained.
-type SecurityLevel int32
-
-const (
- SecurityLevel_SECURITY_NONE SecurityLevel = 0
- SecurityLevel_INTEGRITY_ONLY SecurityLevel = 1
- SecurityLevel_INTEGRITY_AND_PRIVACY SecurityLevel = 2
-)
-
-// Enum value maps for SecurityLevel.
-var (
- SecurityLevel_name = map[int32]string{
- 0: "SECURITY_NONE",
- 1: "INTEGRITY_ONLY",
- 2: "INTEGRITY_AND_PRIVACY",
- }
- SecurityLevel_value = map[string]int32{
- "SECURITY_NONE": 0,
- "INTEGRITY_ONLY": 1,
- "INTEGRITY_AND_PRIVACY": 2,
- }
-)
-
-func (x SecurityLevel) Enum() *SecurityLevel {
- p := new(SecurityLevel)
- *p = x
- return p
-}
-
-func (x SecurityLevel) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (SecurityLevel) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_gcp_transport_security_common_proto_enumTypes[0].Descriptor()
-}
-
-func (SecurityLevel) Type() protoreflect.EnumType {
- return &file_grpc_gcp_transport_security_common_proto_enumTypes[0]
-}
-
-func (x SecurityLevel) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use SecurityLevel.Descriptor instead.
-func (SecurityLevel) EnumDescriptor() ([]byte, []int) {
- return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{0}
-}
-
-// Max and min supported RPC protocol versions.
-type RpcProtocolVersions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Maximum supported RPC version.
- MaxRpcVersion *RpcProtocolVersions_Version `protobuf:"bytes,1,opt,name=max_rpc_version,json=maxRpcVersion,proto3" json:"max_rpc_version,omitempty"`
- // Minimum supported RPC version.
- MinRpcVersion *RpcProtocolVersions_Version `protobuf:"bytes,2,opt,name=min_rpc_version,json=minRpcVersion,proto3" json:"min_rpc_version,omitempty"`
-}
-
-func (x *RpcProtocolVersions) Reset() {
- *x = RpcProtocolVersions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RpcProtocolVersions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RpcProtocolVersions) ProtoMessage() {}
-
-func (x *RpcProtocolVersions) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RpcProtocolVersions.ProtoReflect.Descriptor instead.
-func (*RpcProtocolVersions) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RpcProtocolVersions) GetMaxRpcVersion() *RpcProtocolVersions_Version {
- if x != nil {
- return x.MaxRpcVersion
- }
- return nil
-}
-
-func (x *RpcProtocolVersions) GetMinRpcVersion() *RpcProtocolVersions_Version {
- if x != nil {
- return x.MinRpcVersion
- }
- return nil
-}
-
-// RPC version contains a major version and a minor version.
-type RpcProtocolVersions_Version struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Major uint32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"`
- Minor uint32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"`
-}
-
-func (x *RpcProtocolVersions_Version) Reset() {
- *x = RpcProtocolVersions_Version{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RpcProtocolVersions_Version) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RpcProtocolVersions_Version) ProtoMessage() {}
-
-func (x *RpcProtocolVersions_Version) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RpcProtocolVersions_Version.ProtoReflect.Descriptor instead.
-func (*RpcProtocolVersions_Version) Descriptor() ([]byte, []int) {
- return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *RpcProtocolVersions_Version) GetMajor() uint32 {
- if x != nil {
- return x.Major
- }
- return 0
-}
-
-func (x *RpcProtocolVersions_Version) GetMinor() uint32 {
- if x != nil {
- return x.Minor
- }
- return 0
-}
-
-var File_grpc_gcp_transport_security_common_proto protoreflect.FileDescriptor
-
-var file_grpc_gcp_transport_security_common_proto_rawDesc = []byte{
- 0x0a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73,
- 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x67, 0x63, 0x70, 0x22, 0xea, 0x01, 0x0a, 0x13, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x0f,
- 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70,
- 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61,
- 0x78, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0f, 0x6d,
- 0x69, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
- 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e,
- 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x35, 0x0a, 0x07, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d,
- 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f,
- 0x72, 0x2a, 0x51, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76,
- 0x65, 0x6c, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e,
- 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x49,
- 0x54, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x54,
- 0x45, 0x47, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41,
- 0x43, 0x59, 0x10, 0x02, 0x42, 0x78, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x1c, 0x54,
- 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
- 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
- 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
- 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x63, 0x70, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_gcp_transport_security_common_proto_rawDescOnce sync.Once
- file_grpc_gcp_transport_security_common_proto_rawDescData = file_grpc_gcp_transport_security_common_proto_rawDesc
-)
-
-func file_grpc_gcp_transport_security_common_proto_rawDescGZIP() []byte {
- file_grpc_gcp_transport_security_common_proto_rawDescOnce.Do(func() {
- file_grpc_gcp_transport_security_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_gcp_transport_security_common_proto_rawDescData)
- })
- return file_grpc_gcp_transport_security_common_proto_rawDescData
-}
-
-var file_grpc_gcp_transport_security_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_grpc_gcp_transport_security_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_grpc_gcp_transport_security_common_proto_goTypes = []interface{}{
- (SecurityLevel)(0), // 0: grpc.gcp.SecurityLevel
- (*RpcProtocolVersions)(nil), // 1: grpc.gcp.RpcProtocolVersions
- (*RpcProtocolVersions_Version)(nil), // 2: grpc.gcp.RpcProtocolVersions.Version
-}
-var file_grpc_gcp_transport_security_common_proto_depIdxs = []int32{
- 2, // 0: grpc.gcp.RpcProtocolVersions.max_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version
- 2, // 1: grpc.gcp.RpcProtocolVersions.min_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version
- 2, // [2:2] is the sub-list for method output_type
- 2, // [2:2] is the sub-list for method input_type
- 2, // [2:2] is the sub-list for extension type_name
- 2, // [2:2] is the sub-list for extension extendee
- 0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_grpc_gcp_transport_security_common_proto_init() }
-func file_grpc_gcp_transport_security_common_proto_init() {
- if File_grpc_gcp_transport_security_common_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_gcp_transport_security_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RpcProtocolVersions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_gcp_transport_security_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RpcProtocolVersions_Version); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_gcp_transport_security_common_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 2,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_gcp_transport_security_common_proto_goTypes,
- DependencyIndexes: file_grpc_gcp_transport_security_common_proto_depIdxs,
- EnumInfos: file_grpc_gcp_transport_security_common_proto_enumTypes,
- MessageInfos: file_grpc_gcp_transport_security_common_proto_msgTypes,
- }.Build()
- File_grpc_gcp_transport_security_common_proto = out.File
- file_grpc_gcp_transport_security_common_proto_rawDesc = nil
- file_grpc_gcp_transport_security_common_proto_goTypes = nil
- file_grpc_gcp_transport_security_common_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/health/v1/health.pb.go b/gen/proto/grpc/health/v1/health.pb.go
deleted file mode 100644
index 7c7af97..0000000
--- a/gen/proto/grpc/health/v1/health.pb.go
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright 2015 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/health/v1/health.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/health/v1/health.proto
-
-package grpc_health_v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type HealthCheckResponse_ServingStatus int32
-
-const (
- HealthCheckResponse_UNKNOWN HealthCheckResponse_ServingStatus = 0
- HealthCheckResponse_SERVING HealthCheckResponse_ServingStatus = 1
- HealthCheckResponse_NOT_SERVING HealthCheckResponse_ServingStatus = 2
- HealthCheckResponse_SERVICE_UNKNOWN HealthCheckResponse_ServingStatus = 3 // Used only by the Watch method.
-)
-
-// Enum value maps for HealthCheckResponse_ServingStatus.
-var (
- HealthCheckResponse_ServingStatus_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "SERVING",
- 2: "NOT_SERVING",
- 3: "SERVICE_UNKNOWN",
- }
- HealthCheckResponse_ServingStatus_value = map[string]int32{
- "UNKNOWN": 0,
- "SERVING": 1,
- "NOT_SERVING": 2,
- "SERVICE_UNKNOWN": 3,
- }
-)
-
-func (x HealthCheckResponse_ServingStatus) Enum() *HealthCheckResponse_ServingStatus {
- p := new(HealthCheckResponse_ServingStatus)
- *p = x
- return p
-}
-
-func (x HealthCheckResponse_ServingStatus) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (HealthCheckResponse_ServingStatus) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_health_v1_health_proto_enumTypes[0].Descriptor()
-}
-
-func (HealthCheckResponse_ServingStatus) Type() protoreflect.EnumType {
- return &file_grpc_health_v1_health_proto_enumTypes[0]
-}
-
-func (x HealthCheckResponse_ServingStatus) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use HealthCheckResponse_ServingStatus.Descriptor instead.
-func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) {
- return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{1, 0}
-}
-
-type HealthCheckRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
-}
-
-func (x *HealthCheckRequest) Reset() {
- *x = HealthCheckRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_health_v1_health_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HealthCheckRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HealthCheckRequest) ProtoMessage() {}
-
-func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_health_v1_health_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead.
-func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
- return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *HealthCheckRequest) GetService() string {
- if x != nil {
- return x.Service
- }
- return ""
-}
-
-type HealthCheckResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Status HealthCheckResponse_ServingStatus `protobuf:"varint,1,opt,name=status,proto3,enum=grpc.health.v1.HealthCheckResponse_ServingStatus" json:"status,omitempty"`
-}
-
-func (x *HealthCheckResponse) Reset() {
- *x = HealthCheckResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_health_v1_health_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HealthCheckResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HealthCheckResponse) ProtoMessage() {}
-
-func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_health_v1_health_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead.
-func (*HealthCheckResponse) Descriptor() ([]byte, []int) {
- return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus {
- if x != nil {
- return x.Status
- }
- return HealthCheckResponse_UNKNOWN
-}
-
-var File_grpc_health_v1_health_proto protoreflect.FileDescriptor
-
-var file_grpc_health_v1_health_proto_rawDesc = []byte{
- 0x0a, 0x1b, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x76, 0x31,
- 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x22, 0x2e, 0x0a,
- 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb1, 0x01,
- 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61,
- 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
- 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,
- 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x22, 0x4f, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b,
- 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e,
- 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f,
- 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
- 0x03, 0x32, 0xae, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x50, 0x0a, 0x05,
- 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61,
- 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
- 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74,
- 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52,
- 0x0a, 0x05, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68,
- 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43,
- 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61,
- 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x30, 0x01, 0x42, 0x61, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65,
- 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
- 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x68,
- 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
- 0x68, 0x5f, 0x76, 0x31, 0xaa, 0x02, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x65, 0x61, 0x6c,
- 0x74, 0x68, 0x2e, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_health_v1_health_proto_rawDescOnce sync.Once
- file_grpc_health_v1_health_proto_rawDescData = file_grpc_health_v1_health_proto_rawDesc
-)
-
-func file_grpc_health_v1_health_proto_rawDescGZIP() []byte {
- file_grpc_health_v1_health_proto_rawDescOnce.Do(func() {
- file_grpc_health_v1_health_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_health_v1_health_proto_rawDescData)
- })
- return file_grpc_health_v1_health_proto_rawDescData
-}
-
-var file_grpc_health_v1_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_grpc_health_v1_health_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_grpc_health_v1_health_proto_goTypes = []interface{}{
- (HealthCheckResponse_ServingStatus)(0), // 0: grpc.health.v1.HealthCheckResponse.ServingStatus
- (*HealthCheckRequest)(nil), // 1: grpc.health.v1.HealthCheckRequest
- (*HealthCheckResponse)(nil), // 2: grpc.health.v1.HealthCheckResponse
-}
-var file_grpc_health_v1_health_proto_depIdxs = []int32{
- 0, // 0: grpc.health.v1.HealthCheckResponse.status:type_name -> grpc.health.v1.HealthCheckResponse.ServingStatus
- 1, // 1: grpc.health.v1.Health.Check:input_type -> grpc.health.v1.HealthCheckRequest
- 1, // 2: grpc.health.v1.Health.Watch:input_type -> grpc.health.v1.HealthCheckRequest
- 2, // 3: grpc.health.v1.Health.Check:output_type -> grpc.health.v1.HealthCheckResponse
- 2, // 4: grpc.health.v1.Health.Watch:output_type -> grpc.health.v1.HealthCheckResponse
- 3, // [3:5] is the sub-list for method output_type
- 1, // [1:3] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_grpc_health_v1_health_proto_init() }
-func file_grpc_health_v1_health_proto_init() {
- if File_grpc_health_v1_health_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_health_v1_health_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HealthCheckRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_health_v1_health_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HealthCheckResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_health_v1_health_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 2,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_health_v1_health_proto_goTypes,
- DependencyIndexes: file_grpc_health_v1_health_proto_depIdxs,
- EnumInfos: file_grpc_health_v1_health_proto_enumTypes,
- MessageInfos: file_grpc_health_v1_health_proto_msgTypes,
- }.Build()
- File_grpc_health_v1_health_proto = out.File
- file_grpc_health_v1_health_proto_rawDesc = nil
- file_grpc_health_v1_health_proto_goTypes = nil
- file_grpc_health_v1_health_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/lb/v1/load_balancer.pb.go b/gen/proto/grpc/lb/v1/load_balancer.pb.go
deleted file mode 100644
index df8274c..0000000
--- a/gen/proto/grpc/lb/v1/load_balancer.pb.go
+++ /dev/null
@@ -1,955 +0,0 @@
-// Copyright 2015 The gRPC 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.
-
-// This file defines the GRPCLB LoadBalancing protocol.
-//
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/lb/v1/load_balancer.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/lb/v1/load_balancer.proto
-
-package grpc_lb_v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type LoadBalanceRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to LoadBalanceRequestType:
- // *LoadBalanceRequest_InitialRequest
- // *LoadBalanceRequest_ClientStats
- LoadBalanceRequestType isLoadBalanceRequest_LoadBalanceRequestType `protobuf_oneof:"load_balance_request_type"`
-}
-
-func (x *LoadBalanceRequest) Reset() {
- *x = LoadBalanceRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalanceRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalanceRequest) ProtoMessage() {}
-
-func (x *LoadBalanceRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalanceRequest.ProtoReflect.Descriptor instead.
-func (*LoadBalanceRequest) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{0}
-}
-
-func (m *LoadBalanceRequest) GetLoadBalanceRequestType() isLoadBalanceRequest_LoadBalanceRequestType {
- if m != nil {
- return m.LoadBalanceRequestType
- }
- return nil
-}
-
-func (x *LoadBalanceRequest) GetInitialRequest() *InitialLoadBalanceRequest {
- if x, ok := x.GetLoadBalanceRequestType().(*LoadBalanceRequest_InitialRequest); ok {
- return x.InitialRequest
- }
- return nil
-}
-
-func (x *LoadBalanceRequest) GetClientStats() *ClientStats {
- if x, ok := x.GetLoadBalanceRequestType().(*LoadBalanceRequest_ClientStats); ok {
- return x.ClientStats
- }
- return nil
-}
-
-type isLoadBalanceRequest_LoadBalanceRequestType interface {
- isLoadBalanceRequest_LoadBalanceRequestType()
-}
-
-type LoadBalanceRequest_InitialRequest struct {
- // This message should be sent on the first request to the load balancer.
- InitialRequest *InitialLoadBalanceRequest `protobuf:"bytes,1,opt,name=initial_request,json=initialRequest,proto3,oneof"`
-}
-
-type LoadBalanceRequest_ClientStats struct {
- // The client stats should be periodically reported to the load balancer
- // based on the duration defined in the InitialLoadBalanceResponse.
- ClientStats *ClientStats `protobuf:"bytes,2,opt,name=client_stats,json=clientStats,proto3,oneof"`
-}
-
-func (*LoadBalanceRequest_InitialRequest) isLoadBalanceRequest_LoadBalanceRequestType() {}
-
-func (*LoadBalanceRequest_ClientStats) isLoadBalanceRequest_LoadBalanceRequestType() {}
-
-type InitialLoadBalanceRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the load balanced service (e.g., service.googleapis.com). Its
- // length should be less than 256 bytes.
- // The name might include a port number. How to handle the port number is up
- // to the balancer.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *InitialLoadBalanceRequest) Reset() {
- *x = InitialLoadBalanceRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *InitialLoadBalanceRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*InitialLoadBalanceRequest) ProtoMessage() {}
-
-func (x *InitialLoadBalanceRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use InitialLoadBalanceRequest.ProtoReflect.Descriptor instead.
-func (*InitialLoadBalanceRequest) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *InitialLoadBalanceRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Contains the number of calls finished for a particular load balance token.
-type ClientStatsPerToken struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // See Server.load_balance_token.
- LoadBalanceToken string `protobuf:"bytes,1,opt,name=load_balance_token,json=loadBalanceToken,proto3" json:"load_balance_token,omitempty"`
- // The total number of RPCs that finished associated with the token.
- NumCalls int64 `protobuf:"varint,2,opt,name=num_calls,json=numCalls,proto3" json:"num_calls,omitempty"`
-}
-
-func (x *ClientStatsPerToken) Reset() {
- *x = ClientStatsPerToken{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientStatsPerToken) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientStatsPerToken) ProtoMessage() {}
-
-func (x *ClientStatsPerToken) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientStatsPerToken.ProtoReflect.Descriptor instead.
-func (*ClientStatsPerToken) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ClientStatsPerToken) GetLoadBalanceToken() string {
- if x != nil {
- return x.LoadBalanceToken
- }
- return ""
-}
-
-func (x *ClientStatsPerToken) GetNumCalls() int64 {
- if x != nil {
- return x.NumCalls
- }
- return 0
-}
-
-// Contains client level statistics that are useful to load balancing. Each
-// count except the timestamp should be reset to zero after reporting the stats.
-type ClientStats struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The timestamp of generating the report.
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- // The total number of RPCs that started.
- NumCallsStarted int64 `protobuf:"varint,2,opt,name=num_calls_started,json=numCallsStarted,proto3" json:"num_calls_started,omitempty"`
- // The total number of RPCs that finished.
- NumCallsFinished int64 `protobuf:"varint,3,opt,name=num_calls_finished,json=numCallsFinished,proto3" json:"num_calls_finished,omitempty"`
- // The total number of RPCs that failed to reach a server except dropped RPCs.
- NumCallsFinishedWithClientFailedToSend int64 `protobuf:"varint,6,opt,name=num_calls_finished_with_client_failed_to_send,json=numCallsFinishedWithClientFailedToSend,proto3" json:"num_calls_finished_with_client_failed_to_send,omitempty"`
- // The total number of RPCs that finished and are known to have been received
- // by a server.
- NumCallsFinishedKnownReceived int64 `protobuf:"varint,7,opt,name=num_calls_finished_known_received,json=numCallsFinishedKnownReceived,proto3" json:"num_calls_finished_known_received,omitempty"`
- // The list of dropped calls.
- CallsFinishedWithDrop []*ClientStatsPerToken `protobuf:"bytes,8,rep,name=calls_finished_with_drop,json=callsFinishedWithDrop,proto3" json:"calls_finished_with_drop,omitempty"`
-}
-
-func (x *ClientStats) Reset() {
- *x = ClientStats{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientStats) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientStats) ProtoMessage() {}
-
-func (x *ClientStats) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientStats.ProtoReflect.Descriptor instead.
-func (*ClientStats) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ClientStats) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
- }
- return nil
-}
-
-func (x *ClientStats) GetNumCallsStarted() int64 {
- if x != nil {
- return x.NumCallsStarted
- }
- return 0
-}
-
-func (x *ClientStats) GetNumCallsFinished() int64 {
- if x != nil {
- return x.NumCallsFinished
- }
- return 0
-}
-
-func (x *ClientStats) GetNumCallsFinishedWithClientFailedToSend() int64 {
- if x != nil {
- return x.NumCallsFinishedWithClientFailedToSend
- }
- return 0
-}
-
-func (x *ClientStats) GetNumCallsFinishedKnownReceived() int64 {
- if x != nil {
- return x.NumCallsFinishedKnownReceived
- }
- return 0
-}
-
-func (x *ClientStats) GetCallsFinishedWithDrop() []*ClientStatsPerToken {
- if x != nil {
- return x.CallsFinishedWithDrop
- }
- return nil
-}
-
-type LoadBalanceResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to LoadBalanceResponseType:
- // *LoadBalanceResponse_InitialResponse
- // *LoadBalanceResponse_ServerList
- // *LoadBalanceResponse_FallbackResponse
- LoadBalanceResponseType isLoadBalanceResponse_LoadBalanceResponseType `protobuf_oneof:"load_balance_response_type"`
-}
-
-func (x *LoadBalanceResponse) Reset() {
- *x = LoadBalanceResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalanceResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalanceResponse) ProtoMessage() {}
-
-func (x *LoadBalanceResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalanceResponse.ProtoReflect.Descriptor instead.
-func (*LoadBalanceResponse) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{4}
-}
-
-func (m *LoadBalanceResponse) GetLoadBalanceResponseType() isLoadBalanceResponse_LoadBalanceResponseType {
- if m != nil {
- return m.LoadBalanceResponseType
- }
- return nil
-}
-
-func (x *LoadBalanceResponse) GetInitialResponse() *InitialLoadBalanceResponse {
- if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_InitialResponse); ok {
- return x.InitialResponse
- }
- return nil
-}
-
-func (x *LoadBalanceResponse) GetServerList() *ServerList {
- if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_ServerList); ok {
- return x.ServerList
- }
- return nil
-}
-
-func (x *LoadBalanceResponse) GetFallbackResponse() *FallbackResponse {
- if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_FallbackResponse); ok {
- return x.FallbackResponse
- }
- return nil
-}
-
-type isLoadBalanceResponse_LoadBalanceResponseType interface {
- isLoadBalanceResponse_LoadBalanceResponseType()
-}
-
-type LoadBalanceResponse_InitialResponse struct {
- // This message should be sent on the first response to the client.
- InitialResponse *InitialLoadBalanceResponse `protobuf:"bytes,1,opt,name=initial_response,json=initialResponse,proto3,oneof"`
-}
-
-type LoadBalanceResponse_ServerList struct {
- // Contains the list of servers selected by the load balancer. The client
- // should send requests to these servers in the specified order.
- ServerList *ServerList `protobuf:"bytes,2,opt,name=server_list,json=serverList,proto3,oneof"`
-}
-
-type LoadBalanceResponse_FallbackResponse struct {
- // If this field is set, then the client should eagerly enter fallback
- // mode (even if there are existing, healthy connections to backends).
- FallbackResponse *FallbackResponse `protobuf:"bytes,3,opt,name=fallback_response,json=fallbackResponse,proto3,oneof"`
-}
-
-func (*LoadBalanceResponse_InitialResponse) isLoadBalanceResponse_LoadBalanceResponseType() {}
-
-func (*LoadBalanceResponse_ServerList) isLoadBalanceResponse_LoadBalanceResponseType() {}
-
-func (*LoadBalanceResponse_FallbackResponse) isLoadBalanceResponse_LoadBalanceResponseType() {}
-
-type FallbackResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *FallbackResponse) Reset() {
- *x = FallbackResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FallbackResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FallbackResponse) ProtoMessage() {}
-
-func (x *FallbackResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FallbackResponse.ProtoReflect.Descriptor instead.
-func (*FallbackResponse) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{5}
-}
-
-type InitialLoadBalanceResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This interval defines how often the client should send the client stats
- // to the load balancer. Stats should only be reported when the duration is
- // positive.
- ClientStatsReportInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=client_stats_report_interval,json=clientStatsReportInterval,proto3" json:"client_stats_report_interval,omitempty"`
-}
-
-func (x *InitialLoadBalanceResponse) Reset() {
- *x = InitialLoadBalanceResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *InitialLoadBalanceResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*InitialLoadBalanceResponse) ProtoMessage() {}
-
-func (x *InitialLoadBalanceResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use InitialLoadBalanceResponse.ProtoReflect.Descriptor instead.
-func (*InitialLoadBalanceResponse) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *InitialLoadBalanceResponse) GetClientStatsReportInterval() *durationpb.Duration {
- if x != nil {
- return x.ClientStatsReportInterval
- }
- return nil
-}
-
-type ServerList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Contains a list of servers selected by the load balancer. The list will
- // be updated when server resolutions change or as needed to balance load
- // across more servers. The client should consume the server list in order
- // unless instructed otherwise via the client_config.
- Servers []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
-}
-
-func (x *ServerList) Reset() {
- *x = ServerList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerList) ProtoMessage() {}
-
-func (x *ServerList) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerList.ProtoReflect.Descriptor instead.
-func (*ServerList) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *ServerList) GetServers() []*Server {
- if x != nil {
- return x.Servers
- }
- return nil
-}
-
-// Contains server information. When the drop field is not true, use the other
-// fields.
-type Server struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A resolved address for the server, serialized in network-byte-order. It may
- // either be an IPv4 or IPv6 address.
- IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
- // A resolved port number for the server.
- Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
- // An opaque but printable token for load reporting. The client must include
- // the token of the picked server into the initial metadata when it starts a
- // call to that server. The token is used by the server to verify the request
- // and to allow the server to report load to the gRPC LB system. The token is
- // also used in client stats for reporting dropped calls.
- //
- // Its length can be variable but must be less than 50 bytes.
- LoadBalanceToken string `protobuf:"bytes,3,opt,name=load_balance_token,json=loadBalanceToken,proto3" json:"load_balance_token,omitempty"`
- // Indicates whether this particular request should be dropped by the client.
- // If the request is dropped, there will be a corresponding entry in
- // ClientStats.calls_finished_with_drop.
- Drop bool `protobuf:"varint,4,opt,name=drop,proto3" json:"drop,omitempty"`
-}
-
-func (x *Server) Reset() {
- *x = Server{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Server) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Server) ProtoMessage() {}
-
-func (x *Server) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Server.ProtoReflect.Descriptor instead.
-func (*Server) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Server) GetIpAddress() []byte {
- if x != nil {
- return x.IpAddress
- }
- return nil
-}
-
-func (x *Server) GetPort() int32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *Server) GetLoadBalanceToken() string {
- if x != nil {
- return x.LoadBalanceToken
- }
- return ""
-}
-
-func (x *Server) GetDrop() bool {
- if x != nil {
- return x.Drop
- }
- return false
-}
-
-var File_grpc_lb_v1_load_balancer_proto protoreflect.FileDescriptor
-
-var file_grpc_lb_v1_load_balancer_proto_rawDesc = []byte{
- 0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x12, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x01,
- 0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69,
- 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
- 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
- 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,
- 0x74, 0x61, 0x74, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x22, 0x2f, 0x0a, 0x19, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
- 0x73, 0x50, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
- 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
- 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x43,
- 0x61, 0x6c, 0x6c, 0x73, 0x22, 0xb0, 0x03, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,
- 0x74, 0x61, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2a,
- 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x43, 0x61,
- 0x6c, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x75,
- 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73,
- 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x5d, 0x0a, 0x2d, 0x6e, 0x75, 0x6d, 0x5f,
- 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77,
- 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65,
- 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x26, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
- 0x64, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65,
- 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
- 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6b, 0x6e,
- 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x1d, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69,
- 0x73, 0x68, 0x65, 0x64, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
- 0x64, 0x12, 0x58, 0x0a, 0x18, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73,
- 0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50, 0x65, 0x72, 0x54,
- 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x15, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73,
- 0x68, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x04, 0x08, 0x04, 0x10,
- 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x90, 0x02, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x53, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f,
- 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6c,
- 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73,
- 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x4b, 0x0a, 0x11, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x66, 0x61, 0x6c, 0x6c,
- 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1c, 0x0a, 0x1a,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x46, 0x61,
- 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7e,
- 0x0a, 0x1a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x1c,
- 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x63,
- 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x40,
- 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04,
- 0x22, 0x83, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
- 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
- 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f,
- 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2c,
- 0x0a, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74,
- 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04,
- 0x64, 0x72, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x72, 0x6f, 0x70,
- 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x32, 0x62, 0x0a, 0x0c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x57, 0x0a, 0x0d, 0x69, 0x6f,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x4c, 0x6f, 0x61,
- 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
- 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
- 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x62,
- 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_lb_v1_load_balancer_proto_rawDescOnce sync.Once
- file_grpc_lb_v1_load_balancer_proto_rawDescData = file_grpc_lb_v1_load_balancer_proto_rawDesc
-)
-
-func file_grpc_lb_v1_load_balancer_proto_rawDescGZIP() []byte {
- file_grpc_lb_v1_load_balancer_proto_rawDescOnce.Do(func() {
- file_grpc_lb_v1_load_balancer_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lb_v1_load_balancer_proto_rawDescData)
- })
- return file_grpc_lb_v1_load_balancer_proto_rawDescData
-}
-
-var file_grpc_lb_v1_load_balancer_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_grpc_lb_v1_load_balancer_proto_goTypes = []interface{}{
- (*LoadBalanceRequest)(nil), // 0: grpc.lb.v1.LoadBalanceRequest
- (*InitialLoadBalanceRequest)(nil), // 1: grpc.lb.v1.InitialLoadBalanceRequest
- (*ClientStatsPerToken)(nil), // 2: grpc.lb.v1.ClientStatsPerToken
- (*ClientStats)(nil), // 3: grpc.lb.v1.ClientStats
- (*LoadBalanceResponse)(nil), // 4: grpc.lb.v1.LoadBalanceResponse
- (*FallbackResponse)(nil), // 5: grpc.lb.v1.FallbackResponse
- (*InitialLoadBalanceResponse)(nil), // 6: grpc.lb.v1.InitialLoadBalanceResponse
- (*ServerList)(nil), // 7: grpc.lb.v1.ServerList
- (*Server)(nil), // 8: grpc.lb.v1.Server
- (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
- (*durationpb.Duration)(nil), // 10: google.protobuf.Duration
-}
-var file_grpc_lb_v1_load_balancer_proto_depIdxs = []int32{
- 1, // 0: grpc.lb.v1.LoadBalanceRequest.initial_request:type_name -> grpc.lb.v1.InitialLoadBalanceRequest
- 3, // 1: grpc.lb.v1.LoadBalanceRequest.client_stats:type_name -> grpc.lb.v1.ClientStats
- 9, // 2: grpc.lb.v1.ClientStats.timestamp:type_name -> google.protobuf.Timestamp
- 2, // 3: grpc.lb.v1.ClientStats.calls_finished_with_drop:type_name -> grpc.lb.v1.ClientStatsPerToken
- 6, // 4: grpc.lb.v1.LoadBalanceResponse.initial_response:type_name -> grpc.lb.v1.InitialLoadBalanceResponse
- 7, // 5: grpc.lb.v1.LoadBalanceResponse.server_list:type_name -> grpc.lb.v1.ServerList
- 5, // 6: grpc.lb.v1.LoadBalanceResponse.fallback_response:type_name -> grpc.lb.v1.FallbackResponse
- 10, // 7: grpc.lb.v1.InitialLoadBalanceResponse.client_stats_report_interval:type_name -> google.protobuf.Duration
- 8, // 8: grpc.lb.v1.ServerList.servers:type_name -> grpc.lb.v1.Server
- 0, // 9: grpc.lb.v1.LoadBalancer.BalanceLoad:input_type -> grpc.lb.v1.LoadBalanceRequest
- 4, // 10: grpc.lb.v1.LoadBalancer.BalanceLoad:output_type -> grpc.lb.v1.LoadBalanceResponse
- 10, // [10:11] is the sub-list for method output_type
- 9, // [9:10] is the sub-list for method input_type
- 9, // [9:9] is the sub-list for extension type_name
- 9, // [9:9] is the sub-list for extension extendee
- 0, // [0:9] is the sub-list for field type_name
-}
-
-func init() { file_grpc_lb_v1_load_balancer_proto_init() }
-func file_grpc_lb_v1_load_balancer_proto_init() {
- if File_grpc_lb_v1_load_balancer_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_lb_v1_load_balancer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalanceRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InitialLoadBalanceRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientStatsPerToken); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientStats); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalanceResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FallbackResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InitialLoadBalanceResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Server); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*LoadBalanceRequest_InitialRequest)(nil),
- (*LoadBalanceRequest_ClientStats)(nil),
- }
- file_grpc_lb_v1_load_balancer_proto_msgTypes[4].OneofWrappers = []interface{}{
- (*LoadBalanceResponse_InitialResponse)(nil),
- (*LoadBalanceResponse_ServerList)(nil),
- (*LoadBalanceResponse_FallbackResponse)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_lb_v1_load_balancer_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 9,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_lb_v1_load_balancer_proto_goTypes,
- DependencyIndexes: file_grpc_lb_v1_load_balancer_proto_depIdxs,
- MessageInfos: file_grpc_lb_v1_load_balancer_proto_msgTypes,
- }.Build()
- File_grpc_lb_v1_load_balancer_proto = out.File
- file_grpc_lb_v1_load_balancer_proto_rawDesc = nil
- file_grpc_lb_v1_load_balancer_proto_goTypes = nil
- file_grpc_lb_v1_load_balancer_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/lb/v1/load_reporter.pb.go b/gen/proto/grpc/lb/v1/load_reporter.pb.go
deleted file mode 100644
index 6ca0e01..0000000
--- a/gen/proto/grpc/lb/v1/load_reporter.pb.go
+++ /dev/null
@@ -1,1112 +0,0 @@
-// Copyright 2018 gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/lb/v1/load_reporter.proto
-
-package lb
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type InitialLoadReportResponse_ImplementationIdentifier int32
-
-const (
- InitialLoadReportResponse_IMPL_UNSPECIFIED InitialLoadReportResponse_ImplementationIdentifier = 0
- InitialLoadReportResponse_CPP InitialLoadReportResponse_ImplementationIdentifier = 1 // Standard Google C++ implementation.
- InitialLoadReportResponse_JAVA InitialLoadReportResponse_ImplementationIdentifier = 2 // Standard Google Java implementation.
- InitialLoadReportResponse_GO InitialLoadReportResponse_ImplementationIdentifier = 3 // Standard Google Go implementation.
-)
-
-// Enum value maps for InitialLoadReportResponse_ImplementationIdentifier.
-var (
- InitialLoadReportResponse_ImplementationIdentifier_name = map[int32]string{
- 0: "IMPL_UNSPECIFIED",
- 1: "CPP",
- 2: "JAVA",
- 3: "GO",
- }
- InitialLoadReportResponse_ImplementationIdentifier_value = map[string]int32{
- "IMPL_UNSPECIFIED": 0,
- "CPP": 1,
- "JAVA": 2,
- "GO": 3,
- }
-)
-
-func (x InitialLoadReportResponse_ImplementationIdentifier) Enum() *InitialLoadReportResponse_ImplementationIdentifier {
- p := new(InitialLoadReportResponse_ImplementationIdentifier)
- *p = x
- return p
-}
-
-func (x InitialLoadReportResponse_ImplementationIdentifier) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (InitialLoadReportResponse_ImplementationIdentifier) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_lb_v1_load_reporter_proto_enumTypes[0].Descriptor()
-}
-
-func (InitialLoadReportResponse_ImplementationIdentifier) Type() protoreflect.EnumType {
- return &file_grpc_lb_v1_load_reporter_proto_enumTypes[0]
-}
-
-func (x InitialLoadReportResponse_ImplementationIdentifier) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use InitialLoadReportResponse_ImplementationIdentifier.Descriptor instead.
-func (InitialLoadReportResponse_ImplementationIdentifier) EnumDescriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{3, 0}
-}
-
-type LoadReportRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This message should be sent on the first request to the gRPC server.
- InitialRequest *InitialLoadReportRequest `protobuf:"bytes,1,opt,name=initial_request,json=initialRequest,proto3" json:"initial_request,omitempty"`
-}
-
-func (x *LoadReportRequest) Reset() {
- *x = LoadReportRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadReportRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadReportRequest) ProtoMessage() {}
-
-func (x *LoadReportRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadReportRequest.ProtoReflect.Descriptor instead.
-func (*LoadReportRequest) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *LoadReportRequest) GetInitialRequest() *InitialLoadReportRequest {
- if x != nil {
- return x.InitialRequest
- }
- return nil
-}
-
-type InitialLoadReportRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The hostname this load reporter client is requesting load for.
- LoadBalancedHostname string `protobuf:"bytes,1,opt,name=load_balanced_hostname,json=loadBalancedHostname,proto3" json:"load_balanced_hostname,omitempty"`
- // Additional information to disambiguate orphaned load: load that should have
- // gone to this load reporter client, but was not able to be sent since the
- // load reporter client has disconnected. load_key is sent in orphaned load
- // reports; see Load.load_key.
- LoadKey []byte `protobuf:"bytes,2,opt,name=load_key,json=loadKey,proto3" json:"load_key,omitempty"`
- // This interval defines how often the server should send load reports to
- // the load balancer.
- LoadReportInterval *durationpb.Duration `protobuf:"bytes,3,opt,name=load_report_interval,json=loadReportInterval,proto3" json:"load_report_interval,omitempty"`
-}
-
-func (x *InitialLoadReportRequest) Reset() {
- *x = InitialLoadReportRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *InitialLoadReportRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*InitialLoadReportRequest) ProtoMessage() {}
-
-func (x *InitialLoadReportRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use InitialLoadReportRequest.ProtoReflect.Descriptor instead.
-func (*InitialLoadReportRequest) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *InitialLoadReportRequest) GetLoadBalancedHostname() string {
- if x != nil {
- return x.LoadBalancedHostname
- }
- return ""
-}
-
-func (x *InitialLoadReportRequest) GetLoadKey() []byte {
- if x != nil {
- return x.LoadKey
- }
- return nil
-}
-
-func (x *InitialLoadReportRequest) GetLoadReportInterval() *durationpb.Duration {
- if x != nil {
- return x.LoadReportInterval
- }
- return nil
-}
-
-type LoadReportResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This message should be sent on the first response to the load balancer.
- InitialResponse *InitialLoadReportResponse `protobuf:"bytes,1,opt,name=initial_response,json=initialResponse,proto3" json:"initial_response,omitempty"`
- // Reports server-wide statistics for load balancing.
- // This should be reported with every response.
- LoadBalancingFeedback *LoadBalancingFeedback `protobuf:"bytes,2,opt,name=load_balancing_feedback,json=loadBalancingFeedback,proto3" json:"load_balancing_feedback,omitempty"`
- // A load report for each tuple. This could be considered to be
- // a multimap indexed by . It is not strictly necessary to
- // aggregate all entries into one entry per tuple, although it
- // is preferred to do so.
- Load []*Load `protobuf:"bytes,3,rep,name=load,proto3" json:"load,omitempty"`
-}
-
-func (x *LoadReportResponse) Reset() {
- *x = LoadReportResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadReportResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadReportResponse) ProtoMessage() {}
-
-func (x *LoadReportResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadReportResponse.ProtoReflect.Descriptor instead.
-func (*LoadReportResponse) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *LoadReportResponse) GetInitialResponse() *InitialLoadReportResponse {
- if x != nil {
- return x.InitialResponse
- }
- return nil
-}
-
-func (x *LoadReportResponse) GetLoadBalancingFeedback() *LoadBalancingFeedback {
- if x != nil {
- return x.LoadBalancingFeedback
- }
- return nil
-}
-
-func (x *LoadReportResponse) GetLoad() []*Load {
- if x != nil {
- return x.Load
- }
- return nil
-}
-
-type InitialLoadReportResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Initial response returns the Load balancer WorkloadID. This must be plain text
- // (printable ASCII).
- LoadBalancerId string `protobuf:"bytes,1,opt,name=load_balancer_id,json=loadBalancerId,proto3" json:"load_balancer_id,omitempty"`
- // Optional identifier of this implementation of the load reporting server.
- ImplementationId InitialLoadReportResponse_ImplementationIdentifier `protobuf:"varint,2,opt,name=implementation_id,json=implementationId,proto3,enum=grpc.lb.v1.InitialLoadReportResponse_ImplementationIdentifier" json:"implementation_id,omitempty"`
- // Optional server_version should be a value that is modified (and
- // monotonically increased) when changes are made to the server
- // implementation.
- ServerVersion int64 `protobuf:"varint,3,opt,name=server_version,json=serverVersion,proto3" json:"server_version,omitempty"`
-}
-
-func (x *InitialLoadReportResponse) Reset() {
- *x = InitialLoadReportResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *InitialLoadReportResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*InitialLoadReportResponse) ProtoMessage() {}
-
-func (x *InitialLoadReportResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use InitialLoadReportResponse.ProtoReflect.Descriptor instead.
-func (*InitialLoadReportResponse) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *InitialLoadReportResponse) GetLoadBalancerId() string {
- if x != nil {
- return x.LoadBalancerId
- }
- return ""
-}
-
-func (x *InitialLoadReportResponse) GetImplementationId() InitialLoadReportResponse_ImplementationIdentifier {
- if x != nil {
- return x.ImplementationId
- }
- return InitialLoadReportResponse_IMPL_UNSPECIFIED
-}
-
-func (x *InitialLoadReportResponse) GetServerVersion() int64 {
- if x != nil {
- return x.ServerVersion
- }
- return 0
-}
-
-type LoadBalancingFeedback struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Reports the current utilization of the server (typical range [0.0 - 1.0]).
- ServerUtilization float32 `protobuf:"fixed32,1,opt,name=server_utilization,json=serverUtilization,proto3" json:"server_utilization,omitempty"`
- // The total rate of calls handled by this server (including errors).
- CallsPerSecond float32 `protobuf:"fixed32,2,opt,name=calls_per_second,json=callsPerSecond,proto3" json:"calls_per_second,omitempty"`
- // The total rate of error responses sent by this server.
- ErrorsPerSecond float32 `protobuf:"fixed32,3,opt,name=errors_per_second,json=errorsPerSecond,proto3" json:"errors_per_second,omitempty"`
-}
-
-func (x *LoadBalancingFeedback) Reset() {
- *x = LoadBalancingFeedback{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancingFeedback) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancingFeedback) ProtoMessage() {}
-
-func (x *LoadBalancingFeedback) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancingFeedback.ProtoReflect.Descriptor instead.
-func (*LoadBalancingFeedback) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *LoadBalancingFeedback) GetServerUtilization() float32 {
- if x != nil {
- return x.ServerUtilization
- }
- return 0
-}
-
-func (x *LoadBalancingFeedback) GetCallsPerSecond() float32 {
- if x != nil {
- return x.CallsPerSecond
- }
- return 0
-}
-
-func (x *LoadBalancingFeedback) GetErrorsPerSecond() float32 {
- if x != nil {
- return x.ErrorsPerSecond
- }
- return 0
-}
-
-type Load struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The (plain text) tag used by the calls covered by this load report. The
- // tag is that part of the load balancer token after removing the load
- // balancer id. Empty is equivalent to non-existent tag.
- LoadBalanceTag string `protobuf:"bytes,1,opt,name=load_balance_tag,json=loadBalanceTag,proto3" json:"load_balance_tag,omitempty"`
- // The user identity authenticated by the calls covered by this load
- // report. Empty is equivalent to no known user_id.
- UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
- // IP address of the client that sent these requests, serialized in
- // network-byte-order. It may either be an IPv4 or IPv6 address.
- ClientIpAddress []byte `protobuf:"bytes,15,opt,name=client_ip_address,json=clientIpAddress,proto3" json:"client_ip_address,omitempty"`
- // The number of calls started (since the last report) with the given tag and
- // user_id.
- NumCallsStarted int64 `protobuf:"varint,4,opt,name=num_calls_started,json=numCallsStarted,proto3" json:"num_calls_started,omitempty"`
- // Indicates whether this load report is an in-progress load report in which
- // num_calls_in_progress is the only valid entry. If in_progress_report is not
- // set, num_calls_in_progress will be ignored. If in_progress_report is set,
- // fields other than num_calls_in_progress and orphaned_load will be ignored.
- // TODO(juanlishen): A Load is either an in_progress_report or not. We should
- // make this explicit in hierarchy. From the log, I see in_progress_report_
- // has a random num_calls_in_progress_ when not set, which might lead to bug
- // when the balancer process the load report.
- //
- // Types that are assignable to InProgressReport:
- // *Load_NumCallsInProgress
- InProgressReport isLoad_InProgressReport `protobuf_oneof:"in_progress_report"`
- // The following values are counts or totals of call statistics that finished
- // with the given tag and user_id.
- NumCallsFinishedWithoutError int64 `protobuf:"varint,6,opt,name=num_calls_finished_without_error,json=numCallsFinishedWithoutError,proto3" json:"num_calls_finished_without_error,omitempty"` // Calls with status OK.
- NumCallsFinishedWithError int64 `protobuf:"varint,7,opt,name=num_calls_finished_with_error,json=numCallsFinishedWithError,proto3" json:"num_calls_finished_with_error,omitempty"` // Calls with status non-OK.
- // Calls that finished with a status that maps to HTTP 5XX (see
- // googleapis/google/rpc/code.proto). Note that this is a subset of
- // num_calls_finished_with_error.
- NumCallsFinishedWithServerError int64 `protobuf:"varint,16,opt,name=num_calls_finished_with_server_error,json=numCallsFinishedWithServerError,proto3" json:"num_calls_finished_with_server_error,omitempty"`
- // Totals are from calls that with _and_ without error.
- TotalBytesSent int64 `protobuf:"varint,8,opt,name=total_bytes_sent,json=totalBytesSent,proto3" json:"total_bytes_sent,omitempty"`
- TotalBytesReceived int64 `protobuf:"varint,9,opt,name=total_bytes_received,json=totalBytesReceived,proto3" json:"total_bytes_received,omitempty"`
- TotalLatency *durationpb.Duration `protobuf:"bytes,10,opt,name=total_latency,json=totalLatency,proto3" json:"total_latency,omitempty"`
- // Optional metrics reported for the call(s). Requires that metric_name is
- // unique.
- MetricData []*CallMetricData `protobuf:"bytes,11,rep,name=metric_data,json=metricData,proto3" json:"metric_data,omitempty"`
- // The following two fields are used for reporting orphaned load: load that
- // could not be reported to the originating balancer either since the balancer
- // is no longer connected or because the frontend sent an invalid token. These
- // fields must not be set with normal (unorphaned) load reports.
- //
- // Types that are assignable to OrphanedLoad:
- // *Load_LoadKey
- // *Load_LoadKeyUnknown
- // *Load_OrphanedLoadIdentifier
- OrphanedLoad isLoad_OrphanedLoad `protobuf_oneof:"orphaned_load"`
-}
-
-func (x *Load) Reset() {
- *x = Load{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Load) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Load) ProtoMessage() {}
-
-func (x *Load) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Load.ProtoReflect.Descriptor instead.
-func (*Load) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Load) GetLoadBalanceTag() string {
- if x != nil {
- return x.LoadBalanceTag
- }
- return ""
-}
-
-func (x *Load) GetUserId() string {
- if x != nil {
- return x.UserId
- }
- return ""
-}
-
-func (x *Load) GetClientIpAddress() []byte {
- if x != nil {
- return x.ClientIpAddress
- }
- return nil
-}
-
-func (x *Load) GetNumCallsStarted() int64 {
- if x != nil {
- return x.NumCallsStarted
- }
- return 0
-}
-
-func (m *Load) GetInProgressReport() isLoad_InProgressReport {
- if m != nil {
- return m.InProgressReport
- }
- return nil
-}
-
-func (x *Load) GetNumCallsInProgress() int64 {
- if x, ok := x.GetInProgressReport().(*Load_NumCallsInProgress); ok {
- return x.NumCallsInProgress
- }
- return 0
-}
-
-func (x *Load) GetNumCallsFinishedWithoutError() int64 {
- if x != nil {
- return x.NumCallsFinishedWithoutError
- }
- return 0
-}
-
-func (x *Load) GetNumCallsFinishedWithError() int64 {
- if x != nil {
- return x.NumCallsFinishedWithError
- }
- return 0
-}
-
-func (x *Load) GetNumCallsFinishedWithServerError() int64 {
- if x != nil {
- return x.NumCallsFinishedWithServerError
- }
- return 0
-}
-
-func (x *Load) GetTotalBytesSent() int64 {
- if x != nil {
- return x.TotalBytesSent
- }
- return 0
-}
-
-func (x *Load) GetTotalBytesReceived() int64 {
- if x != nil {
- return x.TotalBytesReceived
- }
- return 0
-}
-
-func (x *Load) GetTotalLatency() *durationpb.Duration {
- if x != nil {
- return x.TotalLatency
- }
- return nil
-}
-
-func (x *Load) GetMetricData() []*CallMetricData {
- if x != nil {
- return x.MetricData
- }
- return nil
-}
-
-func (m *Load) GetOrphanedLoad() isLoad_OrphanedLoad {
- if m != nil {
- return m.OrphanedLoad
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *Load) GetLoadKey() []byte {
- if x, ok := x.GetOrphanedLoad().(*Load_LoadKey); ok {
- return x.LoadKey
- }
- return nil
-}
-
-func (x *Load) GetLoadKeyUnknown() bool {
- if x, ok := x.GetOrphanedLoad().(*Load_LoadKeyUnknown); ok {
- return x.LoadKeyUnknown
- }
- return false
-}
-
-func (x *Load) GetOrphanedLoadIdentifier() *OrphanedLoadIdentifier {
- if x, ok := x.GetOrphanedLoad().(*Load_OrphanedLoadIdentifier); ok {
- return x.OrphanedLoadIdentifier
- }
- return nil
-}
-
-type isLoad_InProgressReport interface {
- isLoad_InProgressReport()
-}
-
-type Load_NumCallsInProgress struct {
- // The number of calls in progress (instantaneously) per load balancer id.
- NumCallsInProgress int64 `protobuf:"varint,5,opt,name=num_calls_in_progress,json=numCallsInProgress,proto3,oneof"`
-}
-
-func (*Load_NumCallsInProgress) isLoad_InProgressReport() {}
-
-type isLoad_OrphanedLoad interface {
- isLoad_OrphanedLoad()
-}
-
-type Load_LoadKey struct {
- // Load_key is the load_key from the initial_request from the originating
- // balancer.
- //
- // Deprecated: Do not use.
- LoadKey []byte `protobuf:"bytes,12,opt,name=load_key,json=loadKey,proto3,oneof"`
-}
-
-type Load_LoadKeyUnknown struct {
- // If true then this load report is for calls that had an invalid token; the
- // user is probably abusing the gRPC protocol.
- // TODO(yankaiz): Rename load_key_unknown.
- LoadKeyUnknown bool `protobuf:"varint,13,opt,name=load_key_unknown,json=loadKeyUnknown,proto3,oneof"`
-}
-
-type Load_OrphanedLoadIdentifier struct {
- // load_key and balancer_id are included in order to identify orphaned load
- // from different origins.
- OrphanedLoadIdentifier *OrphanedLoadIdentifier `protobuf:"bytes,14,opt,name=orphaned_load_identifier,json=orphanedLoadIdentifier,proto3,oneof"`
-}
-
-func (*Load_LoadKey) isLoad_OrphanedLoad() {}
-
-func (*Load_LoadKeyUnknown) isLoad_OrphanedLoad() {}
-
-func (*Load_OrphanedLoadIdentifier) isLoad_OrphanedLoad() {}
-
-type CallMetricData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Name of the metric; may be empty.
- MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"`
- // Number of calls that finished and included this metric.
- NumCallsFinishedWithMetric int64 `protobuf:"varint,2,opt,name=num_calls_finished_with_metric,json=numCallsFinishedWithMetric,proto3" json:"num_calls_finished_with_metric,omitempty"`
- // Sum of metric values across all calls that finished with this metric.
- TotalMetricValue float64 `protobuf:"fixed64,3,opt,name=total_metric_value,json=totalMetricValue,proto3" json:"total_metric_value,omitempty"`
-}
-
-func (x *CallMetricData) Reset() {
- *x = CallMetricData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CallMetricData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CallMetricData) ProtoMessage() {}
-
-func (x *CallMetricData) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CallMetricData.ProtoReflect.Descriptor instead.
-func (*CallMetricData) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *CallMetricData) GetMetricName() string {
- if x != nil {
- return x.MetricName
- }
- return ""
-}
-
-func (x *CallMetricData) GetNumCallsFinishedWithMetric() int64 {
- if x != nil {
- return x.NumCallsFinishedWithMetric
- }
- return 0
-}
-
-func (x *CallMetricData) GetTotalMetricValue() float64 {
- if x != nil {
- return x.TotalMetricValue
- }
- return 0
-}
-
-type OrphanedLoadIdentifier struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The load_key from the initial_request from the originating balancer.
- LoadKey []byte `protobuf:"bytes,1,opt,name=load_key,json=loadKey,proto3" json:"load_key,omitempty"`
- // The unique WorkloadID generated by LoadReporter to identify balancers. Here it
- // distinguishes orphaned load with a same load_key.
- LoadBalancerId string `protobuf:"bytes,2,opt,name=load_balancer_id,json=loadBalancerId,proto3" json:"load_balancer_id,omitempty"`
-}
-
-func (x *OrphanedLoadIdentifier) Reset() {
- *x = OrphanedLoadIdentifier{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OrphanedLoadIdentifier) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OrphanedLoadIdentifier) ProtoMessage() {}
-
-func (x *OrphanedLoadIdentifier) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lb_v1_load_reporter_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OrphanedLoadIdentifier.ProtoReflect.Descriptor instead.
-func (*OrphanedLoadIdentifier) Descriptor() ([]byte, []int) {
- return file_grpc_lb_v1_load_reporter_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *OrphanedLoadIdentifier) GetLoadKey() []byte {
- if x != nil {
- return x.LoadKey
- }
- return nil
-}
-
-func (x *OrphanedLoadIdentifier) GetLoadBalancerId() string {
- if x != nil {
- return x.LoadBalancerId
- }
- return ""
-}
-
-var File_grpc_lb_v1_load_reporter_proto protoreflect.FileDescriptor
-
-var file_grpc_lb_v1_load_reporter_proto_rawDesc = []byte{
- 0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x12, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x62, 0x0a, 0x11,
- 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x4d, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c,
- 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x22, 0xb8, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a,
- 0x16, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x68,
- 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c,
- 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x48, 0x6f, 0x73, 0x74, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x4b,
- 0x0a, 0x14, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e,
- 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xe7, 0x01, 0x0a, 0x12,
- 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x50, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61,
- 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x17, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67,
- 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12,
- 0x24, 0x0a, 0x04, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52,
- 0x04, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xa6, 0x02, 0x0a, 0x19, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61,
- 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c,
- 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x64, 0x12, 0x6b, 0x0a,
- 0x11, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61,
- 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
- 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x10, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d,
- 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x22, 0x4b, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x14, 0x0a,
- 0x10, 0x49, 0x4d, 0x50, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
- 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x50, 0x50, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
- 0x4a, 0x41, 0x56, 0x41, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x4f, 0x10, 0x03, 0x22, 0x9c,
- 0x01, 0x0a, 0x15, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67,
- 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x74, 0x69, 0x6c,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6c, 0x6c, 0x73,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x02, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e,
- 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f,
- 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x65, 0x72,
- 0x72, 0x6f, 0x72, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x22, 0xe2, 0x06,
- 0x0a, 0x04, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62,
- 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x61, 0x67,
- 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0f,
- 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x41, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c,
- 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65,
- 0x64, 0x12, 0x33, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x69,
- 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
- 0x48, 0x00, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x49, 0x6e, 0x50, 0x72,
- 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x46, 0x0a, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61,
- 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74,
- 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x1c, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68,
- 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x40,
- 0x0a, 0x1d, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69,
- 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46,
- 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72,
- 0x12, 0x4d, 0x0a, 0x24, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69,
- 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1f,
- 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
- 0x57, 0x69, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
- 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73,
- 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c,
- 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74,
- 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
- 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79,
- 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0d, 0x74,
- 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74,
- 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61,
- 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x48, 0x01,
- 0x52, 0x07, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x0d, 0x20,
- 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x55, 0x6e,
- 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x5e, 0x0a, 0x18, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65,
- 0x64, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
- 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c,
- 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x61,
- 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x01, 0x52, 0x16, 0x6f,
- 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x67,
- 0x72, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x6f,
- 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02,
- 0x10, 0x03, 0x22, 0xa3, 0x01, 0x0a, 0x0e, 0x43, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x1e, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61,
- 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74,
- 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a,
- 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
- 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5d, 0x0a, 0x16, 0x4f, 0x72, 0x70, 0x68,
- 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
- 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a,
- 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69,
- 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x64, 0x32, 0x61, 0x0a, 0x0c, 0x4c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
- 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76,
- 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69,
- 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d,
- 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_lb_v1_load_reporter_proto_rawDescOnce sync.Once
- file_grpc_lb_v1_load_reporter_proto_rawDescData = file_grpc_lb_v1_load_reporter_proto_rawDesc
-)
-
-func file_grpc_lb_v1_load_reporter_proto_rawDescGZIP() []byte {
- file_grpc_lb_v1_load_reporter_proto_rawDescOnce.Do(func() {
- file_grpc_lb_v1_load_reporter_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lb_v1_load_reporter_proto_rawDescData)
- })
- return file_grpc_lb_v1_load_reporter_proto_rawDescData
-}
-
-var file_grpc_lb_v1_load_reporter_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_grpc_lb_v1_load_reporter_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_grpc_lb_v1_load_reporter_proto_goTypes = []interface{}{
- (InitialLoadReportResponse_ImplementationIdentifier)(0), // 0: grpc.lb.v1.InitialLoadReportResponse.ImplementationIdentifier
- (*LoadReportRequest)(nil), // 1: grpc.lb.v1.LoadReportRequest
- (*InitialLoadReportRequest)(nil), // 2: grpc.lb.v1.InitialLoadReportRequest
- (*LoadReportResponse)(nil), // 3: grpc.lb.v1.LoadReportResponse
- (*InitialLoadReportResponse)(nil), // 4: grpc.lb.v1.InitialLoadReportResponse
- (*LoadBalancingFeedback)(nil), // 5: grpc.lb.v1.LoadBalancingFeedback
- (*Load)(nil), // 6: grpc.lb.v1.Load
- (*CallMetricData)(nil), // 7: grpc.lb.v1.CallMetricData
- (*OrphanedLoadIdentifier)(nil), // 8: grpc.lb.v1.OrphanedLoadIdentifier
- (*durationpb.Duration)(nil), // 9: google.protobuf.Duration
-}
-var file_grpc_lb_v1_load_reporter_proto_depIdxs = []int32{
- 2, // 0: grpc.lb.v1.LoadReportRequest.initial_request:type_name -> grpc.lb.v1.InitialLoadReportRequest
- 9, // 1: grpc.lb.v1.InitialLoadReportRequest.load_report_interval:type_name -> google.protobuf.Duration
- 4, // 2: grpc.lb.v1.LoadReportResponse.initial_response:type_name -> grpc.lb.v1.InitialLoadReportResponse
- 5, // 3: grpc.lb.v1.LoadReportResponse.load_balancing_feedback:type_name -> grpc.lb.v1.LoadBalancingFeedback
- 6, // 4: grpc.lb.v1.LoadReportResponse.load:type_name -> grpc.lb.v1.Load
- 0, // 5: grpc.lb.v1.InitialLoadReportResponse.implementation_id:type_name -> grpc.lb.v1.InitialLoadReportResponse.ImplementationIdentifier
- 9, // 6: grpc.lb.v1.Load.total_latency:type_name -> google.protobuf.Duration
- 7, // 7: grpc.lb.v1.Load.metric_data:type_name -> grpc.lb.v1.CallMetricData
- 8, // 8: grpc.lb.v1.Load.orphaned_load_identifier:type_name -> grpc.lb.v1.OrphanedLoadIdentifier
- 1, // 9: grpc.lb.v1.LoadReporter.ReportLoad:input_type -> grpc.lb.v1.LoadReportRequest
- 3, // 10: grpc.lb.v1.LoadReporter.ReportLoad:output_type -> grpc.lb.v1.LoadReportResponse
- 10, // [10:11] is the sub-list for method output_type
- 9, // [9:10] is the sub-list for method input_type
- 9, // [9:9] is the sub-list for extension type_name
- 9, // [9:9] is the sub-list for extension extendee
- 0, // [0:9] is the sub-list for field type_name
-}
-
-func init() { file_grpc_lb_v1_load_reporter_proto_init() }
-func file_grpc_lb_v1_load_reporter_proto_init() {
- if File_grpc_lb_v1_load_reporter_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_lb_v1_load_reporter_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadReportRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InitialLoadReportRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadReportResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InitialLoadReportResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancingFeedback); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Load); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CallMetricData); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OrphanedLoadIdentifier); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_lb_v1_load_reporter_proto_msgTypes[5].OneofWrappers = []interface{}{
- (*Load_NumCallsInProgress)(nil),
- (*Load_LoadKey)(nil),
- (*Load_LoadKeyUnknown)(nil),
- (*Load_OrphanedLoadIdentifier)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_lb_v1_load_reporter_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 8,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_lb_v1_load_reporter_proto_goTypes,
- DependencyIndexes: file_grpc_lb_v1_load_reporter_proto_depIdxs,
- EnumInfos: file_grpc_lb_v1_load_reporter_proto_enumTypes,
- MessageInfos: file_grpc_lb_v1_load_reporter_proto_msgTypes,
- }.Build()
- File_grpc_lb_v1_load_reporter_proto = out.File
- file_grpc_lb_v1_load_reporter_proto_rawDesc = nil
- file_grpc_lb_v1_load_reporter_proto_goTypes = nil
- file_grpc_lb_v1_load_reporter_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/lookup/v1/rls.pb.go b/gen/proto/grpc/lookup/v1/rls.pb.go
deleted file mode 100644
index f7b66e8..0000000
--- a/gen/proto/grpc/lookup/v1/rls.pb.go
+++ /dev/null
@@ -1,357 +0,0 @@
-// Copyright 2020 The gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/lookup/v1/rls.proto
-
-package grpc_lookup_v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Possible reasons for making a request.
-type RouteLookupRequest_Reason int32
-
-const (
- RouteLookupRequest_REASON_UNKNOWN RouteLookupRequest_Reason = 0 // Unused
- RouteLookupRequest_REASON_MISS RouteLookupRequest_Reason = 1 // No data available in local cache
- RouteLookupRequest_REASON_STALE RouteLookupRequest_Reason = 2 // Data in local cache is stale
-)
-
-// Enum value maps for RouteLookupRequest_Reason.
-var (
- RouteLookupRequest_Reason_name = map[int32]string{
- 0: "REASON_UNKNOWN",
- 1: "REASON_MISS",
- 2: "REASON_STALE",
- }
- RouteLookupRequest_Reason_value = map[string]int32{
- "REASON_UNKNOWN": 0,
- "REASON_MISS": 1,
- "REASON_STALE": 2,
- }
-)
-
-func (x RouteLookupRequest_Reason) Enum() *RouteLookupRequest_Reason {
- p := new(RouteLookupRequest_Reason)
- *p = x
- return p
-}
-
-func (x RouteLookupRequest_Reason) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (RouteLookupRequest_Reason) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_lookup_v1_rls_proto_enumTypes[0].Descriptor()
-}
-
-func (RouteLookupRequest_Reason) Type() protoreflect.EnumType {
- return &file_grpc_lookup_v1_rls_proto_enumTypes[0]
-}
-
-func (x RouteLookupRequest_Reason) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use RouteLookupRequest_Reason.Descriptor instead.
-func (RouteLookupRequest_Reason) EnumDescriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type RouteLookupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Target type allows the client to specify what kind of target format it
- // would like from RLS to allow it to find the regional server, e.g. "grpc".
- TargetType string `protobuf:"bytes,3,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"`
- // Reason for making this request.
- Reason RouteLookupRequest_Reason `protobuf:"varint,5,opt,name=reason,proto3,enum=grpc.lookup.v1.RouteLookupRequest_Reason" json:"reason,omitempty"`
- // For REASON_STALE, the header_data from the stale response, if any.
- StaleHeaderData string `protobuf:"bytes,6,opt,name=stale_header_data,json=staleHeaderData,proto3" json:"stale_header_data,omitempty"`
- // Map of key values extracted via key builders for the gRPC or HTTP request.
- KeyMap map[string]string `protobuf:"bytes,4,rep,name=key_map,json=keyMap,proto3" json:"key_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *RouteLookupRequest) Reset() {
- *x = RouteLookupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RouteLookupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RouteLookupRequest) ProtoMessage() {}
-
-func (x *RouteLookupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RouteLookupRequest.ProtoReflect.Descriptor instead.
-func (*RouteLookupRequest) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RouteLookupRequest) GetTargetType() string {
- if x != nil {
- return x.TargetType
- }
- return ""
-}
-
-func (x *RouteLookupRequest) GetReason() RouteLookupRequest_Reason {
- if x != nil {
- return x.Reason
- }
- return RouteLookupRequest_REASON_UNKNOWN
-}
-
-func (x *RouteLookupRequest) GetStaleHeaderData() string {
- if x != nil {
- return x.StaleHeaderData
- }
- return ""
-}
-
-func (x *RouteLookupRequest) GetKeyMap() map[string]string {
- if x != nil {
- return x.KeyMap
- }
- return nil
-}
-
-type RouteLookupResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Prioritized list (best one first) of addressable entities to use
- // for routing, using syntax requested by the request target_type.
- // The targets will be tried in order until a healthy one is found.
- Targets []string `protobuf:"bytes,3,rep,name=targets,proto3" json:"targets,omitempty"`
- // Optional header value to pass along to AFE in the X-Google-RLS-Data header.
- // Cached with "target" and sent with all requests that match the request key.
- // Allows the RLS to pass its work product to the eventual target.
- HeaderData string `protobuf:"bytes,2,opt,name=header_data,json=headerData,proto3" json:"header_data,omitempty"`
-}
-
-func (x *RouteLookupResponse) Reset() {
- *x = RouteLookupResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RouteLookupResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RouteLookupResponse) ProtoMessage() {}
-
-func (x *RouteLookupResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RouteLookupResponse.ProtoReflect.Descriptor instead.
-func (*RouteLookupResponse) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *RouteLookupResponse) GetTargets() []string {
- if x != nil {
- return x.Targets
- }
- return nil
-}
-
-func (x *RouteLookupResponse) GetHeaderData() string {
- if x != nil {
- return x.HeaderData
- }
- return ""
-}
-
-var File_grpc_lookup_v1_rls_proto protoreflect.FileDescriptor
-
-var file_grpc_lookup_v1_rls_proto_rawDesc = []byte{
- 0x0a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x22, 0x83, 0x03, 0x0a, 0x12, 0x52,
- 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79,
- 0x70, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72,
- 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x68,
- 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x44, 0x61, 0x74,
- 0x61, 0x12, 0x47, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x1a, 0x39, 0x0a, 0x0b, 0x4b, 0x65,
- 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3f, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
- 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
- 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x49,
- 0x53, 0x53, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53,
- 0x54, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02,
- 0x10, 0x03, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68,
- 0x22, 0x5e, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x44, 0x61,
- 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x32, 0x6e, 0x0a, 0x12, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c,
- 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
- 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b,
- 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65,
- 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x42, 0x4d, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b,
- 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x52, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
- 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
- 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
- 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x31, 0x62,
- 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_lookup_v1_rls_proto_rawDescOnce sync.Once
- file_grpc_lookup_v1_rls_proto_rawDescData = file_grpc_lookup_v1_rls_proto_rawDesc
-)
-
-func file_grpc_lookup_v1_rls_proto_rawDescGZIP() []byte {
- file_grpc_lookup_v1_rls_proto_rawDescOnce.Do(func() {
- file_grpc_lookup_v1_rls_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lookup_v1_rls_proto_rawDescData)
- })
- return file_grpc_lookup_v1_rls_proto_rawDescData
-}
-
-var file_grpc_lookup_v1_rls_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_grpc_lookup_v1_rls_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_grpc_lookup_v1_rls_proto_goTypes = []interface{}{
- (RouteLookupRequest_Reason)(0), // 0: grpc.lookup.v1.RouteLookupRequest.Reason
- (*RouteLookupRequest)(nil), // 1: grpc.lookup.v1.RouteLookupRequest
- (*RouteLookupResponse)(nil), // 2: grpc.lookup.v1.RouteLookupResponse
- nil, // 3: grpc.lookup.v1.RouteLookupRequest.KeyMapEntry
-}
-var file_grpc_lookup_v1_rls_proto_depIdxs = []int32{
- 0, // 0: grpc.lookup.v1.RouteLookupRequest.reason:type_name -> grpc.lookup.v1.RouteLookupRequest.Reason
- 3, // 1: grpc.lookup.v1.RouteLookupRequest.key_map:type_name -> grpc.lookup.v1.RouteLookupRequest.KeyMapEntry
- 1, // 2: grpc.lookup.v1.RouteLookupService.RouteLookup:input_type -> grpc.lookup.v1.RouteLookupRequest
- 2, // 3: grpc.lookup.v1.RouteLookupService.RouteLookup:output_type -> grpc.lookup.v1.RouteLookupResponse
- 3, // [3:4] is the sub-list for method output_type
- 2, // [2:3] is the sub-list for method input_type
- 2, // [2:2] is the sub-list for extension type_name
- 2, // [2:2] is the sub-list for extension extendee
- 0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_grpc_lookup_v1_rls_proto_init() }
-func file_grpc_lookup_v1_rls_proto_init() {
- if File_grpc_lookup_v1_rls_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_lookup_v1_rls_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RouteLookupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lookup_v1_rls_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RouteLookupResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_lookup_v1_rls_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_lookup_v1_rls_proto_goTypes,
- DependencyIndexes: file_grpc_lookup_v1_rls_proto_depIdxs,
- EnumInfos: file_grpc_lookup_v1_rls_proto_enumTypes,
- MessageInfos: file_grpc_lookup_v1_rls_proto_msgTypes,
- }.Build()
- File_grpc_lookup_v1_rls_proto = out.File
- file_grpc_lookup_v1_rls_proto_rawDesc = nil
- file_grpc_lookup_v1_rls_proto_goTypes = nil
- file_grpc_lookup_v1_rls_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/lookup/v1/rls_config.pb.go b/gen/proto/grpc/lookup/v1/rls_config.pb.go
deleted file mode 100644
index a59bb87..0000000
--- a/gen/proto/grpc/lookup/v1/rls_config.pb.go
+++ /dev/null
@@ -1,935 +0,0 @@
-// Copyright 2020 The gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/lookup/v1/rls_config.proto
-
-package grpc_lookup_v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Extract a key based on a given name (e.g. header name or query parameter
-// name). The name must match one of the names listed in the "name" field. If
-// the "required_match" field is true, one of the specified names must be
-// present for the keybuilder to match.
-type NameMatcher struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name that will be used in the RLS key_map to refer to this value.
- // If required_match is true, you may omit this field or set it to an empty
- // string, in which case the matcher will require a match, but won't update
- // the key_map.
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- // Ordered list of names (headers or query parameter names) that can supply
- // this value; the first one with a non-empty value is used.
- Names []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"`
- // If true, make this extraction required; the key builder will not match
- // if no value is found.
- RequiredMatch bool `protobuf:"varint,3,opt,name=required_match,json=requiredMatch,proto3" json:"required_match,omitempty"`
-}
-
-func (x *NameMatcher) Reset() {
- *x = NameMatcher{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NameMatcher) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NameMatcher) ProtoMessage() {}
-
-func (x *NameMatcher) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NameMatcher.ProtoReflect.Descriptor instead.
-func (*NameMatcher) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *NameMatcher) GetKey() string {
- if x != nil {
- return x.Key
- }
- return ""
-}
-
-func (x *NameMatcher) GetNames() []string {
- if x != nil {
- return x.Names
- }
- return nil
-}
-
-func (x *NameMatcher) GetRequiredMatch() bool {
- if x != nil {
- return x.RequiredMatch
- }
- return false
-}
-
-// A GrpcKeyBuilder applies to a given gRPC service, name, and headers.
-type GrpcKeyBuilder struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Names []*GrpcKeyBuilder_Name `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
- ExtraKeys *GrpcKeyBuilder_ExtraKeys `protobuf:"bytes,3,opt,name=extra_keys,json=extraKeys,proto3" json:"extra_keys,omitempty"`
- // Extract keys from all listed headers.
- // For gRPC, it is an error to specify "required_match" on the NameMatcher
- // protos.
- Headers []*NameMatcher `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty"`
- // You can optionally set one or more specific key/value pairs to be added to
- // the key_map. This can be useful to identify which builder built the key,
- // for example if you are suppressing the actual method, but need to
- // separately cache and request all the matched methods.
- ConstantKeys map[string]string `protobuf:"bytes,4,rep,name=constant_keys,json=constantKeys,proto3" json:"constant_keys,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *GrpcKeyBuilder) Reset() {
- *x = GrpcKeyBuilder{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GrpcKeyBuilder) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GrpcKeyBuilder) ProtoMessage() {}
-
-func (x *GrpcKeyBuilder) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GrpcKeyBuilder.ProtoReflect.Descriptor instead.
-func (*GrpcKeyBuilder) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GrpcKeyBuilder) GetNames() []*GrpcKeyBuilder_Name {
- if x != nil {
- return x.Names
- }
- return nil
-}
-
-func (x *GrpcKeyBuilder) GetExtraKeys() *GrpcKeyBuilder_ExtraKeys {
- if x != nil {
- return x.ExtraKeys
- }
- return nil
-}
-
-func (x *GrpcKeyBuilder) GetHeaders() []*NameMatcher {
- if x != nil {
- return x.Headers
- }
- return nil
-}
-
-func (x *GrpcKeyBuilder) GetConstantKeys() map[string]string {
- if x != nil {
- return x.ConstantKeys
- }
- return nil
-}
-
-// An HttpKeyBuilder applies to a given HTTP URL and headers.
-//
-// Path and host patterns use the matching syntax from gRPC transcoding to
-// extract named key/value pairs from the path and host components of the URL:
-// https://github.com/googleapis/googleapis/blob/master/google/api/http.proto
-//
-// It is invalid to specify the same key name in multiple places in a pattern.
-//
-// For a service where the project id can be expressed either as a subdomain or
-// in the path, separate HttpKeyBuilders must be used:
-// host_pattern: 'example.com' path_pattern: '/{id}/{object}/**'
-// host_pattern: '{id}.example.com' path_pattern: '/{object}/**'
-// If the host is exactly 'example.com', the first path segment will be used as
-// the id and the second segment as the object. If the host has a subdomain, the
-// subdomain will be used as the id and the first segment as the object. If
-// neither pattern matches, no keys will be extracted.
-type HttpKeyBuilder struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // host_pattern is an ordered list of host template patterns for the desired
- // value. If any host_pattern values are specified, then at least one must
- // match, and the last one wins and sets any specified variables. A host
- // consists of labels separated by dots. Each label is matched against the
- // label in the pattern as follows:
- // - "*": Matches any single label.
- // - "**": Matches zero or more labels (first or last part of host only).
- // - "{=...}": One or more label capture, where "..." can be any
- // template that does not include a capture.
- // - "{}": A single label capture. Identical to {=*}.
- //
- // Examples:
- // - "example.com": Only applies to the exact host example.com.
- // - "*.example.com": Matches subdomains of example.com.
- // - "**.example.com": matches example.com, and all levels of subdomains.
- // - "{project}.example.com": Extracts the third level subdomain.
- // - "{project=**}.example.com": Extracts the third level+ subdomains.
- // - "{project=**}": Extracts the entire host.
- HostPatterns []string `protobuf:"bytes,1,rep,name=host_patterns,json=hostPatterns,proto3" json:"host_patterns,omitempty"`
- // path_pattern is an ordered list of path template patterns for the desired
- // value. If any path_pattern values are specified, then at least one must
- // match, and the last one wins and sets any specified variables. A path
- // consists of segments separated by slashes. Each segment is matched against
- // the segment in the pattern as follows:
- // - "*": Matches any single segment.
- // - "**": Matches zero or more segments (first or last part of path only).
- // - "{=...}": One or more segment capture, where "..." can be any
- // template that does not include a capture.
- // - "{}": A single segment capture. Identical to {=*}.
- // A custom method may also be specified by appending ":" and the custom
- // method name or "*" to indicate any custom method (including no custom
- // method). For example, "/*/projects/{project_id}/**:*" extracts
- // `{project_id}` for any version, resource and custom method that includes
- // it. By default, any custom method will be matched.
- //
- // Examples:
- // - "/v1/{name=messages/*}": extracts a name like "messages/12345".
- // - "/v1/messages/{message_id}": extracts a message_id like "12345".
- // - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
- PathPatterns []string `protobuf:"bytes,2,rep,name=path_patterns,json=pathPatterns,proto3" json:"path_patterns,omitempty"`
- // List of query parameter names to try to match.
- // For example: ["parent", "name", "resource.name"]
- // We extract all the specified query_parameters (case-sensitively). If any
- // are marked as "required_match" and are not present, this keybuilder fails
- // to match. If a given parameter appears multiple times (?foo=a&foo=b) we
- // will report it as a comma-separated string (foo=a,b).
- QueryParameters []*NameMatcher `protobuf:"bytes,3,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"`
- // List of headers to try to match.
- // We extract all the specified header values (case-insensitively). If any
- // are marked as "required_match" and are not present, this keybuilder fails
- // to match. If a given header appears multiple times in the request we will
- // report it as a comma-separated string, in standard HTTP fashion.
- Headers []*NameMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
- // You can optionally set one or more specific key/value pairs to be added to
- // the key_map. This can be useful to identify which builder built the key,
- // for example if you are suppressing a lot of information from the URL, but
- // need to separately cache and request URLs with that content.
- ConstantKeys map[string]string `protobuf:"bytes,5,rep,name=constant_keys,json=constantKeys,proto3" json:"constant_keys,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *HttpKeyBuilder) Reset() {
- *x = HttpKeyBuilder{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HttpKeyBuilder) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HttpKeyBuilder) ProtoMessage() {}
-
-func (x *HttpKeyBuilder) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HttpKeyBuilder.ProtoReflect.Descriptor instead.
-func (*HttpKeyBuilder) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *HttpKeyBuilder) GetHostPatterns() []string {
- if x != nil {
- return x.HostPatterns
- }
- return nil
-}
-
-func (x *HttpKeyBuilder) GetPathPatterns() []string {
- if x != nil {
- return x.PathPatterns
- }
- return nil
-}
-
-func (x *HttpKeyBuilder) GetQueryParameters() []*NameMatcher {
- if x != nil {
- return x.QueryParameters
- }
- return nil
-}
-
-func (x *HttpKeyBuilder) GetHeaders() []*NameMatcher {
- if x != nil {
- return x.Headers
- }
- return nil
-}
-
-func (x *HttpKeyBuilder) GetConstantKeys() map[string]string {
- if x != nil {
- return x.ConstantKeys
- }
- return nil
-}
-
-type RouteLookupConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Ordered specifications for constructing keys for HTTP requests. Last
- // match wins. If no HttpKeyBuilder matches, an empty key_map will be sent to
- // the lookup service; it should likely reply with a global default route
- // and raise an alert.
- HttpKeybuilders []*HttpKeyBuilder `protobuf:"bytes,1,rep,name=http_keybuilders,json=httpKeybuilders,proto3" json:"http_keybuilders,omitempty"`
- // Unordered specifications for constructing keys for gRPC requests. All
- // GrpcKeyBuilders on this list must have unique "name" fields so that the
- // client is free to prebuild a hash map keyed by name. If no GrpcKeyBuilder
- // matches, an empty key_map will be sent to the lookup service; it should
- // likely reply with a global default route and raise an alert.
- GrpcKeybuilders []*GrpcKeyBuilder `protobuf:"bytes,2,rep,name=grpc_keybuilders,json=grpcKeybuilders,proto3" json:"grpc_keybuilders,omitempty"`
- // The name of the lookup service as a gRPC URI. Typically, this will be
- // a subdomain of the target, such as "lookup.datastore.googleapis.com".
- LookupService string `protobuf:"bytes,3,opt,name=lookup_service,json=lookupService,proto3" json:"lookup_service,omitempty"`
- // Configure a timeout value for lookup service requests.
- // Defaults to 10 seconds if not specified.
- LookupServiceTimeout *durationpb.Duration `protobuf:"bytes,4,opt,name=lookup_service_timeout,json=lookupServiceTimeout,proto3" json:"lookup_service_timeout,omitempty"`
- // How long are responses valid for (like HTTP Cache-Control).
- // If omitted or zero, the longest valid cache time is used.
- // This value is clamped to 5 minutes to avoid unflushable bad responses.
- MaxAge *durationpb.Duration `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
- // After a response has been in the client cache for this amount of time
- // and is re-requested, start an asynchronous RPC to re-validate it.
- // This value should be less than max_age by at least the length of a
- // typical RTT to the Route Lookup Service to fully mask the RTT latency.
- // If omitted, keys are only re-requested after they have expired.
- StaleAge *durationpb.Duration `protobuf:"bytes,6,opt,name=stale_age,json=staleAge,proto3" json:"stale_age,omitempty"`
- // Rough indicator of amount of memory to use for the client cache. Some of
- // the data structure overhead is not accounted for, so actual memory consumed
- // will be somewhat greater than this value. If this field is omitted or set
- // to zero, a client default will be used. The value may be capped to a lower
- // amount based on client configuration.
- CacheSizeBytes int64 `protobuf:"varint,7,opt,name=cache_size_bytes,json=cacheSizeBytes,proto3" json:"cache_size_bytes,omitempty"`
- // This is a list of all the possible targets that can be returned by the
- // lookup service. If a target not on this list is returned, it will be
- // treated the same as an unhealthy target.
- ValidTargets []string `protobuf:"bytes,8,rep,name=valid_targets,json=validTargets,proto3" json:"valid_targets,omitempty"`
- // This value provides a default target to use if needed. If set, it will be
- // used if RLS returns an error, times out, or returns an invalid response.
- // Note that requests can be routed only to a subdomain of the original
- // target, e.g. "us_east_1.cloudbigtable.googleapis.com".
- DefaultTarget string `protobuf:"bytes,9,opt,name=default_target,json=defaultTarget,proto3" json:"default_target,omitempty"`
-}
-
-func (x *RouteLookupConfig) Reset() {
- *x = RouteLookupConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RouteLookupConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RouteLookupConfig) ProtoMessage() {}
-
-func (x *RouteLookupConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RouteLookupConfig.ProtoReflect.Descriptor instead.
-func (*RouteLookupConfig) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *RouteLookupConfig) GetHttpKeybuilders() []*HttpKeyBuilder {
- if x != nil {
- return x.HttpKeybuilders
- }
- return nil
-}
-
-func (x *RouteLookupConfig) GetGrpcKeybuilders() []*GrpcKeyBuilder {
- if x != nil {
- return x.GrpcKeybuilders
- }
- return nil
-}
-
-func (x *RouteLookupConfig) GetLookupService() string {
- if x != nil {
- return x.LookupService
- }
- return ""
-}
-
-func (x *RouteLookupConfig) GetLookupServiceTimeout() *durationpb.Duration {
- if x != nil {
- return x.LookupServiceTimeout
- }
- return nil
-}
-
-func (x *RouteLookupConfig) GetMaxAge() *durationpb.Duration {
- if x != nil {
- return x.MaxAge
- }
- return nil
-}
-
-func (x *RouteLookupConfig) GetStaleAge() *durationpb.Duration {
- if x != nil {
- return x.StaleAge
- }
- return nil
-}
-
-func (x *RouteLookupConfig) GetCacheSizeBytes() int64 {
- if x != nil {
- return x.CacheSizeBytes
- }
- return 0
-}
-
-func (x *RouteLookupConfig) GetValidTargets() []string {
- if x != nil {
- return x.ValidTargets
- }
- return nil
-}
-
-func (x *RouteLookupConfig) GetDefaultTarget() string {
- if x != nil {
- return x.DefaultTarget
- }
- return ""
-}
-
-// RouteLookupClusterSpecifier is used in xDS to represent a cluster specifier
-// plugin for RLS.
-type RouteLookupClusterSpecifier struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The RLS config for this cluster specifier plugin instance.
- RouteLookupConfig *RouteLookupConfig `protobuf:"bytes,1,opt,name=route_lookup_config,json=routeLookupConfig,proto3" json:"route_lookup_config,omitempty"`
-}
-
-func (x *RouteLookupClusterSpecifier) Reset() {
- *x = RouteLookupClusterSpecifier{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RouteLookupClusterSpecifier) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RouteLookupClusterSpecifier) ProtoMessage() {}
-
-func (x *RouteLookupClusterSpecifier) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RouteLookupClusterSpecifier.ProtoReflect.Descriptor instead.
-func (*RouteLookupClusterSpecifier) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *RouteLookupClusterSpecifier) GetRouteLookupConfig() *RouteLookupConfig {
- if x != nil {
- return x.RouteLookupConfig
- }
- return nil
-}
-
-// To match, one of the given Name fields must match; the service and method
-// fields are specified as fixed strings. The service name is required and
-// includes the proto package name. The method name may be omitted, in
-// which case any method on the given service is matched.
-type GrpcKeyBuilder_Name struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
- Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
-}
-
-func (x *GrpcKeyBuilder_Name) Reset() {
- *x = GrpcKeyBuilder_Name{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GrpcKeyBuilder_Name) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GrpcKeyBuilder_Name) ProtoMessage() {}
-
-func (x *GrpcKeyBuilder_Name) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GrpcKeyBuilder_Name.ProtoReflect.Descriptor instead.
-func (*GrpcKeyBuilder_Name) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1, 0}
-}
-
-func (x *GrpcKeyBuilder_Name) GetService() string {
- if x != nil {
- return x.Service
- }
- return ""
-}
-
-func (x *GrpcKeyBuilder_Name) GetMethod() string {
- if x != nil {
- return x.Method
- }
- return ""
-}
-
-// If you wish to include the host, service, or method names as keys in the
-// generated RouteLookupRequest, specify key names to use in the extra_keys
-// submessage. If a key name is empty, no key will be set for that value.
-// If this submessage is specified, the normal host/path fields will be left
-// unset in the RouteLookupRequest. We are deprecating host/path in the
-// RouteLookupRequest, so services should migrate to the ExtraKeys approach.
-type GrpcKeyBuilder_ExtraKeys struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
- Service string `protobuf:"bytes,2,opt,name=service,proto3" json:"service,omitempty"`
- Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"`
-}
-
-func (x *GrpcKeyBuilder_ExtraKeys) Reset() {
- *x = GrpcKeyBuilder_ExtraKeys{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GrpcKeyBuilder_ExtraKeys) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GrpcKeyBuilder_ExtraKeys) ProtoMessage() {}
-
-func (x *GrpcKeyBuilder_ExtraKeys) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GrpcKeyBuilder_ExtraKeys.ProtoReflect.Descriptor instead.
-func (*GrpcKeyBuilder_ExtraKeys) Descriptor() ([]byte, []int) {
- return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1, 1}
-}
-
-func (x *GrpcKeyBuilder_ExtraKeys) GetHost() string {
- if x != nil {
- return x.Host
- }
- return ""
-}
-
-func (x *GrpcKeyBuilder_ExtraKeys) GetService() string {
- if x != nil {
- return x.Service
- }
- return ""
-}
-
-func (x *GrpcKeyBuilder_ExtraKeys) GetMethod() string {
- if x != nil {
- return x.Method
- }
- return ""
-}
-
-var File_grpc_lookup_v1_rls_config_proto protoreflect.FileDescriptor
-
-var file_grpc_lookup_v1_rls_config_proto_rawDesc = []byte{
- 0x0a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76,
- 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x22, 0x5c, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75,
- 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22,
- 0xf0, 0x03, 0x0a, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64,
- 0x65, 0x72, 0x12, 0x39, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
- 0x72, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x47, 0x0a,
- 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
- 0x72, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x09, 0x65, 0x78, 0x74,
- 0x72, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c,
- 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a,
- 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b,
- 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69,
- 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4b, 0x65, 0x79,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74,
- 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x38, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x1a, 0x51,
- 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68,
- 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12,
- 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74,
- 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4b, 0x65, 0x79,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0xf1, 0x02, 0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75,
- 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f,
- 0x73, 0x74, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61,
- 0x74, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12,
- 0x46, 0x0a, 0x10, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
- 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d,
- 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72,
- 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x55,
- 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
- 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75,
- 0x69, 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x4b, 0x65,
- 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x74, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x74, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, 0x04, 0x0a, 0x11, 0x52, 0x6f, 0x75, 0x74, 0x65,
- 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 0x10,
- 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f,
- 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42,
- 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x67, 0x72, 0x70, 0x63, 0x5f,
- 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e,
- 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
- 0x72, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65,
- 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x6f, 0x6b,
- 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x16, 0x6c, 0x6f, 0x6f,
- 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61,
- 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x36,
- 0x0a, 0x09, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x74,
- 0x61, 0x6c, 0x65, 0x41, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
- 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73,
- 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
- 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64,
- 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4a, 0x04, 0x08, 0x0a,
- 0x10, 0x0b, 0x52, 0x1b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63,
- 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22,
- 0x70, 0x0a, 0x1b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x51,
- 0x0a, 0x13, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x63,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75,
- 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11,
- 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x42, 0x53, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
- 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63,
- 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x6f, 0x6f,
- 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_lookup_v1_rls_config_proto_rawDescOnce sync.Once
- file_grpc_lookup_v1_rls_config_proto_rawDescData = file_grpc_lookup_v1_rls_config_proto_rawDesc
-)
-
-func file_grpc_lookup_v1_rls_config_proto_rawDescGZIP() []byte {
- file_grpc_lookup_v1_rls_config_proto_rawDescOnce.Do(func() {
- file_grpc_lookup_v1_rls_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lookup_v1_rls_config_proto_rawDescData)
- })
- return file_grpc_lookup_v1_rls_config_proto_rawDescData
-}
-
-var file_grpc_lookup_v1_rls_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_grpc_lookup_v1_rls_config_proto_goTypes = []interface{}{
- (*NameMatcher)(nil), // 0: grpc.lookup.v1.NameMatcher
- (*GrpcKeyBuilder)(nil), // 1: grpc.lookup.v1.GrpcKeyBuilder
- (*HttpKeyBuilder)(nil), // 2: grpc.lookup.v1.HttpKeyBuilder
- (*RouteLookupConfig)(nil), // 3: grpc.lookup.v1.RouteLookupConfig
- (*RouteLookupClusterSpecifier)(nil), // 4: grpc.lookup.v1.RouteLookupClusterSpecifier
- (*GrpcKeyBuilder_Name)(nil), // 5: grpc.lookup.v1.GrpcKeyBuilder.Name
- (*GrpcKeyBuilder_ExtraKeys)(nil), // 6: grpc.lookup.v1.GrpcKeyBuilder.ExtraKeys
- nil, // 7: grpc.lookup.v1.GrpcKeyBuilder.ConstantKeysEntry
- nil, // 8: grpc.lookup.v1.HttpKeyBuilder.ConstantKeysEntry
- (*durationpb.Duration)(nil), // 9: google.protobuf.Duration
-}
-var file_grpc_lookup_v1_rls_config_proto_depIdxs = []int32{
- 5, // 0: grpc.lookup.v1.GrpcKeyBuilder.names:type_name -> grpc.lookup.v1.GrpcKeyBuilder.Name
- 6, // 1: grpc.lookup.v1.GrpcKeyBuilder.extra_keys:type_name -> grpc.lookup.v1.GrpcKeyBuilder.ExtraKeys
- 0, // 2: grpc.lookup.v1.GrpcKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
- 7, // 3: grpc.lookup.v1.GrpcKeyBuilder.constant_keys:type_name -> grpc.lookup.v1.GrpcKeyBuilder.ConstantKeysEntry
- 0, // 4: grpc.lookup.v1.HttpKeyBuilder.query_parameters:type_name -> grpc.lookup.v1.NameMatcher
- 0, // 5: grpc.lookup.v1.HttpKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
- 8, // 6: grpc.lookup.v1.HttpKeyBuilder.constant_keys:type_name -> grpc.lookup.v1.HttpKeyBuilder.ConstantKeysEntry
- 2, // 7: grpc.lookup.v1.RouteLookupConfig.http_keybuilders:type_name -> grpc.lookup.v1.HttpKeyBuilder
- 1, // 8: grpc.lookup.v1.RouteLookupConfig.grpc_keybuilders:type_name -> grpc.lookup.v1.GrpcKeyBuilder
- 9, // 9: grpc.lookup.v1.RouteLookupConfig.lookup_service_timeout:type_name -> google.protobuf.Duration
- 9, // 10: grpc.lookup.v1.RouteLookupConfig.max_age:type_name -> google.protobuf.Duration
- 9, // 11: grpc.lookup.v1.RouteLookupConfig.stale_age:type_name -> google.protobuf.Duration
- 3, // 12: grpc.lookup.v1.RouteLookupClusterSpecifier.route_lookup_config:type_name -> grpc.lookup.v1.RouteLookupConfig
- 13, // [13:13] is the sub-list for method output_type
- 13, // [13:13] is the sub-list for method input_type
- 13, // [13:13] is the sub-list for extension type_name
- 13, // [13:13] is the sub-list for extension extendee
- 0, // [0:13] is the sub-list for field type_name
-}
-
-func init() { file_grpc_lookup_v1_rls_config_proto_init() }
-func file_grpc_lookup_v1_rls_config_proto_init() {
- if File_grpc_lookup_v1_rls_config_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_lookup_v1_rls_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NameMatcher); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lookup_v1_rls_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GrpcKeyBuilder); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lookup_v1_rls_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HttpKeyBuilder); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lookup_v1_rls_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RouteLookupConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lookup_v1_rls_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RouteLookupClusterSpecifier); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lookup_v1_rls_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GrpcKeyBuilder_Name); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_lookup_v1_rls_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GrpcKeyBuilder_ExtraKeys); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_lookup_v1_rls_config_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 9,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_lookup_v1_rls_config_proto_goTypes,
- DependencyIndexes: file_grpc_lookup_v1_rls_config_proto_depIdxs,
- MessageInfos: file_grpc_lookup_v1_rls_config_proto_msgTypes,
- }.Build()
- File_grpc_lookup_v1_rls_config_proto = out.File
- file_grpc_lookup_v1_rls_config_proto_rawDesc = nil
- file_grpc_lookup_v1_rls_config_proto_goTypes = nil
- file_grpc_lookup_v1_rls_config_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/reflection/v1/reflection.pb.go b/gen/proto/grpc/reflection/v1/reflection.pb.go
deleted file mode 100644
index 530a695..0000000
--- a/gen/proto/grpc/reflection/v1/reflection.pb.go
+++ /dev/null
@@ -1,951 +0,0 @@
-// Copyright 2016 The gRPC 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.
-
-// Service exported by server reflection. A more complete description of how
-// server reflection works can be found at
-// https://github.com/grpc/grpc/blob/master/doc/server-reflection.md
-//
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/reflection/v1/reflection.proto
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/reflection/v1/reflection.proto
-
-package grpc_reflection_v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// The message sent by the client when calling ServerReflectionInfo method.
-type ServerReflectionRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
- // To use reflection service, the client should set one of the following
- // fields in message_request. The server distinguishes requests by their
- // defined field and then handles them using corresponding methods.
- //
- // Types that are assignable to MessageRequest:
- // *ServerReflectionRequest_FileByFilename
- // *ServerReflectionRequest_FileContainingSymbol
- // *ServerReflectionRequest_FileContainingExtension
- // *ServerReflectionRequest_AllExtensionNumbersOfType
- // *ServerReflectionRequest_ListServices
- MessageRequest isServerReflectionRequest_MessageRequest `protobuf_oneof:"message_request"`
-}
-
-func (x *ServerReflectionRequest) Reset() {
- *x = ServerReflectionRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerReflectionRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerReflectionRequest) ProtoMessage() {}
-
-func (x *ServerReflectionRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerReflectionRequest.ProtoReflect.Descriptor instead.
-func (*ServerReflectionRequest) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ServerReflectionRequest) GetHost() string {
- if x != nil {
- return x.Host
- }
- return ""
-}
-
-func (m *ServerReflectionRequest) GetMessageRequest() isServerReflectionRequest_MessageRequest {
- if m != nil {
- return m.MessageRequest
- }
- return nil
-}
-
-func (x *ServerReflectionRequest) GetFileByFilename() string {
- if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_FileByFilename); ok {
- return x.FileByFilename
- }
- return ""
-}
-
-func (x *ServerReflectionRequest) GetFileContainingSymbol() string {
- if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_FileContainingSymbol); ok {
- return x.FileContainingSymbol
- }
- return ""
-}
-
-func (x *ServerReflectionRequest) GetFileContainingExtension() *ExtensionRequest {
- if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_FileContainingExtension); ok {
- return x.FileContainingExtension
- }
- return nil
-}
-
-func (x *ServerReflectionRequest) GetAllExtensionNumbersOfType() string {
- if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_AllExtensionNumbersOfType); ok {
- return x.AllExtensionNumbersOfType
- }
- return ""
-}
-
-func (x *ServerReflectionRequest) GetListServices() string {
- if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_ListServices); ok {
- return x.ListServices
- }
- return ""
-}
-
-type isServerReflectionRequest_MessageRequest interface {
- isServerReflectionRequest_MessageRequest()
-}
-
-type ServerReflectionRequest_FileByFilename struct {
- // Find a proto file by the file name.
- FileByFilename string `protobuf:"bytes,3,opt,name=file_by_filename,json=fileByFilename,proto3,oneof"`
-}
-
-type ServerReflectionRequest_FileContainingSymbol struct {
- // Find the proto file that declares the given fully-qualified symbol name.
- // This field should be a fully-qualified symbol name
- // (e.g. .[.] or .).
- FileContainingSymbol string `protobuf:"bytes,4,opt,name=file_containing_symbol,json=fileContainingSymbol,proto3,oneof"`
-}
-
-type ServerReflectionRequest_FileContainingExtension struct {
- // Find the proto file which defines an extension extending the given
- // message type with the given field number.
- FileContainingExtension *ExtensionRequest `protobuf:"bytes,5,opt,name=file_containing_extension,json=fileContainingExtension,proto3,oneof"`
-}
-
-type ServerReflectionRequest_AllExtensionNumbersOfType struct {
- // Finds the tag numbers used by all known extensions of the given message
- // type, and appends them to ExtensionNumberResponse in an undefined order.
- // Its corresponding method is best-effort: it's not guaranteed that the
- // reflection service will implement this method, and it's not guaranteed
- // that this method will provide all extensions. Returns
- // StatusCode::UNIMPLEMENTED if it's not implemented.
- // This field should be a fully-qualified type name. The format is
- // .
- AllExtensionNumbersOfType string `protobuf:"bytes,6,opt,name=all_extension_numbers_of_type,json=allExtensionNumbersOfType,proto3,oneof"`
-}
-
-type ServerReflectionRequest_ListServices struct {
- // List the full names of registered services. The content will not be
- // checked.
- ListServices string `protobuf:"bytes,7,opt,name=list_services,json=listServices,proto3,oneof"`
-}
-
-func (*ServerReflectionRequest_FileByFilename) isServerReflectionRequest_MessageRequest() {}
-
-func (*ServerReflectionRequest_FileContainingSymbol) isServerReflectionRequest_MessageRequest() {}
-
-func (*ServerReflectionRequest_FileContainingExtension) isServerReflectionRequest_MessageRequest() {}
-
-func (*ServerReflectionRequest_AllExtensionNumbersOfType) isServerReflectionRequest_MessageRequest() {
-}
-
-func (*ServerReflectionRequest_ListServices) isServerReflectionRequest_MessageRequest() {}
-
-// The type name and extension number sent by the client when requesting
-// file_containing_extension.
-type ExtensionRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Fully-qualified type name. The format should be .
- ContainingType string `protobuf:"bytes,1,opt,name=containing_type,json=containingType,proto3" json:"containing_type,omitempty"`
- ExtensionNumber int32 `protobuf:"varint,2,opt,name=extension_number,json=extensionNumber,proto3" json:"extension_number,omitempty"`
-}
-
-func (x *ExtensionRequest) Reset() {
- *x = ExtensionRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ExtensionRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtensionRequest) ProtoMessage() {}
-
-func (x *ExtensionRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtensionRequest.ProtoReflect.Descriptor instead.
-func (*ExtensionRequest) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ExtensionRequest) GetContainingType() string {
- if x != nil {
- return x.ContainingType
- }
- return ""
-}
-
-func (x *ExtensionRequest) GetExtensionNumber() int32 {
- if x != nil {
- return x.ExtensionNumber
- }
- return 0
-}
-
-// The message sent by the server to answer ServerReflectionInfo method.
-type ServerReflectionResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ValidHost string `protobuf:"bytes,1,opt,name=valid_host,json=validHost,proto3" json:"valid_host,omitempty"`
- OriginalRequest *ServerReflectionRequest `protobuf:"bytes,2,opt,name=original_request,json=originalRequest,proto3" json:"original_request,omitempty"`
- // The server sets one of the following fields according to the message_request
- // in the request.
- //
- // Types that are assignable to MessageResponse:
- // *ServerReflectionResponse_FileDescriptorResponse
- // *ServerReflectionResponse_AllExtensionNumbersResponse
- // *ServerReflectionResponse_ListServicesResponse
- // *ServerReflectionResponse_ErrorResponse
- MessageResponse isServerReflectionResponse_MessageResponse `protobuf_oneof:"message_response"`
-}
-
-func (x *ServerReflectionResponse) Reset() {
- *x = ServerReflectionResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerReflectionResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerReflectionResponse) ProtoMessage() {}
-
-func (x *ServerReflectionResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerReflectionResponse.ProtoReflect.Descriptor instead.
-func (*ServerReflectionResponse) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ServerReflectionResponse) GetValidHost() string {
- if x != nil {
- return x.ValidHost
- }
- return ""
-}
-
-func (x *ServerReflectionResponse) GetOriginalRequest() *ServerReflectionRequest {
- if x != nil {
- return x.OriginalRequest
- }
- return nil
-}
-
-func (m *ServerReflectionResponse) GetMessageResponse() isServerReflectionResponse_MessageResponse {
- if m != nil {
- return m.MessageResponse
- }
- return nil
-}
-
-func (x *ServerReflectionResponse) GetFileDescriptorResponse() *FileDescriptorResponse {
- if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_FileDescriptorResponse); ok {
- return x.FileDescriptorResponse
- }
- return nil
-}
-
-func (x *ServerReflectionResponse) GetAllExtensionNumbersResponse() *ExtensionNumberResponse {
- if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_AllExtensionNumbersResponse); ok {
- return x.AllExtensionNumbersResponse
- }
- return nil
-}
-
-func (x *ServerReflectionResponse) GetListServicesResponse() *ListServiceResponse {
- if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_ListServicesResponse); ok {
- return x.ListServicesResponse
- }
- return nil
-}
-
-func (x *ServerReflectionResponse) GetErrorResponse() *ErrorResponse {
- if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_ErrorResponse); ok {
- return x.ErrorResponse
- }
- return nil
-}
-
-type isServerReflectionResponse_MessageResponse interface {
- isServerReflectionResponse_MessageResponse()
-}
-
-type ServerReflectionResponse_FileDescriptorResponse struct {
- // This message is used to answer file_by_filename, file_containing_symbol,
- // file_containing_extension requests with transitive dependencies.
- // As the repeated label is not allowed in oneof fields, we use a
- // FileDescriptorResponse message to encapsulate the repeated fields.
- // The reflection service is allowed to avoid sending FileDescriptorProtos
- // that were previously sent in response to earlier requests in the stream.
- FileDescriptorResponse *FileDescriptorResponse `protobuf:"bytes,4,opt,name=file_descriptor_response,json=fileDescriptorResponse,proto3,oneof"`
-}
-
-type ServerReflectionResponse_AllExtensionNumbersResponse struct {
- // This message is used to answer all_extension_numbers_of_type requests.
- AllExtensionNumbersResponse *ExtensionNumberResponse `protobuf:"bytes,5,opt,name=all_extension_numbers_response,json=allExtensionNumbersResponse,proto3,oneof"`
-}
-
-type ServerReflectionResponse_ListServicesResponse struct {
- // This message is used to answer list_services requests.
- ListServicesResponse *ListServiceResponse `protobuf:"bytes,6,opt,name=list_services_response,json=listServicesResponse,proto3,oneof"`
-}
-
-type ServerReflectionResponse_ErrorResponse struct {
- // This message is used when an error occurs.
- ErrorResponse *ErrorResponse `protobuf:"bytes,7,opt,name=error_response,json=errorResponse,proto3,oneof"`
-}
-
-func (*ServerReflectionResponse_FileDescriptorResponse) isServerReflectionResponse_MessageResponse() {
-}
-
-func (*ServerReflectionResponse_AllExtensionNumbersResponse) isServerReflectionResponse_MessageResponse() {
-}
-
-func (*ServerReflectionResponse_ListServicesResponse) isServerReflectionResponse_MessageResponse() {}
-
-func (*ServerReflectionResponse_ErrorResponse) isServerReflectionResponse_MessageResponse() {}
-
-// Serialized FileDescriptorProto messages sent by the server answering
-// a file_by_filename, file_containing_symbol, or file_containing_extension
-// request.
-type FileDescriptorResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Serialized FileDescriptorProto messages. We avoid taking a dependency on
- // descriptor.proto, which uses proto2 only features, by making them opaque
- // bytes instead.
- FileDescriptorProto [][]byte `protobuf:"bytes,1,rep,name=file_descriptor_proto,json=fileDescriptorProto,proto3" json:"file_descriptor_proto,omitempty"`
-}
-
-func (x *FileDescriptorResponse) Reset() {
- *x = FileDescriptorResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FileDescriptorResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileDescriptorResponse) ProtoMessage() {}
-
-func (x *FileDescriptorResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileDescriptorResponse.ProtoReflect.Descriptor instead.
-func (*FileDescriptorResponse) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *FileDescriptorResponse) GetFileDescriptorProto() [][]byte {
- if x != nil {
- return x.FileDescriptorProto
- }
- return nil
-}
-
-// A list of extension numbers sent by the server answering
-// all_extension_numbers_of_type request.
-type ExtensionNumberResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Full name of the base type, including the package name. The format
- // is .
- BaseTypeName string `protobuf:"bytes,1,opt,name=base_type_name,json=baseTypeName,proto3" json:"base_type_name,omitempty"`
- ExtensionNumber []int32 `protobuf:"varint,2,rep,packed,name=extension_number,json=extensionNumber,proto3" json:"extension_number,omitempty"`
-}
-
-func (x *ExtensionNumberResponse) Reset() {
- *x = ExtensionNumberResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ExtensionNumberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtensionNumberResponse) ProtoMessage() {}
-
-func (x *ExtensionNumberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtensionNumberResponse.ProtoReflect.Descriptor instead.
-func (*ExtensionNumberResponse) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *ExtensionNumberResponse) GetBaseTypeName() string {
- if x != nil {
- return x.BaseTypeName
- }
- return ""
-}
-
-func (x *ExtensionNumberResponse) GetExtensionNumber() []int32 {
- if x != nil {
- return x.ExtensionNumber
- }
- return nil
-}
-
-// A list of ServiceResponse sent by the server answering list_services request.
-type ListServiceResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The information of each service may be expanded in the future, so we use
- // ServiceResponse message to encapsulate it.
- Service []*ServiceResponse `protobuf:"bytes,1,rep,name=service,proto3" json:"service,omitempty"`
-}
-
-func (x *ListServiceResponse) Reset() {
- *x = ListServiceResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListServiceResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListServiceResponse) ProtoMessage() {}
-
-func (x *ListServiceResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListServiceResponse.ProtoReflect.Descriptor instead.
-func (*ListServiceResponse) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *ListServiceResponse) GetService() []*ServiceResponse {
- if x != nil {
- return x.Service
- }
- return nil
-}
-
-// The information of a single service used by ListServiceResponse to answer
-// list_services request.
-type ServiceResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Full name of a registered service, including its package name. The format
- // is .
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *ServiceResponse) Reset() {
- *x = ServiceResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServiceResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServiceResponse) ProtoMessage() {}
-
-func (x *ServiceResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServiceResponse.ProtoReflect.Descriptor instead.
-func (*ServiceResponse) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *ServiceResponse) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// The error code and error message sent by the server when an error occurs.
-type ErrorResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This field uses the error codes defined in grpc::StatusCode.
- ErrorCode int32 `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"`
- ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
-}
-
-func (x *ErrorResponse) Reset() {
- *x = ErrorResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ErrorResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ErrorResponse) ProtoMessage() {}
-
-func (x *ErrorResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_reflection_v1_reflection_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ErrorResponse.ProtoReflect.Descriptor instead.
-func (*ErrorResponse) Descriptor() ([]byte, []int) {
- return file_grpc_reflection_v1_reflection_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *ErrorResponse) GetErrorCode() int32 {
- if x != nil {
- return x.ErrorCode
- }
- return 0
-}
-
-func (x *ErrorResponse) GetErrorMessage() string {
- if x != nil {
- return x.ErrorMessage
- }
- return ""
-}
-
-var File_grpc_reflection_v1_reflection_proto protoreflect.FileDescriptor
-
-var file_grpc_reflection_v1_reflection_proto_rawDesc = []byte{
- 0x0a, 0x23, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x22, 0xf3, 0x02, 0x0a, 0x17, 0x53, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x66, 0x69, 0x6c,
- 0x65, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x46, 0x69, 0x6c,
- 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x62, 0x0a,
- 0x19, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67,
- 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
- 0x6e, 0x12, 0x42, 0x0a, 0x1d, 0x61, 0x6c, 0x6c, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
- 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x19, 0x61, 0x6c, 0x6c, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4f,
- 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c,
- 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
- 0x66, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e,
- 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10,
- 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
- 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xae, 0x04, 0x0a, 0x18, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x6f,
- 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48,
- 0x6f, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
- 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0f, 0x6f, 0x72, 0x69, 0x67,
- 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x66, 0x0a, 0x18, 0x66,
- 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x72,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
- 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
- 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x16, 0x66, 0x69, 0x6c,
- 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x1e, 0x61, 0x6c, 0x6c, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
- 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
- 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x61, 0x6c, 0x6c, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x5f,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72,
- 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x48, 0x00, 0x52, 0x14, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f,
- 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
- 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x16, 0x46, 0x69, 0x6c, 0x65,
- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0c, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
- 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6a, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
- 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x54,
- 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e,
- 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x05, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62,
- 0x65, 0x72, 0x22, 0x54, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52,
- 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x25, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
- 0x53, 0x0a, 0x0d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
- 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x32, 0x89, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52,
- 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x75, 0x0a, 0x14, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66,
- 0x6f, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66,
- 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01,
- 0x42, 0x66, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x15, 0x53, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
- 0x50, 0x01, 0x5a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
- 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x6c, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_reflection_v1_reflection_proto_rawDescOnce sync.Once
- file_grpc_reflection_v1_reflection_proto_rawDescData = file_grpc_reflection_v1_reflection_proto_rawDesc
-)
-
-func file_grpc_reflection_v1_reflection_proto_rawDescGZIP() []byte {
- file_grpc_reflection_v1_reflection_proto_rawDescOnce.Do(func() {
- file_grpc_reflection_v1_reflection_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_reflection_v1_reflection_proto_rawDescData)
- })
- return file_grpc_reflection_v1_reflection_proto_rawDescData
-}
-
-var file_grpc_reflection_v1_reflection_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_grpc_reflection_v1_reflection_proto_goTypes = []interface{}{
- (*ServerReflectionRequest)(nil), // 0: grpc.reflection.v1.ServerReflectionRequest
- (*ExtensionRequest)(nil), // 1: grpc.reflection.v1.ExtensionRequest
- (*ServerReflectionResponse)(nil), // 2: grpc.reflection.v1.ServerReflectionResponse
- (*FileDescriptorResponse)(nil), // 3: grpc.reflection.v1.FileDescriptorResponse
- (*ExtensionNumberResponse)(nil), // 4: grpc.reflection.v1.ExtensionNumberResponse
- (*ListServiceResponse)(nil), // 5: grpc.reflection.v1.ListServiceResponse
- (*ServiceResponse)(nil), // 6: grpc.reflection.v1.ServiceResponse
- (*ErrorResponse)(nil), // 7: grpc.reflection.v1.ErrorResponse
-}
-var file_grpc_reflection_v1_reflection_proto_depIdxs = []int32{
- 1, // 0: grpc.reflection.v1.ServerReflectionRequest.file_containing_extension:type_name -> grpc.reflection.v1.ExtensionRequest
- 0, // 1: grpc.reflection.v1.ServerReflectionResponse.original_request:type_name -> grpc.reflection.v1.ServerReflectionRequest
- 3, // 2: grpc.reflection.v1.ServerReflectionResponse.file_descriptor_response:type_name -> grpc.reflection.v1.FileDescriptorResponse
- 4, // 3: grpc.reflection.v1.ServerReflectionResponse.all_extension_numbers_response:type_name -> grpc.reflection.v1.ExtensionNumberResponse
- 5, // 4: grpc.reflection.v1.ServerReflectionResponse.list_services_response:type_name -> grpc.reflection.v1.ListServiceResponse
- 7, // 5: grpc.reflection.v1.ServerReflectionResponse.error_response:type_name -> grpc.reflection.v1.ErrorResponse
- 6, // 6: grpc.reflection.v1.ListServiceResponse.service:type_name -> grpc.reflection.v1.ServiceResponse
- 0, // 7: grpc.reflection.v1.ServerReflection.ServerReflectionInfo:input_type -> grpc.reflection.v1.ServerReflectionRequest
- 2, // 8: grpc.reflection.v1.ServerReflection.ServerReflectionInfo:output_type -> grpc.reflection.v1.ServerReflectionResponse
- 8, // [8:9] is the sub-list for method output_type
- 7, // [7:8] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_grpc_reflection_v1_reflection_proto_init() }
-func file_grpc_reflection_v1_reflection_proto_init() {
- if File_grpc_reflection_v1_reflection_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_reflection_v1_reflection_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerReflectionRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExtensionRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerReflectionResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FileDescriptorResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExtensionNumberResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListServiceResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServiceResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ErrorResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*ServerReflectionRequest_FileByFilename)(nil),
- (*ServerReflectionRequest_FileContainingSymbol)(nil),
- (*ServerReflectionRequest_FileContainingExtension)(nil),
- (*ServerReflectionRequest_AllExtensionNumbersOfType)(nil),
- (*ServerReflectionRequest_ListServices)(nil),
- }
- file_grpc_reflection_v1_reflection_proto_msgTypes[2].OneofWrappers = []interface{}{
- (*ServerReflectionResponse_FileDescriptorResponse)(nil),
- (*ServerReflectionResponse_AllExtensionNumbersResponse)(nil),
- (*ServerReflectionResponse_ListServicesResponse)(nil),
- (*ServerReflectionResponse_ErrorResponse)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_reflection_v1_reflection_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 8,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_reflection_v1_reflection_proto_goTypes,
- DependencyIndexes: file_grpc_reflection_v1_reflection_proto_depIdxs,
- MessageInfos: file_grpc_reflection_v1_reflection_proto_msgTypes,
- }.Build()
- File_grpc_reflection_v1_reflection_proto = out.File
- file_grpc_reflection_v1_reflection_proto_rawDesc = nil
- file_grpc_reflection_v1_reflection_proto_goTypes = nil
- file_grpc_reflection_v1_reflection_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/service_config/service_config.pb.go b/gen/proto/grpc/service_config/service_config.pb.go
deleted file mode 100644
index 05a3e29..0000000
--- a/gen/proto/grpc/service_config/service_config.pb.go
+++ /dev/null
@@ -1,3981 +0,0 @@
-// Copyright 2016 The gRPC 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.
-
-// A ServiceConfig is supplied when a service is deployed. It mostly contains
-// parameters for how clients that connect to the service should behave (for
-// example, the load balancing policy to use to pick between service replicas).
-//
-// The configuration options provided here act as overrides to automatically
-// chosen option values. Service owners should be conservative in specifying
-// options as the system is likely to choose better values for these options in
-// the vast majority of cases. In other words, please specify a configuration
-// option only if you really have to, and avoid copy-paste inclusion of configs.
-//
-// Note that gRPC uses the service config in JSON form, not in protobuf
-// form. This proto definition is intended to help document the schema but
-// will not actually be used directly by gRPC.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/service_config/service_config.proto
-
-package testing
-
-import (
- code "google.golang.org/genproto/googleapis/rpc/code"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- structpb "google.golang.org/protobuf/types/known/structpb"
- wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type int32
-
-const (
- XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_UNKNOWN XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type = 0
- XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_EDS XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type = 1
- XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_LOGICAL_DNS XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type = 2
-)
-
-// Enum value maps for XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type.
-var (
- XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "EDS",
- 2: "LOGICAL_DNS",
- }
- XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type_value = map[string]int32{
- "UNKNOWN": 0,
- "EDS": 1,
- "LOGICAL_DNS": 2,
- }
-)
-
-func (x XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type) Enum() *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type {
- p := new(XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type)
- *p = x
- return p
-}
-
-func (x XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_service_config_service_config_proto_enumTypes[0].Descriptor()
-}
-
-func (XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type) Type() protoreflect.EnumType {
- return &file_grpc_service_config_service_config_proto_enumTypes[0]
-}
-
-func (x XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type.Descriptor instead.
-func (XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type) EnumDescriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{10, 0, 0}
-}
-
-// Load balancing policy.
-//
-// Note that load_balancing_policy is deprecated in favor of
-// load_balancing_config; the former will be used only if the latter
-// is unset.
-//
-// If no LB policy is configured here, then the default is pick_first.
-// If the policy name is set via the client API, that value overrides
-// the value specified here.
-//
-// If the deprecated load_balancing_policy field is used, note that if the
-// resolver returns at least one balancer address (as opposed to backend
-// addresses), gRPC will use grpclb (see
-// https://github.com/grpc/grpc/blob/master/doc/load-balancing.md),
-// regardless of what policy is configured here. However, if the resolver
-// returns at least one backend address in addition to the balancer
-// address(es), the client may fall back to the requested policy if it
-// is unable to reach any of the grpclb load balancers.
-type ServiceConfig_LoadBalancingPolicy int32
-
-const (
- ServiceConfig_UNSPECIFIED ServiceConfig_LoadBalancingPolicy = 0
- ServiceConfig_ROUND_ROBIN ServiceConfig_LoadBalancingPolicy = 1
-)
-
-// Enum value maps for ServiceConfig_LoadBalancingPolicy.
-var (
- ServiceConfig_LoadBalancingPolicy_name = map[int32]string{
- 0: "UNSPECIFIED",
- 1: "ROUND_ROBIN",
- }
- ServiceConfig_LoadBalancingPolicy_value = map[string]int32{
- "UNSPECIFIED": 0,
- "ROUND_ROBIN": 1,
- }
-)
-
-func (x ServiceConfig_LoadBalancingPolicy) Enum() *ServiceConfig_LoadBalancingPolicy {
- p := new(ServiceConfig_LoadBalancingPolicy)
- *p = x
- return p
-}
-
-func (x ServiceConfig_LoadBalancingPolicy) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ServiceConfig_LoadBalancingPolicy) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_service_config_service_config_proto_enumTypes[1].Descriptor()
-}
-
-func (ServiceConfig_LoadBalancingPolicy) Type() protoreflect.EnumType {
- return &file_grpc_service_config_service_config_proto_enumTypes[1]
-}
-
-func (x ServiceConfig_LoadBalancingPolicy) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ServiceConfig_LoadBalancingPolicy.Descriptor instead.
-func (ServiceConfig_LoadBalancingPolicy) EnumDescriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{17, 0}
-}
-
-// Configuration for a method.
-type MethodConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name []*MethodConfig_Name `protobuf:"bytes,1,rep,name=name,proto3" json:"name,omitempty"`
- // Whether RPCs sent to this method should wait until the connection is
- // ready by default. If false, the RPC will abort immediately if there is
- // a transient failure connecting to the server. Otherwise, gRPC will
- // attempt to connect until the deadline is exceeded.
- //
- // The value specified via the gRPC client API will override the value
- // set here. However, note that setting the value in the client API will
- // also affect transient errors encountered during name resolution, which
- // cannot be caught by the value here, since the service config is
- // obtained by the gRPC client via name resolution.
- WaitForReady *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=wait_for_ready,json=waitForReady,proto3" json:"wait_for_ready,omitempty"`
- // The default timeout in seconds for RPCs sent to this method. This can be
- // overridden in code. If no reply is received in the specified amount of
- // time, the request is aborted and a DEADLINE_EXCEEDED error status
- // is returned to the caller.
- //
- // The actual deadline used will be the minimum of the value specified here
- // and the value set by the application via the gRPC client API. If either
- // one is not set, then the other will be used. If neither is set, then the
- // request has no deadline.
- Timeout *durationpb.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"`
- // The maximum allowed payload size for an individual request or object in a
- // stream (client->server) in bytes. The size which is measured is the
- // serialized payload after per-message compression (but before stream
- // compression) in bytes. This applies both to streaming and non-streaming
- // requests.
- //
- // The actual value used is the minimum of the value specified here and the
- // value set by the application via the gRPC client API. If either one is
- // not set, then the other will be used. If neither is set, then the
- // built-in default is used.
- //
- // If a client attempts to send an object larger than this value, it will not
- // be sent and the client will see a ClientError.
- // Note that 0 is a valid value, meaning that the request message
- // must be empty.
- MaxRequestMessageBytes *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=max_request_message_bytes,json=maxRequestMessageBytes,proto3" json:"max_request_message_bytes,omitempty"`
- // The maximum allowed payload size for an individual response or object in a
- // stream (server->client) in bytes. The size which is measured is the
- // serialized payload after per-message compression (but before stream
- // compression) in bytes. This applies both to streaming and non-streaming
- // requests.
- //
- // The actual value used is the minimum of the value specified here and the
- // value set by the application via the gRPC client API. If either one is
- // not set, then the other will be used. If neither is set, then the
- // built-in default is used.
- //
- // If a server attempts to send an object larger than this value, it will not
- // be sent, and a ServerError will be sent to the client instead.
- // Note that 0 is a valid value, meaning that the response message
- // must be empty.
- MaxResponseMessageBytes *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=max_response_message_bytes,json=maxResponseMessageBytes,proto3" json:"max_response_message_bytes,omitempty"`
- // Only one of retry_policy or hedging_policy may be set. If neither is set,
- // RPCs will not be retried or hedged.
- //
- // Types that are assignable to RetryOrHedgingPolicy:
- // *MethodConfig_RetryPolicy_
- // *MethodConfig_HedgingPolicy_
- RetryOrHedgingPolicy isMethodConfig_RetryOrHedgingPolicy `protobuf_oneof:"retry_or_hedging_policy"`
-}
-
-func (x *MethodConfig) Reset() {
- *x = MethodConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MethodConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MethodConfig) ProtoMessage() {}
-
-func (x *MethodConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MethodConfig.ProtoReflect.Descriptor instead.
-func (*MethodConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *MethodConfig) GetName() []*MethodConfig_Name {
- if x != nil {
- return x.Name
- }
- return nil
-}
-
-func (x *MethodConfig) GetWaitForReady() *wrapperspb.BoolValue {
- if x != nil {
- return x.WaitForReady
- }
- return nil
-}
-
-func (x *MethodConfig) GetTimeout() *durationpb.Duration {
- if x != nil {
- return x.Timeout
- }
- return nil
-}
-
-func (x *MethodConfig) GetMaxRequestMessageBytes() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MaxRequestMessageBytes
- }
- return nil
-}
-
-func (x *MethodConfig) GetMaxResponseMessageBytes() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MaxResponseMessageBytes
- }
- return nil
-}
-
-func (m *MethodConfig) GetRetryOrHedgingPolicy() isMethodConfig_RetryOrHedgingPolicy {
- if m != nil {
- return m.RetryOrHedgingPolicy
- }
- return nil
-}
-
-func (x *MethodConfig) GetRetryPolicy() *MethodConfig_RetryPolicy {
- if x, ok := x.GetRetryOrHedgingPolicy().(*MethodConfig_RetryPolicy_); ok {
- return x.RetryPolicy
- }
- return nil
-}
-
-func (x *MethodConfig) GetHedgingPolicy() *MethodConfig_HedgingPolicy {
- if x, ok := x.GetRetryOrHedgingPolicy().(*MethodConfig_HedgingPolicy_); ok {
- return x.HedgingPolicy
- }
- return nil
-}
-
-type isMethodConfig_RetryOrHedgingPolicy interface {
- isMethodConfig_RetryOrHedgingPolicy()
-}
-
-type MethodConfig_RetryPolicy_ struct {
- RetryPolicy *MethodConfig_RetryPolicy `protobuf:"bytes,6,opt,name=retry_policy,json=retryPolicy,proto3,oneof"`
-}
-
-type MethodConfig_HedgingPolicy_ struct {
- HedgingPolicy *MethodConfig_HedgingPolicy `protobuf:"bytes,7,opt,name=hedging_policy,json=hedgingPolicy,proto3,oneof"`
-}
-
-func (*MethodConfig_RetryPolicy_) isMethodConfig_RetryOrHedgingPolicy() {}
-
-func (*MethodConfig_HedgingPolicy_) isMethodConfig_RetryOrHedgingPolicy() {}
-
-// Configuration for pick_first LB policy.
-type PickFirstConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *PickFirstConfig) Reset() {
- *x = PickFirstConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PickFirstConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PickFirstConfig) ProtoMessage() {}
-
-func (x *PickFirstConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PickFirstConfig.ProtoReflect.Descriptor instead.
-func (*PickFirstConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{1}
-}
-
-// Configuration for round_robin LB policy.
-type RoundRobinConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *RoundRobinConfig) Reset() {
- *x = RoundRobinConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RoundRobinConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RoundRobinConfig) ProtoMessage() {}
-
-func (x *RoundRobinConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RoundRobinConfig.ProtoReflect.Descriptor instead.
-func (*RoundRobinConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{2}
-}
-
-// Configuration for outlier_detection LB policy
-type OutlierDetectionLoadBalancingConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The time interval between ejection analysis sweeps. This can result in
- // both new ejections as well as addresses being returned to service. Defaults
- // to 10000ms or 10s.
- Interval *durationpb.Duration `protobuf:"bytes,1,opt,name=interval,proto3" json:"interval,omitempty"`
- // The base time that as address is ejected for. The real time is equal to the
- // base time multiplied by the number of times the address has been ejected.
- // Defaults to 30000ms or 30s.
- BaseEjectionTime *durationpb.Duration `protobuf:"bytes,2,opt,name=base_ejection_time,json=baseEjectionTime,proto3" json:"base_ejection_time,omitempty"`
- // The maximum time that an address is ejected for. If not specified, the default value (300000ms or 300s) or
- // the base_ejection_time value is applied, whatever is larger.
- MaxEjectionTime *durationpb.Duration `protobuf:"bytes,3,opt,name=max_ejection_time,json=maxEjectionTime,proto3" json:"max_ejection_time,omitempty"`
- // The maximum % of an address list that can be ejected due to outlier
- // detection. Defaults to 10% but will eject at least one address regardless of the value.
- MaxEjectionPercent *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=max_ejection_percent,json=maxEjectionPercent,proto3" json:"max_ejection_percent,omitempty"`
- // If set, success rate ejections will be performed
- SuccessRateEjection *OutlierDetectionLoadBalancingConfig_SuccessRateEjection `protobuf:"bytes,5,opt,name=success_rate_ejection,json=successRateEjection,proto3" json:"success_rate_ejection,omitempty"`
- // If set, failure rate ejections will be performed
- FailurePercentageEjection *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection `protobuf:"bytes,6,opt,name=failure_percentage_ejection,json=failurePercentageEjection,proto3" json:"failure_percentage_ejection,omitempty"`
- // The config for the child policy
- ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,13,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) Reset() {
- *x = OutlierDetectionLoadBalancingConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OutlierDetectionLoadBalancingConfig) ProtoMessage() {}
-
-func (x *OutlierDetectionLoadBalancingConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OutlierDetectionLoadBalancingConfig.ProtoReflect.Descriptor instead.
-func (*OutlierDetectionLoadBalancingConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) GetInterval() *durationpb.Duration {
- if x != nil {
- return x.Interval
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) GetBaseEjectionTime() *durationpb.Duration {
- if x != nil {
- return x.BaseEjectionTime
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) GetMaxEjectionTime() *durationpb.Duration {
- if x != nil {
- return x.MaxEjectionTime
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) GetMaxEjectionPercent() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MaxEjectionPercent
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) GetSuccessRateEjection() *OutlierDetectionLoadBalancingConfig_SuccessRateEjection {
- if x != nil {
- return x.SuccessRateEjection
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) GetFailurePercentageEjection() *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection {
- if x != nil {
- return x.FailurePercentageEjection
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig) GetChildPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.ChildPolicy
- }
- return nil
-}
-
-// Configuration for grpclb LB policy.
-type GrpcLbConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. What LB policy to use for routing between the backend
- // addresses. If unset, defaults to round_robin.
- // Currently, the only supported values are round_robin and pick_first.
- // Note that this will be used both in balancer mode and in fallback mode.
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support.
- ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,1,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
- // Optional. If specified, overrides the name of the service to be sent to
- // the balancer.
- ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
- // Optional. The timeout in seconds for receiving the server list from the LB
- // server. Defaults to 10s.
- InitialFallbackTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=initial_fallback_timeout,json=initialFallbackTimeout,proto3" json:"initial_fallback_timeout,omitempty"`
-}
-
-func (x *GrpcLbConfig) Reset() {
- *x = GrpcLbConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GrpcLbConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GrpcLbConfig) ProtoMessage() {}
-
-func (x *GrpcLbConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GrpcLbConfig.ProtoReflect.Descriptor instead.
-func (*GrpcLbConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *GrpcLbConfig) GetChildPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.ChildPolicy
- }
- return nil
-}
-
-func (x *GrpcLbConfig) GetServiceName() string {
- if x != nil {
- return x.ServiceName
- }
- return ""
-}
-
-func (x *GrpcLbConfig) GetInitialFallbackTimeout() *durationpb.Duration {
- if x != nil {
- return x.InitialFallbackTimeout
- }
- return nil
-}
-
-// Configuration for priority LB policy.
-type PriorityLoadBalancingPolicyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Children map[string]*PriorityLoadBalancingPolicyConfig_Child `protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // A list of child names in decreasing priority order
- // (i.e., first element is the highest priority).
- Priorities []string `protobuf:"bytes,2,rep,name=priorities,proto3" json:"priorities,omitempty"`
-}
-
-func (x *PriorityLoadBalancingPolicyConfig) Reset() {
- *x = PriorityLoadBalancingPolicyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PriorityLoadBalancingPolicyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PriorityLoadBalancingPolicyConfig) ProtoMessage() {}
-
-func (x *PriorityLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PriorityLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
-func (*PriorityLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *PriorityLoadBalancingPolicyConfig) GetChildren() map[string]*PriorityLoadBalancingPolicyConfig_Child {
- if x != nil {
- return x.Children
- }
- return nil
-}
-
-func (x *PriorityLoadBalancingPolicyConfig) GetPriorities() []string {
- if x != nil {
- return x.Priorities
- }
- return nil
-}
-
-// Configuration for weighted_target LB policy.
-type WeightedTargetLoadBalancingPolicyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Targets map[string]*WeightedTargetLoadBalancingPolicyConfig_Target `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig) Reset() {
- *x = WeightedTargetLoadBalancingPolicyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WeightedTargetLoadBalancingPolicyConfig) ProtoMessage() {}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WeightedTargetLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
-func (*WeightedTargetLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig) GetTargets() map[string]*WeightedTargetLoadBalancingPolicyConfig_Target {
- if x != nil {
- return x.Targets
- }
- return nil
-}
-
-// Configuration for xds_cluster_manager_experimental LB policy.
-type XdsClusterManagerLoadBalancingPolicyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Children map[string]*XdsClusterManagerLoadBalancingPolicyConfig_Child `protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig) Reset() {
- *x = XdsClusterManagerLoadBalancingPolicyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsClusterManagerLoadBalancingPolicyConfig) ProtoMessage() {}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsClusterManagerLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
-func (*XdsClusterManagerLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig) GetChildren() map[string]*XdsClusterManagerLoadBalancingPolicyConfig_Child {
- if x != nil {
- return x.Children
- }
- return nil
-}
-
-// Configuration for the cds LB policy.
-type CdsConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Required.
-}
-
-func (x *CdsConfig) Reset() {
- *x = CdsConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CdsConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CdsConfig) ProtoMessage() {}
-
-func (x *CdsConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CdsConfig.ProtoReflect.Descriptor instead.
-func (*CdsConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *CdsConfig) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-// Represents an xDS server.
-type XdsServer struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ServerUri string `protobuf:"bytes,1,opt,name=server_uri,proto3" json:"server_uri,omitempty"` // Required.
- // A list of channel creds to use. The first supported type will be used.
- ChannelCreds []*XdsServer_ChannelCredentials `protobuf:"bytes,2,rep,name=channel_creds,proto3" json:"channel_creds,omitempty"`
- // A repeated list of server features.
- ServerFeatures []*structpb.Value `protobuf:"bytes,3,rep,name=server_features,proto3" json:"server_features,omitempty"`
-}
-
-func (x *XdsServer) Reset() {
- *x = XdsServer{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsServer) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsServer) ProtoMessage() {}
-
-func (x *XdsServer) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsServer.ProtoReflect.Descriptor instead.
-func (*XdsServer) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *XdsServer) GetServerUri() string {
- if x != nil {
- return x.ServerUri
- }
- return ""
-}
-
-func (x *XdsServer) GetChannelCreds() []*XdsServer_ChannelCredentials {
- if x != nil {
- return x.ChannelCreds
- }
- return nil
-}
-
-func (x *XdsServer) GetServerFeatures() []*structpb.Value {
- if x != nil {
- return x.ServerFeatures
- }
- return nil
-}
-
-// Configuration for xds_cluster_resolver LB policy.
-type XdsClusterResolverLoadBalancingPolicyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Ordered list of discovery mechanisms.
- // Must have at least one element.
- // Results from each discovery mechanism are concatenated together in
- // successive priorities.
- DiscoveryMechanisms []*XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism `protobuf:"bytes,1,rep,name=discovery_mechanisms,json=discoveryMechanisms,proto3" json:"discovery_mechanisms,omitempty"`
- // xDS LB policy.
- // This represents the xDS LB policy, which does not necessarily map
- // one-to-one to a gRPC LB policy. Currently, the following policies
- // are supported:
- // - "ROUND_ROBIN" (config is empty)
- // - "RING_HASH" (config is a RingHashLoadBalancingConfig)
- XdsLbPolicy []*LoadBalancingConfig `protobuf:"bytes,2,rep,name=xds_lb_policy,json=xdsLbPolicy,proto3" json:"xds_lb_policy,omitempty"`
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig) Reset() {
- *x = XdsClusterResolverLoadBalancingPolicyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsClusterResolverLoadBalancingPolicyConfig) ProtoMessage() {}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsClusterResolverLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
-func (*XdsClusterResolverLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig) GetDiscoveryMechanisms() []*XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism {
- if x != nil {
- return x.DiscoveryMechanisms
- }
- return nil
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig) GetXdsLbPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.XdsLbPolicy
- }
- return nil
-}
-
-// Configuration for xds_cluster_impl LB policy.
-type XdsClusterImplLoadBalancingPolicyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Cluster name. Required.
- Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
- // EDS service name.
- // Not set if cluster is not an EDS cluster or if it does not
- // specify an EDS service name.
- EdsServiceName string `protobuf:"bytes,2,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
- // Server to send load reports to.
- // If unset, no load reporting is done.
- // If set to empty string, load reporting will be sent to the same
- // server as we are getting xds data from.
- // DEPRECATED: Use new lrs_load_reporting_server field instead.
- //
- // Deprecated: Do not use.
- LrsLoadReportingServerName *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // Supercedes lrs_load_reporting_server_name field.
- LrsLoadReportingServer *XdsServer `protobuf:"bytes,7,opt,name=lrs_load_reporting_server,json=lrsLoadReportingServer,proto3" json:"lrs_load_reporting_server,omitempty"`
- // Maximum number of outstanding requests can be made to the upstream cluster.
- // Default is 1024.
- MaxConcurrentRequests *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=max_concurrent_requests,json=maxConcurrentRequests,proto3" json:"max_concurrent_requests,omitempty"`
- DropCategories []*XdsClusterImplLoadBalancingPolicyConfig_DropCategory `protobuf:"bytes,5,rep,name=drop_categories,json=dropCategories,proto3" json:"drop_categories,omitempty"`
- // Child policy.
- ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,6,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) Reset() {
- *x = XdsClusterImplLoadBalancingPolicyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsClusterImplLoadBalancingPolicyConfig) ProtoMessage() {}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsClusterImplLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
-func (*XdsClusterImplLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) GetEdsServiceName() string {
- if x != nil {
- return x.EdsServiceName
- }
- return ""
-}
-
-// Deprecated: Do not use.
-func (x *XdsClusterImplLoadBalancingPolicyConfig) GetLrsLoadReportingServerName() *wrapperspb.StringValue {
- if x != nil {
- return x.LrsLoadReportingServerName
- }
- return nil
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) GetLrsLoadReportingServer() *XdsServer {
- if x != nil {
- return x.LrsLoadReportingServer
- }
- return nil
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) GetMaxConcurrentRequests() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MaxConcurrentRequests
- }
- return nil
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) GetDropCategories() []*XdsClusterImplLoadBalancingPolicyConfig_DropCategory {
- if x != nil {
- return x.DropCategories
- }
- return nil
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig) GetChildPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.ChildPolicy
- }
- return nil
-}
-
-// Configuration for eds LB policy.
-type EdsLoadBalancingPolicyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Cluster name. Required.
- Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
- // EDS service name, as returned in CDS.
- // May be unset if not specified in CDS.
- EdsServiceName string `protobuf:"bytes,2,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
- // Server to send load reports to.
- // If unset, no load reporting is done.
- // If set to empty string, load reporting will be sent to the same
- // server as we are getting xds data from.
- LrsLoadReportingServerName *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
- // Locality-picking policy.
- // This policy's config is expected to be in the format used
- // by the weighted_target policy. Note that the config should include
- // an empty value for the "targets" field; that empty value will be
- // replaced by one that is dynamically generated based on the EDS data.
- // Optional; defaults to "weighted_target".
- LocalityPickingPolicy []*LoadBalancingConfig `protobuf:"bytes,4,rep,name=locality_picking_policy,json=localityPickingPolicy,proto3" json:"locality_picking_policy,omitempty"`
- // Endpoint-picking policy.
- // This will be configured as the policy for each child in the
- // locality-policy's config.
- // Optional; defaults to "round_robin".
- EndpointPickingPolicy []*LoadBalancingConfig `protobuf:"bytes,5,rep,name=endpoint_picking_policy,json=endpointPickingPolicy,proto3" json:"endpoint_picking_policy,omitempty"`
-}
-
-func (x *EdsLoadBalancingPolicyConfig) Reset() {
- *x = EdsLoadBalancingPolicyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *EdsLoadBalancingPolicyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EdsLoadBalancingPolicyConfig) ProtoMessage() {}
-
-func (x *EdsLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use EdsLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
-func (*EdsLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *EdsLoadBalancingPolicyConfig) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-func (x *EdsLoadBalancingPolicyConfig) GetEdsServiceName() string {
- if x != nil {
- return x.EdsServiceName
- }
- return ""
-}
-
-func (x *EdsLoadBalancingPolicyConfig) GetLrsLoadReportingServerName() *wrapperspb.StringValue {
- if x != nil {
- return x.LrsLoadReportingServerName
- }
- return nil
-}
-
-func (x *EdsLoadBalancingPolicyConfig) GetLocalityPickingPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.LocalityPickingPolicy
- }
- return nil
-}
-
-func (x *EdsLoadBalancingPolicyConfig) GetEndpointPickingPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.EndpointPickingPolicy
- }
- return nil
-}
-
-// Configuration for ring_hash LB policy.
-type RingHashLoadBalancingConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- MinRingSize uint64 `protobuf:"varint,1,opt,name=min_ring_size,json=minRingSize,proto3" json:"min_ring_size,omitempty"`
- MaxRingSize uint64 `protobuf:"varint,2,opt,name=max_ring_size,json=maxRingSize,proto3" json:"max_ring_size,omitempty"`
-}
-
-func (x *RingHashLoadBalancingConfig) Reset() {
- *x = RingHashLoadBalancingConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RingHashLoadBalancingConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RingHashLoadBalancingConfig) ProtoMessage() {}
-
-func (x *RingHashLoadBalancingConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RingHashLoadBalancingConfig.ProtoReflect.Descriptor instead.
-func (*RingHashLoadBalancingConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *RingHashLoadBalancingConfig) GetMinRingSize() uint64 {
- if x != nil {
- return x.MinRingSize
- }
- return 0
-}
-
-func (x *RingHashLoadBalancingConfig) GetMaxRingSize() uint64 {
- if x != nil {
- return x.MaxRingSize
- }
- return 0
-}
-
-// Configuration for lrs LB policy.
-type LrsLoadBalancingPolicyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Cluster name. Required.
- ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
- // EDS service name, as returned in CDS.
- // May be unset if not specified in CDS.
- EdsServiceName string `protobuf:"bytes,2,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
- // Server to send load reports to. Required.
- // If set to empty string, load reporting will be sent to the same
- // server as we are getting xds data from.
- LrsLoadReportingServerName string `protobuf:"bytes,3,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
- Locality *LrsLoadBalancingPolicyConfig_Locality `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"`
- // Endpoint-picking policy.
- ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,5,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-}
-
-func (x *LrsLoadBalancingPolicyConfig) Reset() {
- *x = LrsLoadBalancingPolicyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LrsLoadBalancingPolicyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LrsLoadBalancingPolicyConfig) ProtoMessage() {}
-
-func (x *LrsLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LrsLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
-func (*LrsLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *LrsLoadBalancingPolicyConfig) GetClusterName() string {
- if x != nil {
- return x.ClusterName
- }
- return ""
-}
-
-func (x *LrsLoadBalancingPolicyConfig) GetEdsServiceName() string {
- if x != nil {
- return x.EdsServiceName
- }
- return ""
-}
-
-func (x *LrsLoadBalancingPolicyConfig) GetLrsLoadReportingServerName() string {
- if x != nil {
- return x.LrsLoadReportingServerName
- }
- return ""
-}
-
-func (x *LrsLoadBalancingPolicyConfig) GetLocality() *LrsLoadBalancingPolicyConfig_Locality {
- if x != nil {
- return x.Locality
- }
- return nil
-}
-
-func (x *LrsLoadBalancingPolicyConfig) GetChildPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.ChildPolicy
- }
- return nil
-}
-
-// Configuration for xds LB policy.
-type XdsConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Name of balancer to connect to.
- //
- // Deprecated: Do not use.
- BalancerName string `protobuf:"bytes,1,opt,name=balancer_name,json=balancerName,proto3" json:"balancer_name,omitempty"`
- // Optional. What LB policy to use for intra-locality routing.
- // If unset, will use whatever algorithm is specified by the balancer.
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support.
- ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,2,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
- // Optional. What LB policy to use in fallback mode. If not
- // specified, defaults to round_robin.
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support.
- FallbackPolicy []*LoadBalancingConfig `protobuf:"bytes,3,rep,name=fallback_policy,json=fallbackPolicy,proto3" json:"fallback_policy,omitempty"`
- // Optional. Name to use in EDS query. If not present, defaults to
- // the server name from the target URI.
- EdsServiceName string `protobuf:"bytes,4,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // If set to the empty string, load reporting will be sent to the same
- // server that we obtained CDS data from.
- LrsLoadReportingServerName *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
-}
-
-func (x *XdsConfig) Reset() {
- *x = XdsConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsConfig) ProtoMessage() {}
-
-func (x *XdsConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsConfig.ProtoReflect.Descriptor instead.
-func (*XdsConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{15}
-}
-
-// Deprecated: Do not use.
-func (x *XdsConfig) GetBalancerName() string {
- if x != nil {
- return x.BalancerName
- }
- return ""
-}
-
-func (x *XdsConfig) GetChildPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.ChildPolicy
- }
- return nil
-}
-
-func (x *XdsConfig) GetFallbackPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.FallbackPolicy
- }
- return nil
-}
-
-func (x *XdsConfig) GetEdsServiceName() string {
- if x != nil {
- return x.EdsServiceName
- }
- return ""
-}
-
-func (x *XdsConfig) GetLrsLoadReportingServerName() *wrapperspb.StringValue {
- if x != nil {
- return x.LrsLoadReportingServerName
- }
- return nil
-}
-
-// Selects LB policy and provides corresponding configuration.
-//
-// In general, all instances of this field should be repeated. Clients will
-// iterate through the list in order and stop at the first policy that they
-// support. This allows the service config to specify custom policies that may
-// not be known to all clients.
-//
-// - If the config for the first supported policy is invalid, the whole service
-// config is invalid.
-// - If the list doesn't contain any supported policy, the whole service config
-// is invalid.
-type LoadBalancingConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Exactly one LB policy may be configured.
- //
- // Types that are assignable to Policy:
- // *LoadBalancingConfig_PickFirst
- // *LoadBalancingConfig_RoundRobin
- // *LoadBalancingConfig_OutlierDetection
- // *LoadBalancingConfig_Grpclb
- // *LoadBalancingConfig_PriorityExperimental
- // *LoadBalancingConfig_WeightedTargetExperimental
- // *LoadBalancingConfig_XdsClusterManagerExperimental
- // *LoadBalancingConfig_CdsExperimental
- // *LoadBalancingConfig_XdsClusterResolverExperimental
- // *LoadBalancingConfig_XdsClusterImplExperimental
- // *LoadBalancingConfig_RingHashExperimental
- // *LoadBalancingConfig_LrsExperimental
- // *LoadBalancingConfig_EdsExperimental
- // *LoadBalancingConfig_Xds
- // *LoadBalancingConfig_XdsExperimental
- Policy isLoadBalancingConfig_Policy `protobuf_oneof:"policy"`
-}
-
-func (x *LoadBalancingConfig) Reset() {
- *x = LoadBalancingConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancingConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancingConfig) ProtoMessage() {}
-
-func (x *LoadBalancingConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancingConfig.ProtoReflect.Descriptor instead.
-func (*LoadBalancingConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{16}
-}
-
-func (m *LoadBalancingConfig) GetPolicy() isLoadBalancingConfig_Policy {
- if m != nil {
- return m.Policy
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetPickFirst() *PickFirstConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_PickFirst); ok {
- return x.PickFirst
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetRoundRobin() *RoundRobinConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_RoundRobin); ok {
- return x.RoundRobin
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetOutlierDetection() *OutlierDetectionLoadBalancingConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_OutlierDetection); ok {
- return x.OutlierDetection
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetGrpclb() *GrpcLbConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_Grpclb); ok {
- return x.Grpclb
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetPriorityExperimental() *PriorityLoadBalancingPolicyConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_PriorityExperimental); ok {
- return x.PriorityExperimental
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetWeightedTargetExperimental() *WeightedTargetLoadBalancingPolicyConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_WeightedTargetExperimental); ok {
- return x.WeightedTargetExperimental
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetXdsClusterManagerExperimental() *XdsClusterManagerLoadBalancingPolicyConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_XdsClusterManagerExperimental); ok {
- return x.XdsClusterManagerExperimental
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetCdsExperimental() *CdsConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_CdsExperimental); ok {
- return x.CdsExperimental
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetXdsClusterResolverExperimental() *XdsClusterResolverLoadBalancingPolicyConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_XdsClusterResolverExperimental); ok {
- return x.XdsClusterResolverExperimental
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetXdsClusterImplExperimental() *XdsClusterImplLoadBalancingPolicyConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_XdsClusterImplExperimental); ok {
- return x.XdsClusterImplExperimental
- }
- return nil
-}
-
-func (x *LoadBalancingConfig) GetRingHashExperimental() *RingHashLoadBalancingConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_RingHashExperimental); ok {
- return x.RingHashExperimental
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *LoadBalancingConfig) GetLrsExperimental() *LrsLoadBalancingPolicyConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_LrsExperimental); ok {
- return x.LrsExperimental
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *LoadBalancingConfig) GetEdsExperimental() *EdsLoadBalancingPolicyConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_EdsExperimental); ok {
- return x.EdsExperimental
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *LoadBalancingConfig) GetXds() *XdsConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_Xds); ok {
- return x.Xds
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *LoadBalancingConfig) GetXdsExperimental() *XdsConfig {
- if x, ok := x.GetPolicy().(*LoadBalancingConfig_XdsExperimental); ok {
- return x.XdsExperimental
- }
- return nil
-}
-
-type isLoadBalancingConfig_Policy interface {
- isLoadBalancingConfig_Policy()
-}
-
-type LoadBalancingConfig_PickFirst struct {
- PickFirst *PickFirstConfig `protobuf:"bytes,4,opt,name=pick_first,proto3,oneof"`
-}
-
-type LoadBalancingConfig_RoundRobin struct {
- RoundRobin *RoundRobinConfig `protobuf:"bytes,1,opt,name=round_robin,proto3,oneof"`
-}
-
-type LoadBalancingConfig_OutlierDetection struct {
- OutlierDetection *OutlierDetectionLoadBalancingConfig `protobuf:"bytes,15,opt,name=outlier_detection,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Grpclb struct {
- // gRPC lookaside load balancing.
- // This will eventually be deprecated by the new xDS-based local
- // balancing policy.
- Grpclb *GrpcLbConfig `protobuf:"bytes,3,opt,name=grpclb,proto3,oneof"`
-}
-
-type LoadBalancingConfig_PriorityExperimental struct {
- PriorityExperimental *PriorityLoadBalancingPolicyConfig `protobuf:"bytes,9,opt,name=priority_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_WeightedTargetExperimental struct {
- WeightedTargetExperimental *WeightedTargetLoadBalancingPolicyConfig `protobuf:"bytes,10,opt,name=weighted_target_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_XdsClusterManagerExperimental struct {
- // xDS-based load balancing.
- XdsClusterManagerExperimental *XdsClusterManagerLoadBalancingPolicyConfig `protobuf:"bytes,14,opt,name=xds_cluster_manager_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_CdsExperimental struct {
- CdsExperimental *CdsConfig `protobuf:"bytes,6,opt,name=cds_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_XdsClusterResolverExperimental struct {
- XdsClusterResolverExperimental *XdsClusterResolverLoadBalancingPolicyConfig `protobuf:"bytes,11,opt,name=xds_cluster_resolver_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_XdsClusterImplExperimental struct {
- XdsClusterImplExperimental *XdsClusterImplLoadBalancingPolicyConfig `protobuf:"bytes,12,opt,name=xds_cluster_impl_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_RingHashExperimental struct {
- RingHashExperimental *RingHashLoadBalancingConfig `protobuf:"bytes,13,opt,name=ring_hash_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_LrsExperimental struct {
- // Deprecated xDS-related policies.
- //
- // Deprecated: Do not use.
- LrsExperimental *LrsLoadBalancingPolicyConfig `protobuf:"bytes,8,opt,name=lrs_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_EdsExperimental struct {
- // Deprecated: Do not use.
- EdsExperimental *EdsLoadBalancingPolicyConfig `protobuf:"bytes,7,opt,name=eds_experimental,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Xds struct {
- // Deprecated: Do not use.
- Xds *XdsConfig `protobuf:"bytes,2,opt,name=xds,proto3,oneof"`
-}
-
-type LoadBalancingConfig_XdsExperimental struct {
- // Deprecated: Do not use.
- XdsExperimental *XdsConfig `protobuf:"bytes,5,opt,name=xds_experimental,proto3,oneof"`
-}
-
-func (*LoadBalancingConfig_PickFirst) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_RoundRobin) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_OutlierDetection) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Grpclb) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_PriorityExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_WeightedTargetExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_XdsClusterManagerExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_CdsExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_XdsClusterResolverExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_XdsClusterImplExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_RingHashExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_LrsExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_EdsExperimental) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Xds) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_XdsExperimental) isLoadBalancingConfig_Policy() {}
-
-// A ServiceConfig represents information about a service but is not specific to
-// any name resolver.
-type ServiceConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Deprecated: Do not use.
- LoadBalancingPolicy ServiceConfig_LoadBalancingPolicy `protobuf:"varint,1,opt,name=load_balancing_policy,json=loadBalancingPolicy,proto3,enum=grpc.service_config.ServiceConfig_LoadBalancingPolicy" json:"load_balancing_policy,omitempty"`
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support. If none
- // are supported, the service config is considered invalid.
- LoadBalancingConfig []*LoadBalancingConfig `protobuf:"bytes,4,rep,name=load_balancing_config,json=loadBalancingConfig,proto3" json:"load_balancing_config,omitempty"`
- // Per-method configuration.
- MethodConfig []*MethodConfig `protobuf:"bytes,2,rep,name=method_config,json=methodConfig,proto3" json:"method_config,omitempty"`
- RetryThrottling *ServiceConfig_RetryThrottlingPolicy `protobuf:"bytes,3,opt,name=retry_throttling,json=retryThrottling,proto3" json:"retry_throttling,omitempty"`
- HealthCheckConfig *ServiceConfig_HealthCheckConfig `protobuf:"bytes,5,opt,name=health_check_config,json=healthCheckConfig,proto3" json:"health_check_config,omitempty"`
-}
-
-func (x *ServiceConfig) Reset() {
- *x = ServiceConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServiceConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServiceConfig) ProtoMessage() {}
-
-func (x *ServiceConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServiceConfig.ProtoReflect.Descriptor instead.
-func (*ServiceConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{17}
-}
-
-// Deprecated: Do not use.
-func (x *ServiceConfig) GetLoadBalancingPolicy() ServiceConfig_LoadBalancingPolicy {
- if x != nil {
- return x.LoadBalancingPolicy
- }
- return ServiceConfig_UNSPECIFIED
-}
-
-func (x *ServiceConfig) GetLoadBalancingConfig() []*LoadBalancingConfig {
- if x != nil {
- return x.LoadBalancingConfig
- }
- return nil
-}
-
-func (x *ServiceConfig) GetMethodConfig() []*MethodConfig {
- if x != nil {
- return x.MethodConfig
- }
- return nil
-}
-
-func (x *ServiceConfig) GetRetryThrottling() *ServiceConfig_RetryThrottlingPolicy {
- if x != nil {
- return x.RetryThrottling
- }
- return nil
-}
-
-func (x *ServiceConfig) GetHealthCheckConfig() *ServiceConfig_HealthCheckConfig {
- if x != nil {
- return x.HealthCheckConfig
- }
- return nil
-}
-
-// The names of the methods to which this configuration applies.
-// - MethodConfig without names (empty list) will be skipped.
-// - Each name entry must be unique across the entire ServiceConfig.
-// - If the 'method' field is empty, this MethodConfig specifies the defaults
-// for all methods for the specified service.
-// - If the 'service' field is empty, the 'method' field must be empty, and
-// this MethodConfig specifies the default for all methods (it's the default
-// config).
-//
-// When determining which MethodConfig to use for a given RPC, the most
-// specific match wins. For example, let's say that the service config
-// contains the following MethodConfig entries:
-//
-// method_config { name { } ... }
-// method_config { name { service: "MyService" } ... }
-// method_config { name { service: "MyService" method: "Foo" } ... }
-//
-// MyService/Foo will use the third entry, because it exactly matches the
-// service and method name. MyService/Bar will use the second entry, because
-// it provides the default for all methods of MyService. AnotherService/Baz
-// will use the first entry, because it doesn't match the other two.
-//
-// In JSON representation, value "", value `null`, and not present are the
-// same. The following are the same Name:
-// - { "service": "s" }
-// - { "service": "s", "method": null }
-// - { "service": "s", "method": "" }
-type MethodConfig_Name struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` // Required. Includes proto package name.
- Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
-}
-
-func (x *MethodConfig_Name) Reset() {
- *x = MethodConfig_Name{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MethodConfig_Name) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MethodConfig_Name) ProtoMessage() {}
-
-func (x *MethodConfig_Name) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MethodConfig_Name.ProtoReflect.Descriptor instead.
-func (*MethodConfig_Name) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *MethodConfig_Name) GetService() string {
- if x != nil {
- return x.Service
- }
- return ""
-}
-
-func (x *MethodConfig_Name) GetMethod() string {
- if x != nil {
- return x.Method
- }
- return ""
-}
-
-// The retry policy for outgoing RPCs.
-type MethodConfig_RetryPolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The maximum number of RPC attempts, including the original attempt.
- //
- // This field is required and must be greater than 1.
- // Any value greater than 5 will be treated as if it were 5.
- MaxAttempts uint32 `protobuf:"varint,1,opt,name=max_attempts,json=maxAttempts,proto3" json:"max_attempts,omitempty"`
- // Exponential backoff parameters. The initial retry attempt will occur at
- // random(0, initial_backoff). In general, the nth attempt will occur at
- // random(0,
- // min(initial_backoff*backoff_multiplier**(n-1), max_backoff)).
- // Required. Must be greater than zero.
- InitialBackoff *durationpb.Duration `protobuf:"bytes,2,opt,name=initial_backoff,json=initialBackoff,proto3" json:"initial_backoff,omitempty"`
- // Required. Must be greater than zero.
- MaxBackoff *durationpb.Duration `protobuf:"bytes,3,opt,name=max_backoff,json=maxBackoff,proto3" json:"max_backoff,omitempty"`
- BackoffMultiplier float32 `protobuf:"fixed32,4,opt,name=backoff_multiplier,json=backoffMultiplier,proto3" json:"backoff_multiplier,omitempty"` // Required. Must be greater than zero.
- // The set of status codes which may be retried.
- //
- // This field is required and must be non-empty.
- RetryableStatusCodes []code.Code `protobuf:"varint,5,rep,packed,name=retryable_status_codes,json=retryableStatusCodes,proto3,enum=google.rpc.Code" json:"retryable_status_codes,omitempty"`
-}
-
-func (x *MethodConfig_RetryPolicy) Reset() {
- *x = MethodConfig_RetryPolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[19]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MethodConfig_RetryPolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MethodConfig_RetryPolicy) ProtoMessage() {}
-
-func (x *MethodConfig_RetryPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[19]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MethodConfig_RetryPolicy.ProtoReflect.Descriptor instead.
-func (*MethodConfig_RetryPolicy) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *MethodConfig_RetryPolicy) GetMaxAttempts() uint32 {
- if x != nil {
- return x.MaxAttempts
- }
- return 0
-}
-
-func (x *MethodConfig_RetryPolicy) GetInitialBackoff() *durationpb.Duration {
- if x != nil {
- return x.InitialBackoff
- }
- return nil
-}
-
-func (x *MethodConfig_RetryPolicy) GetMaxBackoff() *durationpb.Duration {
- if x != nil {
- return x.MaxBackoff
- }
- return nil
-}
-
-func (x *MethodConfig_RetryPolicy) GetBackoffMultiplier() float32 {
- if x != nil {
- return x.BackoffMultiplier
- }
- return 0
-}
-
-func (x *MethodConfig_RetryPolicy) GetRetryableStatusCodes() []code.Code {
- if x != nil {
- return x.RetryableStatusCodes
- }
- return nil
-}
-
-// The hedging policy for outgoing RPCs. Hedged RPCs may execute more than
-// once on the server, so only idempotent methods should specify a hedging
-// policy.
-type MethodConfig_HedgingPolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The hedging policy will send up to max_requests RPCs.
- // This number represents the total number of all attempts, including
- // the original attempt.
- //
- // This field is required and must be greater than 1.
- // Any value greater than 5 will be treated as if it were 5.
- MaxAttempts uint32 `protobuf:"varint,1,opt,name=max_attempts,json=maxAttempts,proto3" json:"max_attempts,omitempty"`
- // The first RPC will be sent immediately, but the max_requests-1 subsequent
- // hedged RPCs will be sent at intervals of every hedging_delay. Set this
- // to 0 to immediately send all max_requests RPCs.
- HedgingDelay *durationpb.Duration `protobuf:"bytes,2,opt,name=hedging_delay,json=hedgingDelay,proto3" json:"hedging_delay,omitempty"`
- // The set of status codes which indicate other hedged RPCs may still
- // succeed. If a non-fatal status code is returned by the server, hedged
- // RPCs will continue. Otherwise, outstanding requests will be canceled and
- // the error returned to the client application layer.
- //
- // This field is optional.
- NonFatalStatusCodes []code.Code `protobuf:"varint,3,rep,packed,name=non_fatal_status_codes,json=nonFatalStatusCodes,proto3,enum=google.rpc.Code" json:"non_fatal_status_codes,omitempty"`
-}
-
-func (x *MethodConfig_HedgingPolicy) Reset() {
- *x = MethodConfig_HedgingPolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MethodConfig_HedgingPolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MethodConfig_HedgingPolicy) ProtoMessage() {}
-
-func (x *MethodConfig_HedgingPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MethodConfig_HedgingPolicy.ProtoReflect.Descriptor instead.
-func (*MethodConfig_HedgingPolicy) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0, 2}
-}
-
-func (x *MethodConfig_HedgingPolicy) GetMaxAttempts() uint32 {
- if x != nil {
- return x.MaxAttempts
- }
- return 0
-}
-
-func (x *MethodConfig_HedgingPolicy) GetHedgingDelay() *durationpb.Duration {
- if x != nil {
- return x.HedgingDelay
- }
- return nil
-}
-
-func (x *MethodConfig_HedgingPolicy) GetNonFatalStatusCodes() []code.Code {
- if x != nil {
- return x.NonFatalStatusCodes
- }
- return nil
-}
-
-// Parameters for the success rate ejection algorithm.
-// This algorithm monitors the request success rate for all endpoints and
-// ejects individual endpoints whose success rates are statistical outliers.
-type OutlierDetectionLoadBalancingConfig_SuccessRateEjection struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // This factor is used to determine the ejection threshold for success rate
- // outlier ejection. The ejection threshold is the difference between the
- // mean success rate, and the product of this factor and the standard
- // deviation of the mean success rate: mean - (stdev *
- // success_rate_stdev_factor). This factor is divided by a thousand to get a
- // double. That is, if the desired factor is 1.9, the runtime value should
- // be 1900. Defaults to 1900.
- StdevFactor *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=stdev_factor,json=stdevFactor,proto3" json:"stdev_factor,omitempty"`
- // The % chance that an address will be actually ejected when an outlier status
- // is detected through success rate statistics. This setting can be used to
- // disable ejection or to ramp it up slowly. Defaults to 100.
- EnforcementPercentage *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=enforcement_percentage,json=enforcementPercentage,proto3" json:"enforcement_percentage,omitempty"`
- // The number of addresses that must have enough request volume to
- // detect success rate outliers. If the number of addresses is less than this
- // setting, outlier detection via success rate statistics is not performed
- // for any addresses. Defaults to 5.
- MinimumHosts *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=minimum_hosts,json=minimumHosts,proto3" json:"minimum_hosts,omitempty"`
- // The minimum number of total requests that must be collected in one
- // interval (as defined by the interval duration above) to include this address
- // in success rate based outlier detection. If the volume is lower than this
- // setting, outlier detection via success rate statistics is not performed
- // for that address. Defaults to 100.
- RequestVolume *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=request_volume,json=requestVolume,proto3" json:"request_volume,omitempty"`
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_SuccessRateEjection) Reset() {
- *x = OutlierDetectionLoadBalancingConfig_SuccessRateEjection{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_SuccessRateEjection) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OutlierDetectionLoadBalancingConfig_SuccessRateEjection) ProtoMessage() {}
-
-func (x *OutlierDetectionLoadBalancingConfig_SuccessRateEjection) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[21]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OutlierDetectionLoadBalancingConfig_SuccessRateEjection.ProtoReflect.Descriptor instead.
-func (*OutlierDetectionLoadBalancingConfig_SuccessRateEjection) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{3, 0}
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_SuccessRateEjection) GetStdevFactor() *wrapperspb.UInt32Value {
- if x != nil {
- return x.StdevFactor
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_SuccessRateEjection) GetEnforcementPercentage() *wrapperspb.UInt32Value {
- if x != nil {
- return x.EnforcementPercentage
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_SuccessRateEjection) GetMinimumHosts() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MinimumHosts
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_SuccessRateEjection) GetRequestVolume() *wrapperspb.UInt32Value {
- if x != nil {
- return x.RequestVolume
- }
- return nil
-}
-
-// Parameters for the failure percentage algorithm.
-// This algorithm ejects individual endpoints whose failure rate is greater than
-// some threshold, independently of any other endpoint.
-type OutlierDetectionLoadBalancingConfig_FailurePercentageEjection struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The failure percentage to use when determining failure percentage-based outlier detection. If
- // the failure percentage of a given address is greater than or equal to this value, it will be
- // ejected. Defaults to 85.
- Threshold *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=threshold,proto3" json:"threshold,omitempty"`
- // The % chance that an address will be actually ejected when an outlier status is detected through
- // failure percentage statistics. This setting can be used to disable ejection or to ramp it up
- // slowly. Defaults to 100.
- EnforcementPercentage *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=enforcement_percentage,json=enforcementPercentage,proto3" json:"enforcement_percentage,omitempty"`
- // The minimum number of addresses in order to perform failure percentage-based ejection.
- // If the total number of addresses is less than this value, failure percentage-based
- // ejection will not be performed. Defaults to 5.
- MinimumHosts *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=minimum_hosts,json=minimumHosts,proto3" json:"minimum_hosts,omitempty"`
- // The minimum number of total requests that must be collected in one interval (as defined by the
- // interval duration above) to perform failure percentage-based ejection for this address. If the
- // volume is lower than this setting, failure percentage-based ejection will not be performed for
- // this host. Defaults to 50.
- RequestVolume *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=request_volume,json=requestVolume,proto3" json:"request_volume,omitempty"`
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) Reset() {
- *x = OutlierDetectionLoadBalancingConfig_FailurePercentageEjection{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[22]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) ProtoMessage() {}
-
-func (x *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[22]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OutlierDetectionLoadBalancingConfig_FailurePercentageEjection.ProtoReflect.Descriptor instead.
-func (*OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{3, 1}
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) GetThreshold() *wrapperspb.UInt32Value {
- if x != nil {
- return x.Threshold
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) GetEnforcementPercentage() *wrapperspb.UInt32Value {
- if x != nil {
- return x.EnforcementPercentage
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) GetMinimumHosts() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MinimumHosts
- }
- return nil
-}
-
-func (x *OutlierDetectionLoadBalancingConfig_FailurePercentageEjection) GetRequestVolume() *wrapperspb.UInt32Value {
- if x != nil {
- return x.RequestVolume
- }
- return nil
-}
-
-// A map of name to child policy configuration.
-// The names are used to allow the priority policy to update
-// existing child policies instead of creating new ones every
-// time it receives a config update.
-type PriorityLoadBalancingPolicyConfig_Child struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Config []*LoadBalancingConfig `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty"`
- // If true, will ignore reresolution requests from this child.
- IgnoreReresolutionRequests bool `protobuf:"varint,2,opt,name=ignore_reresolution_requests,json=ignoreReresolutionRequests,proto3" json:"ignore_reresolution_requests,omitempty"`
-}
-
-func (x *PriorityLoadBalancingPolicyConfig_Child) Reset() {
- *x = PriorityLoadBalancingPolicyConfig_Child{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PriorityLoadBalancingPolicyConfig_Child) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PriorityLoadBalancingPolicyConfig_Child) ProtoMessage() {}
-
-func (x *PriorityLoadBalancingPolicyConfig_Child) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[23]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PriorityLoadBalancingPolicyConfig_Child.ProtoReflect.Descriptor instead.
-func (*PriorityLoadBalancingPolicyConfig_Child) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{5, 0}
-}
-
-func (x *PriorityLoadBalancingPolicyConfig_Child) GetConfig() []*LoadBalancingConfig {
- if x != nil {
- return x.Config
- }
- return nil
-}
-
-func (x *PriorityLoadBalancingPolicyConfig_Child) GetIgnoreReresolutionRequests() bool {
- if x != nil {
- return x.IgnoreReresolutionRequests
- }
- return false
-}
-
-type WeightedTargetLoadBalancingPolicyConfig_Target struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Weight uint32 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
- ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,2,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig_Target) Reset() {
- *x = WeightedTargetLoadBalancingPolicyConfig_Target{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig_Target) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WeightedTargetLoadBalancingPolicyConfig_Target) ProtoMessage() {}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig_Target) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[25]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WeightedTargetLoadBalancingPolicyConfig_Target.ProtoReflect.Descriptor instead.
-func (*WeightedTargetLoadBalancingPolicyConfig_Target) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{6, 0}
-}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig_Target) GetWeight() uint32 {
- if x != nil {
- return x.Weight
- }
- return 0
-}
-
-func (x *WeightedTargetLoadBalancingPolicyConfig_Target) GetChildPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.ChildPolicy
- }
- return nil
-}
-
-type XdsClusterManagerLoadBalancingPolicyConfig_Child struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,1,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig_Child) Reset() {
- *x = XdsClusterManagerLoadBalancingPolicyConfig_Child{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[27]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig_Child) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsClusterManagerLoadBalancingPolicyConfig_Child) ProtoMessage() {}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig_Child) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[27]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsClusterManagerLoadBalancingPolicyConfig_Child.ProtoReflect.Descriptor instead.
-func (*XdsClusterManagerLoadBalancingPolicyConfig_Child) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{7, 0}
-}
-
-func (x *XdsClusterManagerLoadBalancingPolicyConfig_Child) GetChildPolicy() []*LoadBalancingConfig {
- if x != nil {
- return x.ChildPolicy
- }
- return nil
-}
-
-type XdsServer_ChannelCredentials struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Required.
- Config *structpb.Struct `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` // Optional JSON config.
-}
-
-func (x *XdsServer_ChannelCredentials) Reset() {
- *x = XdsServer_ChannelCredentials{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[29]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsServer_ChannelCredentials) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsServer_ChannelCredentials) ProtoMessage() {}
-
-func (x *XdsServer_ChannelCredentials) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[29]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsServer_ChannelCredentials.ProtoReflect.Descriptor instead.
-func (*XdsServer_ChannelCredentials) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{9, 0}
-}
-
-func (x *XdsServer_ChannelCredentials) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-func (x *XdsServer_ChannelCredentials) GetConfig() *structpb.Struct {
- if x != nil {
- return x.Config
- }
- return nil
-}
-
-// Describes a discovery mechanism instance.
-// For EDS or LOGICAL_DNS clusters, there will be exactly one
-// DiscoveryMechanism, which will describe the cluster of the parent
-// CDS policy.
-// For aggregate clusters, there will be one DiscoveryMechanism for each
-// underlying cluster.
-type XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Cluster name.
- Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // If set to the empty string, load reporting will be sent to the same
- // server that we obtained CDS data from.
- // DEPRECATED: Use new lrs_load_reporting_server field instead.
- //
- // Deprecated: Do not use.
- LrsLoadReportingServerName *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // Supercedes lrs_load_reporting_server_name field.
- LrsLoadReportingServer *XdsServer `protobuf:"bytes,7,opt,name=lrs_load_reporting_server,json=lrsLoadReportingServer,proto3" json:"lrs_load_reporting_server,omitempty"`
- // Maximum number of outstanding requests can be made to the upstream
- // cluster. Default is 1024.
- MaxConcurrentRequests *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=max_concurrent_requests,json=maxConcurrentRequests,proto3" json:"max_concurrent_requests,omitempty"`
- Type XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type `protobuf:"varint,4,opt,name=type,proto3,enum=grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type" json:"type,omitempty"`
- // For type EDS only.
- // EDS service name, as returned in CDS.
- // May be unset if not specified in CDS.
- EdsServiceName string `protobuf:"bytes,5,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
- // For type LOGICAL_DNS only.
- // DNS name to resolve in "host:port" form.
- DnsHostname string `protobuf:"bytes,6,opt,name=dns_hostname,json=dnsHostname,proto3" json:"dns_hostname,omitempty"`
- // The configuration for outlier_detection child policies
- // Within this message, the child_policy field will be ignored
- OutlierDetection *OutlierDetectionLoadBalancingConfig `protobuf:"bytes,8,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"`
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) Reset() {
- *x = XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[30]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) ProtoMessage() {}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[30]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism.ProtoReflect.Descriptor instead.
-func (*XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{10, 0}
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-// Deprecated: Do not use.
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetLrsLoadReportingServerName() *wrapperspb.StringValue {
- if x != nil {
- return x.LrsLoadReportingServerName
- }
- return nil
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetLrsLoadReportingServer() *XdsServer {
- if x != nil {
- return x.LrsLoadReportingServer
- }
- return nil
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetMaxConcurrentRequests() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MaxConcurrentRequests
- }
- return nil
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetType() XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type {
- if x != nil {
- return x.Type
- }
- return XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_UNKNOWN
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetEdsServiceName() string {
- if x != nil {
- return x.EdsServiceName
- }
- return ""
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetDnsHostname() string {
- if x != nil {
- return x.DnsHostname
- }
- return ""
-}
-
-func (x *XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism) GetOutlierDetection() *OutlierDetectionLoadBalancingConfig {
- if x != nil {
- return x.OutlierDetection
- }
- return nil
-}
-
-// Drop configuration.
-type XdsClusterImplLoadBalancingPolicyConfig_DropCategory struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Category string `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"`
- RequestsPerMillion uint32 `protobuf:"varint,2,opt,name=requests_per_million,json=requestsPerMillion,proto3" json:"requests_per_million,omitempty"`
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig_DropCategory) Reset() {
- *x = XdsClusterImplLoadBalancingPolicyConfig_DropCategory{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[31]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig_DropCategory) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*XdsClusterImplLoadBalancingPolicyConfig_DropCategory) ProtoMessage() {}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig_DropCategory) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[31]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use XdsClusterImplLoadBalancingPolicyConfig_DropCategory.ProtoReflect.Descriptor instead.
-func (*XdsClusterImplLoadBalancingPolicyConfig_DropCategory) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{11, 0}
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig_DropCategory) GetCategory() string {
- if x != nil {
- return x.Category
- }
- return ""
-}
-
-func (x *XdsClusterImplLoadBalancingPolicyConfig_DropCategory) GetRequestsPerMillion() uint32 {
- if x != nil {
- return x.RequestsPerMillion
- }
- return 0
-}
-
-// The locality for which this policy will report load. Required.
-type LrsLoadBalancingPolicyConfig_Locality struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
- Zone string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"`
- Subzone string `protobuf:"bytes,3,opt,name=subzone,proto3" json:"subzone,omitempty"`
-}
-
-func (x *LrsLoadBalancingPolicyConfig_Locality) Reset() {
- *x = LrsLoadBalancingPolicyConfig_Locality{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[32]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LrsLoadBalancingPolicyConfig_Locality) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LrsLoadBalancingPolicyConfig_Locality) ProtoMessage() {}
-
-func (x *LrsLoadBalancingPolicyConfig_Locality) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[32]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LrsLoadBalancingPolicyConfig_Locality.ProtoReflect.Descriptor instead.
-func (*LrsLoadBalancingPolicyConfig_Locality) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{14, 0}
-}
-
-func (x *LrsLoadBalancingPolicyConfig_Locality) GetRegion() string {
- if x != nil {
- return x.Region
- }
- return ""
-}
-
-func (x *LrsLoadBalancingPolicyConfig_Locality) GetZone() string {
- if x != nil {
- return x.Zone
- }
- return ""
-}
-
-func (x *LrsLoadBalancingPolicyConfig_Locality) GetSubzone() string {
- if x != nil {
- return x.Subzone
- }
- return ""
-}
-
-// If a RetryThrottlingPolicy is provided, gRPC will automatically throttle
-// retry attempts and hedged RPCs when the client's ratio of failures to
-// successes exceeds a threshold.
-//
-// For each server name, the gRPC client will maintain a token_count which is
-// initially set to max_tokens. Every outgoing RPC (regardless of service or
-// method invoked) will change token_count as follows:
-//
-// - Every failed RPC will decrement the token_count by 1.
-// - Every successful RPC will increment the token_count by token_ratio.
-//
-// If token_count is less than or equal to max_tokens / 2, then RPCs will not
-// be retried and hedged RPCs will not be sent.
-type ServiceConfig_RetryThrottlingPolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The number of tokens starts at max_tokens. The token_count will always be
- // between 0 and max_tokens.
- //
- // This field is required and must be greater than zero.
- MaxTokens uint32 `protobuf:"varint,1,opt,name=max_tokens,json=maxTokens,proto3" json:"max_tokens,omitempty"`
- // The amount of tokens to add on each successful RPC. Typically this will
- // be some number between 0 and 1, e.g., 0.1.
- //
- // This field is required and must be greater than zero. Up to 3 decimal
- // places are supported.
- TokenRatio float32 `protobuf:"fixed32,2,opt,name=token_ratio,json=tokenRatio,proto3" json:"token_ratio,omitempty"`
-}
-
-func (x *ServiceConfig_RetryThrottlingPolicy) Reset() {
- *x = ServiceConfig_RetryThrottlingPolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[33]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServiceConfig_RetryThrottlingPolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServiceConfig_RetryThrottlingPolicy) ProtoMessage() {}
-
-func (x *ServiceConfig_RetryThrottlingPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[33]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServiceConfig_RetryThrottlingPolicy.ProtoReflect.Descriptor instead.
-func (*ServiceConfig_RetryThrottlingPolicy) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{17, 0}
-}
-
-func (x *ServiceConfig_RetryThrottlingPolicy) GetMaxTokens() uint32 {
- if x != nil {
- return x.MaxTokens
- }
- return 0
-}
-
-func (x *ServiceConfig_RetryThrottlingPolicy) GetTokenRatio() float32 {
- if x != nil {
- return x.TokenRatio
- }
- return 0
-}
-
-type ServiceConfig_HealthCheckConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Service name to use in the health-checking request.
- ServiceName *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
-}
-
-func (x *ServiceConfig_HealthCheckConfig) Reset() {
- *x = ServiceConfig_HealthCheckConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[34]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServiceConfig_HealthCheckConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServiceConfig_HealthCheckConfig) ProtoMessage() {}
-
-func (x *ServiceConfig_HealthCheckConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_service_config_service_config_proto_msgTypes[34]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServiceConfig_HealthCheckConfig.ProtoReflect.Descriptor instead.
-func (*ServiceConfig_HealthCheckConfig) Descriptor() ([]byte, []int) {
- return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{17, 1}
-}
-
-func (x *ServiceConfig_HealthCheckConfig) GetServiceName() *wrapperspb.StringValue {
- if x != nil {
- return x.ServiceName
- }
- return nil
-}
-
-var File_grpc_service_config_service_config_proto protoreflect.FileDescriptor
-
-var file_grpc_service_config_service_config_proto_rawDesc = []byte{
- 0x0a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a,
- 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77,
- 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xde, 0x08, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x72, 0x65,
- 0x61, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x52, 0x65,
- 0x61, 0x64, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x19, 0x6d, 0x61, 0x78, 0x5f,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
- 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49,
- 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x74, 0x65,
- 0x73, 0x12, 0x59, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x0c,
- 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x12, 0x58, 0x0a, 0x0e, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d,
- 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, 0x64, 0x67,
- 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x65, 0x64,
- 0x67, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x38, 0x0a, 0x04, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06,
- 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65,
- 0x74, 0x68, 0x6f, 0x64, 0x1a, 0xa7, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65,
- 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41,
- 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69,
- 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x12, 0x3a, 0x0a, 0x0b, 0x6d,
- 0x61, 0x78, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x61, 0x78,
- 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x12, 0x2d, 0x0a, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x6f,
- 0x66, 0x66, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x02, 0x52, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4d, 0x75, 0x6c, 0x74,
- 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x16, 0x72, 0x65, 0x74, 0x72, 0x79, 0x61,
- 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73,
- 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x14, 0x72, 0x65, 0x74, 0x72, 0x79, 0x61,
- 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x1a, 0xb9,
- 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41, 0x74, 0x74, 0x65, 0x6d,
- 0x70, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x64,
- 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x44, 0x65,
- 0x6c, 0x61, 0x79, 0x12, 0x45, 0x0a, 0x16, 0x6e, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x74, 0x61, 0x6c,
- 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63,
- 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x13, 0x6e, 0x6f, 0x6e, 0x46, 0x61, 0x74, 0x61, 0x6c, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x72, 0x65,
- 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x72, 0x5f, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x11, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x46, 0x69, 0x72,
- 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x6e,
- 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8e, 0x0a, 0x0a,
- 0x23, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x47, 0x0a, 0x12, 0x62,
- 0x61, 0x73, 0x65, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6a, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x45,
- 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x14, 0x6d,
- 0x61, 0x78, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63,
- 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74,
- 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x45, 0x6a, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x80, 0x01, 0x0a, 0x15,
- 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6a, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74,
- 0x65, 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x73, 0x75, 0x63, 0x63, 0x65,
- 0x73, 0x73, 0x52, 0x61, 0x74, 0x65, 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x92,
- 0x01, 0x0a, 0x1b, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69,
- 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x42,
- 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46,
- 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65,
- 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
- 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x45, 0x6a, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x1a, 0xb3, 0x02, 0x0a, 0x13, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x61, 0x74, 0x65,
- 0x45, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x74, 0x64, 0x65,
- 0x76, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x73, 0x74,
- 0x64, 0x65, 0x76, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x53, 0x0a, 0x16, 0x65, 0x6e, 0x66,
- 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74,
- 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
- 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x41,
- 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x48, 0x6f, 0x73, 0x74,
- 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74,
- 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0xb4, 0x02, 0x0a, 0x19, 0x46, 0x61, 0x69, 0x6c, 0x75,
- 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x45, 0x6a, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64,
- 0x12, 0x53, 0x0a, 0x16, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
- 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15,
- 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65,
- 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d,
- 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55,
- 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x69,
- 0x6d, 0x75, 0x6d, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0xd3, 0x01,
- 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b,
- 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42,
- 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b,
- 0x63, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x53,
- 0x0a, 0x18, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61,
- 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x61, 0x6c, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65,
- 0x6f, 0x75, 0x74, 0x22, 0xae, 0x03, 0x0a, 0x21, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x08, 0x63, 0x68, 0x69,
- 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70,
- 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0a, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x8b, 0x01, 0x0a, 0x05,
- 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x1c, 0x69, 0x67, 0x6e, 0x6f, 0x72,
- 0x65, 0x5f, 0x72, 0x65, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x69,
- 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x1a, 0x79, 0x0a, 0x0d, 0x43, 0x68, 0x69,
- 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfe, 0x02, 0x0a, 0x27, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65,
- 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
- 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x12, 0x63, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x73, 0x1a, 0x6d, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
- 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64,
- 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e,
- 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x7f, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x57, 0x65, 0x69, 0x67,
- 0x68, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf2, 0x02, 0x0a, 0x2a, 0x58, 0x64, 0x73, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x4c, 0x6f, 0x61, 0x64, 0x42,
- 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x4c, 0x6f,
- 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x1a,
- 0x54, 0x0a, 0x05, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c,
- 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69,
- 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x82, 0x01, 0x0a, 0x0d, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72,
- 0x65, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5b, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58,
- 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
- 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25, 0x0a, 0x09, 0x43, 0x64,
- 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x22, 0xa1, 0x02, 0x0a, 0x09, 0x58, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12,
- 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x12,
- 0x57, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72,
- 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x59, 0x0a, 0x12, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73,
- 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9d, 0x07, 0x0a, 0x2b, 0x58, 0x64, 0x73, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x86, 0x01, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76,
- 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x61,
- 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
- 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x52, 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f,
- 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x73, 0x12, 0x4c,
- 0x0a, 0x0d, 0x78, 0x64, 0x73, 0x5f, 0x6c, 0x62, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x0b, 0x78, 0x64, 0x73, 0x4c, 0x62, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x96, 0x05, 0x0a,
- 0x12, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e,
- 0x69, 0x73, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x64, 0x0a,
- 0x1e, 0x6c, 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1a, 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x19, 0x6c, 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
- 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x16, 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x54,
- 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
- 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x6d,
- 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x73, 0x12, 0x6c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x58, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x61, 0x64, 0x42,
- 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x65,
- 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x64, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x64,
- 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c,
- 0x64, 0x6e, 0x73, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6e, 0x73, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x65, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2d, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b,
- 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x45,
- 0x44, 0x53, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f,
- 0x44, 0x4e, 0x53, 0x10, 0x02, 0x22, 0xa3, 0x05, 0x0a, 0x27, 0x58, 0x64, 0x73, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x49, 0x6d, 0x70, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x65,
- 0x64, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x64, 0x0a, 0x1e, 0x6c, 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52,
- 0x1a, 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e,
- 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x19, 0x6c,
- 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e,
- 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x16,
- 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f,
- 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72,
- 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x72, 0x0a, 0x0f,
- 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73, 0x43,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6d, 0x70, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
- 0x52, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73,
- 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61,
- 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x5c, 0x0a,
- 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a,
- 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x6f,
- 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x73, 0x50, 0x65, 0x72, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x22, 0x88, 0x03, 0x0a, 0x1c,
- 0x45, 0x64, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x64, 0x73, 0x5f, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0e, 0x65, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x60, 0x0a, 0x1e, 0x6c, 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
- 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x17, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x70,
- 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x04, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x6c,
- 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x60, 0x0a, 0x17, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x15, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x65, 0x0a, 0x1b, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61,
- 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x6e,
- 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x69,
- 0x6e, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78,
- 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xa6, 0x03,
- 0x0a, 0x1c, 0x4c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69,
- 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21,
- 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x64, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x64, 0x73,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x1e, 0x6c,
- 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e,
- 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x1a, 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f,
- 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x56, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42,
- 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6c,
- 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64,
- 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e,
- 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x50, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79,
- 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x73, 0x75, 0x62, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
- 0x75, 0x62, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0xe0, 0x02, 0x0a, 0x09, 0x58, 0x64, 0x73, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52,
- 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a,
- 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63,
- 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x51, 0x0a, 0x0f, 0x66, 0x61,
- 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x66,
- 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x0a,
- 0x10, 0x65, 0x64, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x1e, 0x6c, 0x72, 0x73, 0x5f, 0x6c,
- 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x6c,
- 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x86, 0x0c, 0x0a, 0x13, 0x4c, 0x6f,
- 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x69, 0x63, 0x6b, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x69, 0x63, 0x6b,
- 0x46, 0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x70,
- 0x69, 0x63, 0x6b, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x72, 0x6f, 0x75,
- 0x6e, 0x64, 0x5f, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72,
- 0x6f, 0x62, 0x69, 0x6e, 0x12, 0x68, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f,
- 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x11, 0x6f, 0x75, 0x74,
- 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b,
- 0x0a, 0x06, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x48, 0x00, 0x52, 0x06, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x12, 0x6e, 0x0a, 0x15, 0x70,
- 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65,
- 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x65,
- 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x82, 0x01, 0x0a, 0x1c,
- 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
- 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65,
- 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
- 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x48, 0x00, 0x52, 0x1c, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72,
- 0x67, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c,
- 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x78, 0x64, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d,
- 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x58, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x20,
- 0x78, 0x64, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c,
- 0x12, 0x4c, 0x0a, 0x10, 0x63, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65,
- 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x43, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x63, 0x64,
- 0x73, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x90,
- 0x01, 0x0a, 0x21, 0x78, 0x64, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72,
- 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65,
- 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x58, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x6c,
- 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x21,
- 0x78, 0x64, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f,
- 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61,
- 0x6c, 0x12, 0x84, 0x01, 0x0a, 0x1d, 0x78, 0x64, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e,
- 0x74, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x58, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6d, 0x70, 0x6c, 0x4c, 0x6f,
- 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x1d, 0x78, 0x64, 0x73, 0x5f, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x65,
- 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x6a, 0x0a, 0x16, 0x72, 0x69, 0x6e, 0x67,
- 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74,
- 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52,
- 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
- 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x16, 0x72, 0x69,
- 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65,
- 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x63, 0x0a, 0x10, 0x6c, 0x72, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x65,
- 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x6c, 0x72, 0x73, 0x5f, 0x65, 0x78, 0x70,
- 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x63, 0x0a, 0x10, 0x65, 0x64, 0x73,
- 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x64, 0x73, 0x4c, 0x6f, 0x61,
- 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x65, 0x64,
- 0x73, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x36,
- 0x0a, 0x03, 0x78, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x58, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x02, 0x18, 0x01, 0x48,
- 0x00, 0x52, 0x03, 0x78, 0x64, 0x73, 0x12, 0x50, 0x0a, 0x10, 0x78, 0x64, 0x73, 0x5f, 0x65, 0x78,
- 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x78, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x65,
- 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x22, 0xd8, 0x05, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6e, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52,
- 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x5c, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x6c,
- 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6d, 0x65,
- 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x10, 0x72, 0x65,
- 0x74, 0x72, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x54, 0x68,
- 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f,
- 0x72, 0x65, 0x74, 0x72, 0x79, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x12,
- 0x64, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x52, 0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x57, 0x0a, 0x15, 0x52, 0x65, 0x74, 0x72, 0x79, 0x54, 0x68,
- 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1d,
- 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x1f, 0x0a,
- 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x1a, 0x54,
- 0x0a, 0x11, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69,
- 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 0x55,
- 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b,
- 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x01, 0x42, 0x5e, 0x0a,
- 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x12, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69,
- 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d,
- 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_service_config_service_config_proto_rawDescOnce sync.Once
- file_grpc_service_config_service_config_proto_rawDescData = file_grpc_service_config_service_config_proto_rawDesc
-)
-
-func file_grpc_service_config_service_config_proto_rawDescGZIP() []byte {
- file_grpc_service_config_service_config_proto_rawDescOnce.Do(func() {
- file_grpc_service_config_service_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_service_config_service_config_proto_rawDescData)
- })
- return file_grpc_service_config_service_config_proto_rawDescData
-}
-
-var file_grpc_service_config_service_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_grpc_service_config_service_config_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
-var file_grpc_service_config_service_config_proto_goTypes = []interface{}{
- (XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism_Type)(0), // 0: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism.Type
- (ServiceConfig_LoadBalancingPolicy)(0), // 1: grpc.service_config.ServiceConfig.LoadBalancingPolicy
- (*MethodConfig)(nil), // 2: grpc.service_config.MethodConfig
- (*PickFirstConfig)(nil), // 3: grpc.service_config.PickFirstConfig
- (*RoundRobinConfig)(nil), // 4: grpc.service_config.RoundRobinConfig
- (*OutlierDetectionLoadBalancingConfig)(nil), // 5: grpc.service_config.OutlierDetectionLoadBalancingConfig
- (*GrpcLbConfig)(nil), // 6: grpc.service_config.GrpcLbConfig
- (*PriorityLoadBalancingPolicyConfig)(nil), // 7: grpc.service_config.PriorityLoadBalancingPolicyConfig
- (*WeightedTargetLoadBalancingPolicyConfig)(nil), // 8: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig
- (*XdsClusterManagerLoadBalancingPolicyConfig)(nil), // 9: grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig
- (*CdsConfig)(nil), // 10: grpc.service_config.CdsConfig
- (*XdsServer)(nil), // 11: grpc.service_config.XdsServer
- (*XdsClusterResolverLoadBalancingPolicyConfig)(nil), // 12: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig
- (*XdsClusterImplLoadBalancingPolicyConfig)(nil), // 13: grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig
- (*EdsLoadBalancingPolicyConfig)(nil), // 14: grpc.service_config.EdsLoadBalancingPolicyConfig
- (*RingHashLoadBalancingConfig)(nil), // 15: grpc.service_config.RingHashLoadBalancingConfig
- (*LrsLoadBalancingPolicyConfig)(nil), // 16: grpc.service_config.LrsLoadBalancingPolicyConfig
- (*XdsConfig)(nil), // 17: grpc.service_config.XdsConfig
- (*LoadBalancingConfig)(nil), // 18: grpc.service_config.LoadBalancingConfig
- (*ServiceConfig)(nil), // 19: grpc.service_config.ServiceConfig
- (*MethodConfig_Name)(nil), // 20: grpc.service_config.MethodConfig.Name
- (*MethodConfig_RetryPolicy)(nil), // 21: grpc.service_config.MethodConfig.RetryPolicy
- (*MethodConfig_HedgingPolicy)(nil), // 22: grpc.service_config.MethodConfig.HedgingPolicy
- (*OutlierDetectionLoadBalancingConfig_SuccessRateEjection)(nil), // 23: grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection
- (*OutlierDetectionLoadBalancingConfig_FailurePercentageEjection)(nil), // 24: grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection
- (*PriorityLoadBalancingPolicyConfig_Child)(nil), // 25: grpc.service_config.PriorityLoadBalancingPolicyConfig.Child
- nil, // 26: grpc.service_config.PriorityLoadBalancingPolicyConfig.ChildrenEntry
- (*WeightedTargetLoadBalancingPolicyConfig_Target)(nil), // 27: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target
- nil, // 28: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.TargetsEntry
- (*XdsClusterManagerLoadBalancingPolicyConfig_Child)(nil), // 29: grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.Child
- nil, // 30: grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.ChildrenEntry
- (*XdsServer_ChannelCredentials)(nil), // 31: grpc.service_config.XdsServer.ChannelCredentials
- (*XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism)(nil), // 32: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism
- (*XdsClusterImplLoadBalancingPolicyConfig_DropCategory)(nil), // 33: grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.DropCategory
- (*LrsLoadBalancingPolicyConfig_Locality)(nil), // 34: grpc.service_config.LrsLoadBalancingPolicyConfig.Locality
- (*ServiceConfig_RetryThrottlingPolicy)(nil), // 35: grpc.service_config.ServiceConfig.RetryThrottlingPolicy
- (*ServiceConfig_HealthCheckConfig)(nil), // 36: grpc.service_config.ServiceConfig.HealthCheckConfig
- (*wrapperspb.BoolValue)(nil), // 37: google.protobuf.BoolValue
- (*durationpb.Duration)(nil), // 38: google.protobuf.Duration
- (*wrapperspb.UInt32Value)(nil), // 39: google.protobuf.UInt32Value
- (*structpb.Value)(nil), // 40: google.protobuf.Value
- (*wrapperspb.StringValue)(nil), // 41: google.protobuf.StringValue
- (code.Code)(0), // 42: google.rpc.Code
- (*structpb.Struct)(nil), // 43: google.protobuf.Struct
-}
-var file_grpc_service_config_service_config_proto_depIdxs = []int32{
- 20, // 0: grpc.service_config.MethodConfig.name:type_name -> grpc.service_config.MethodConfig.Name
- 37, // 1: grpc.service_config.MethodConfig.wait_for_ready:type_name -> google.protobuf.BoolValue
- 38, // 2: grpc.service_config.MethodConfig.timeout:type_name -> google.protobuf.Duration
- 39, // 3: grpc.service_config.MethodConfig.max_request_message_bytes:type_name -> google.protobuf.UInt32Value
- 39, // 4: grpc.service_config.MethodConfig.max_response_message_bytes:type_name -> google.protobuf.UInt32Value
- 21, // 5: grpc.service_config.MethodConfig.retry_policy:type_name -> grpc.service_config.MethodConfig.RetryPolicy
- 22, // 6: grpc.service_config.MethodConfig.hedging_policy:type_name -> grpc.service_config.MethodConfig.HedgingPolicy
- 38, // 7: grpc.service_config.OutlierDetectionLoadBalancingConfig.interval:type_name -> google.protobuf.Duration
- 38, // 8: grpc.service_config.OutlierDetectionLoadBalancingConfig.base_ejection_time:type_name -> google.protobuf.Duration
- 38, // 9: grpc.service_config.OutlierDetectionLoadBalancingConfig.max_ejection_time:type_name -> google.protobuf.Duration
- 39, // 10: grpc.service_config.OutlierDetectionLoadBalancingConfig.max_ejection_percent:type_name -> google.protobuf.UInt32Value
- 23, // 11: grpc.service_config.OutlierDetectionLoadBalancingConfig.success_rate_ejection:type_name -> grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection
- 24, // 12: grpc.service_config.OutlierDetectionLoadBalancingConfig.failure_percentage_ejection:type_name -> grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection
- 18, // 13: grpc.service_config.OutlierDetectionLoadBalancingConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 18, // 14: grpc.service_config.GrpcLbConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 38, // 15: grpc.service_config.GrpcLbConfig.initial_fallback_timeout:type_name -> google.protobuf.Duration
- 26, // 16: grpc.service_config.PriorityLoadBalancingPolicyConfig.children:type_name -> grpc.service_config.PriorityLoadBalancingPolicyConfig.ChildrenEntry
- 28, // 17: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.targets:type_name -> grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.TargetsEntry
- 30, // 18: grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.children:type_name -> grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.ChildrenEntry
- 31, // 19: grpc.service_config.XdsServer.channel_creds:type_name -> grpc.service_config.XdsServer.ChannelCredentials
- 40, // 20: grpc.service_config.XdsServer.server_features:type_name -> google.protobuf.Value
- 32, // 21: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.discovery_mechanisms:type_name -> grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism
- 18, // 22: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.xds_lb_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 41, // 23: grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.lrs_load_reporting_server_name:type_name -> google.protobuf.StringValue
- 11, // 24: grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.lrs_load_reporting_server:type_name -> grpc.service_config.XdsServer
- 39, // 25: grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.max_concurrent_requests:type_name -> google.protobuf.UInt32Value
- 33, // 26: grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.drop_categories:type_name -> grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.DropCategory
- 18, // 27: grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 41, // 28: grpc.service_config.EdsLoadBalancingPolicyConfig.lrs_load_reporting_server_name:type_name -> google.protobuf.StringValue
- 18, // 29: grpc.service_config.EdsLoadBalancingPolicyConfig.locality_picking_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 18, // 30: grpc.service_config.EdsLoadBalancingPolicyConfig.endpoint_picking_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 34, // 31: grpc.service_config.LrsLoadBalancingPolicyConfig.locality:type_name -> grpc.service_config.LrsLoadBalancingPolicyConfig.Locality
- 18, // 32: grpc.service_config.LrsLoadBalancingPolicyConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 18, // 33: grpc.service_config.XdsConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 18, // 34: grpc.service_config.XdsConfig.fallback_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 41, // 35: grpc.service_config.XdsConfig.lrs_load_reporting_server_name:type_name -> google.protobuf.StringValue
- 3, // 36: grpc.service_config.LoadBalancingConfig.pick_first:type_name -> grpc.service_config.PickFirstConfig
- 4, // 37: grpc.service_config.LoadBalancingConfig.round_robin:type_name -> grpc.service_config.RoundRobinConfig
- 5, // 38: grpc.service_config.LoadBalancingConfig.outlier_detection:type_name -> grpc.service_config.OutlierDetectionLoadBalancingConfig
- 6, // 39: grpc.service_config.LoadBalancingConfig.grpclb:type_name -> grpc.service_config.GrpcLbConfig
- 7, // 40: grpc.service_config.LoadBalancingConfig.priority_experimental:type_name -> grpc.service_config.PriorityLoadBalancingPolicyConfig
- 8, // 41: grpc.service_config.LoadBalancingConfig.weighted_target_experimental:type_name -> grpc.service_config.WeightedTargetLoadBalancingPolicyConfig
- 9, // 42: grpc.service_config.LoadBalancingConfig.xds_cluster_manager_experimental:type_name -> grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig
- 10, // 43: grpc.service_config.LoadBalancingConfig.cds_experimental:type_name -> grpc.service_config.CdsConfig
- 12, // 44: grpc.service_config.LoadBalancingConfig.xds_cluster_resolver_experimental:type_name -> grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig
- 13, // 45: grpc.service_config.LoadBalancingConfig.xds_cluster_impl_experimental:type_name -> grpc.service_config.XdsClusterImplLoadBalancingPolicyConfig
- 15, // 46: grpc.service_config.LoadBalancingConfig.ring_hash_experimental:type_name -> grpc.service_config.RingHashLoadBalancingConfig
- 16, // 47: grpc.service_config.LoadBalancingConfig.lrs_experimental:type_name -> grpc.service_config.LrsLoadBalancingPolicyConfig
- 14, // 48: grpc.service_config.LoadBalancingConfig.eds_experimental:type_name -> grpc.service_config.EdsLoadBalancingPolicyConfig
- 17, // 49: grpc.service_config.LoadBalancingConfig.xds:type_name -> grpc.service_config.XdsConfig
- 17, // 50: grpc.service_config.LoadBalancingConfig.xds_experimental:type_name -> grpc.service_config.XdsConfig
- 1, // 51: grpc.service_config.ServiceConfig.load_balancing_policy:type_name -> grpc.service_config.ServiceConfig.LoadBalancingPolicy
- 18, // 52: grpc.service_config.ServiceConfig.load_balancing_config:type_name -> grpc.service_config.LoadBalancingConfig
- 2, // 53: grpc.service_config.ServiceConfig.method_config:type_name -> grpc.service_config.MethodConfig
- 35, // 54: grpc.service_config.ServiceConfig.retry_throttling:type_name -> grpc.service_config.ServiceConfig.RetryThrottlingPolicy
- 36, // 55: grpc.service_config.ServiceConfig.health_check_config:type_name -> grpc.service_config.ServiceConfig.HealthCheckConfig
- 38, // 56: grpc.service_config.MethodConfig.RetryPolicy.initial_backoff:type_name -> google.protobuf.Duration
- 38, // 57: grpc.service_config.MethodConfig.RetryPolicy.max_backoff:type_name -> google.protobuf.Duration
- 42, // 58: grpc.service_config.MethodConfig.RetryPolicy.retryable_status_codes:type_name -> google.rpc.Code
- 38, // 59: grpc.service_config.MethodConfig.HedgingPolicy.hedging_delay:type_name -> google.protobuf.Duration
- 42, // 60: grpc.service_config.MethodConfig.HedgingPolicy.non_fatal_status_codes:type_name -> google.rpc.Code
- 39, // 61: grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection.stdev_factor:type_name -> google.protobuf.UInt32Value
- 39, // 62: grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection.enforcement_percentage:type_name -> google.protobuf.UInt32Value
- 39, // 63: grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection.minimum_hosts:type_name -> google.protobuf.UInt32Value
- 39, // 64: grpc.service_config.OutlierDetectionLoadBalancingConfig.SuccessRateEjection.request_volume:type_name -> google.protobuf.UInt32Value
- 39, // 65: grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection.threshold:type_name -> google.protobuf.UInt32Value
- 39, // 66: grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection.enforcement_percentage:type_name -> google.protobuf.UInt32Value
- 39, // 67: grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection.minimum_hosts:type_name -> google.protobuf.UInt32Value
- 39, // 68: grpc.service_config.OutlierDetectionLoadBalancingConfig.FailurePercentageEjection.request_volume:type_name -> google.protobuf.UInt32Value
- 18, // 69: grpc.service_config.PriorityLoadBalancingPolicyConfig.Child.config:type_name -> grpc.service_config.LoadBalancingConfig
- 25, // 70: grpc.service_config.PriorityLoadBalancingPolicyConfig.ChildrenEntry.value:type_name -> grpc.service_config.PriorityLoadBalancingPolicyConfig.Child
- 18, // 71: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 27, // 72: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.TargetsEntry.value:type_name -> grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target
- 18, // 73: grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.Child.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
- 29, // 74: grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.ChildrenEntry.value:type_name -> grpc.service_config.XdsClusterManagerLoadBalancingPolicyConfig.Child
- 43, // 75: grpc.service_config.XdsServer.ChannelCredentials.config:type_name -> google.protobuf.Struct
- 41, // 76: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism.lrs_load_reporting_server_name:type_name -> google.protobuf.StringValue
- 11, // 77: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism.lrs_load_reporting_server:type_name -> grpc.service_config.XdsServer
- 39, // 78: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism.max_concurrent_requests:type_name -> google.protobuf.UInt32Value
- 0, // 79: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism.type:type_name -> grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism.Type
- 5, // 80: grpc.service_config.XdsClusterResolverLoadBalancingPolicyConfig.DiscoveryMechanism.outlier_detection:type_name -> grpc.service_config.OutlierDetectionLoadBalancingConfig
- 41, // 81: grpc.service_config.ServiceConfig.HealthCheckConfig.service_name:type_name -> google.protobuf.StringValue
- 82, // [82:82] is the sub-list for method output_type
- 82, // [82:82] is the sub-list for method input_type
- 82, // [82:82] is the sub-list for extension type_name
- 82, // [82:82] is the sub-list for extension extendee
- 0, // [0:82] is the sub-list for field type_name
-}
-
-func init() { file_grpc_service_config_service_config_proto_init() }
-func file_grpc_service_config_service_config_proto_init() {
- if File_grpc_service_config_service_config_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_service_config_service_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MethodConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PickFirstConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RoundRobinConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OutlierDetectionLoadBalancingConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GrpcLbConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PriorityLoadBalancingPolicyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WeightedTargetLoadBalancingPolicyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsClusterManagerLoadBalancingPolicyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CdsConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsServer); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsClusterResolverLoadBalancingPolicyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsClusterImplLoadBalancingPolicyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EdsLoadBalancingPolicyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RingHashLoadBalancingConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LrsLoadBalancingPolicyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancingConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServiceConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MethodConfig_Name); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MethodConfig_RetryPolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MethodConfig_HedgingPolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OutlierDetectionLoadBalancingConfig_SuccessRateEjection); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OutlierDetectionLoadBalancingConfig_FailurePercentageEjection); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PriorityLoadBalancingPolicyConfig_Child); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WeightedTargetLoadBalancingPolicyConfig_Target); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsClusterManagerLoadBalancingPolicyConfig_Child); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsServer_ChannelCredentials); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsClusterResolverLoadBalancingPolicyConfig_DiscoveryMechanism); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*XdsClusterImplLoadBalancingPolicyConfig_DropCategory); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LrsLoadBalancingPolicyConfig_Locality); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServiceConfig_RetryThrottlingPolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServiceConfig_HealthCheckConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_service_config_service_config_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*MethodConfig_RetryPolicy_)(nil),
- (*MethodConfig_HedgingPolicy_)(nil),
- }
- file_grpc_service_config_service_config_proto_msgTypes[16].OneofWrappers = []interface{}{
- (*LoadBalancingConfig_PickFirst)(nil),
- (*LoadBalancingConfig_RoundRobin)(nil),
- (*LoadBalancingConfig_OutlierDetection)(nil),
- (*LoadBalancingConfig_Grpclb)(nil),
- (*LoadBalancingConfig_PriorityExperimental)(nil),
- (*LoadBalancingConfig_WeightedTargetExperimental)(nil),
- (*LoadBalancingConfig_XdsClusterManagerExperimental)(nil),
- (*LoadBalancingConfig_CdsExperimental)(nil),
- (*LoadBalancingConfig_XdsClusterResolverExperimental)(nil),
- (*LoadBalancingConfig_XdsClusterImplExperimental)(nil),
- (*LoadBalancingConfig_RingHashExperimental)(nil),
- (*LoadBalancingConfig_LrsExperimental)(nil),
- (*LoadBalancingConfig_EdsExperimental)(nil),
- (*LoadBalancingConfig_Xds)(nil),
- (*LoadBalancingConfig_XdsExperimental)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_service_config_service_config_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 35,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_service_config_service_config_proto_goTypes,
- DependencyIndexes: file_grpc_service_config_service_config_proto_depIdxs,
- EnumInfos: file_grpc_service_config_service_config_proto_enumTypes,
- MessageInfos: file_grpc_service_config_service_config_proto_msgTypes,
- }.Build()
- File_grpc_service_config_service_config_proto = out.File
- file_grpc_service_config_service_config_proto_rawDesc = nil
- file_grpc_service_config_service_config_proto_goTypes = nil
- file_grpc_service_config_service_config_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/benchmark_service.pb.go b/gen/proto/grpc/testing/benchmark_service.pb.go
deleted file mode 100644
index 97ff795..0000000
--- a/gen/proto/grpc/testing/benchmark_service.pb.go
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/benchmark_service.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-var File_grpc_testing_benchmark_service_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_benchmark_service_proto_rawDesc = []byte{
- 0x0a, 0x24, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x62,
- 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x1b, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x32, 0xa6, 0x03, 0x0a, 0x10, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x53,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x43,
- 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
- 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e,
- 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x12,
- 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53,
- 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70,
- 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x52,
- 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x43,
- 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x28, 0x01, 0x12, 0x52, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x46,
- 0x72, 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x74, 0x68, 0x57, 0x61, 0x79, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x5b, 0x0a, 0x0f, 0x69, 0x6f,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x42,
- 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d,
- 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_grpc_testing_benchmark_service_proto_goTypes = []interface{}{
- (*SimpleRequest)(nil), // 0: grpc.testing.SimpleRequest
- (*SimpleResponse)(nil), // 1: grpc.testing.SimpleResponse
-}
-var file_grpc_testing_benchmark_service_proto_depIdxs = []int32{
- 0, // 0: grpc.testing.BenchmarkService.UnaryCall:input_type -> grpc.testing.SimpleRequest
- 0, // 1: grpc.testing.BenchmarkService.StreamingCall:input_type -> grpc.testing.SimpleRequest
- 0, // 2: grpc.testing.BenchmarkService.StreamingFromClient:input_type -> grpc.testing.SimpleRequest
- 0, // 3: grpc.testing.BenchmarkService.StreamingFromServer:input_type -> grpc.testing.SimpleRequest
- 0, // 4: grpc.testing.BenchmarkService.StreamingBothWays:input_type -> grpc.testing.SimpleRequest
- 1, // 5: grpc.testing.BenchmarkService.UnaryCall:output_type -> grpc.testing.SimpleResponse
- 1, // 6: grpc.testing.BenchmarkService.StreamingCall:output_type -> grpc.testing.SimpleResponse
- 1, // 7: grpc.testing.BenchmarkService.StreamingFromClient:output_type -> grpc.testing.SimpleResponse
- 1, // 8: grpc.testing.BenchmarkService.StreamingFromServer:output_type -> grpc.testing.SimpleResponse
- 1, // 9: grpc.testing.BenchmarkService.StreamingBothWays:output_type -> grpc.testing.SimpleResponse
- 5, // [5:10] is the sub-list for method output_type
- 0, // [0:5] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_benchmark_service_proto_init() }
-func file_grpc_testing_benchmark_service_proto_init() {
- if File_grpc_testing_benchmark_service_proto != nil {
- return
- }
- file_grpc_testing_messages_proto_init()
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_benchmark_service_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 0,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_testing_benchmark_service_proto_goTypes,
- DependencyIndexes: file_grpc_testing_benchmark_service_proto_depIdxs,
- }.Build()
- File_grpc_testing_benchmark_service_proto = out.File
- file_grpc_testing_benchmark_service_proto_rawDesc = nil
- file_grpc_testing_benchmark_service_proto_goTypes = nil
- file_grpc_testing_benchmark_service_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/control.pb.go b/gen/proto/grpc/testing/control.pb.go
deleted file mode 100644
index f4ccf0b..0000000
--- a/gen/proto/grpc/testing/control.pb.go
+++ /dev/null
@@ -1,2461 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/control.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type ClientType int32
-
-const (
- // Many languages support a basic distinction between using
- // sync or async client, and this allows the specification
- ClientType_SYNC_CLIENT ClientType = 0
- ClientType_ASYNC_CLIENT ClientType = 1
- ClientType_OTHER_CLIENT ClientType = 2 // used for some language-specific variants
- ClientType_CALLBACK_CLIENT ClientType = 3
-)
-
-// Enum value maps for ClientType.
-var (
- ClientType_name = map[int32]string{
- 0: "SYNC_CLIENT",
- 1: "ASYNC_CLIENT",
- 2: "OTHER_CLIENT",
- 3: "CALLBACK_CLIENT",
- }
- ClientType_value = map[string]int32{
- "SYNC_CLIENT": 0,
- "ASYNC_CLIENT": 1,
- "OTHER_CLIENT": 2,
- "CALLBACK_CLIENT": 3,
- }
-)
-
-func (x ClientType) Enum() *ClientType {
- p := new(ClientType)
- *p = x
- return p
-}
-
-func (x ClientType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ClientType) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_testing_control_proto_enumTypes[0].Descriptor()
-}
-
-func (ClientType) Type() protoreflect.EnumType {
- return &file_grpc_testing_control_proto_enumTypes[0]
-}
-
-func (x ClientType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ClientType.Descriptor instead.
-func (ClientType) EnumDescriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{0}
-}
-
-type ServerType int32
-
-const (
- ServerType_SYNC_SERVER ServerType = 0
- ServerType_ASYNC_SERVER ServerType = 1
- ServerType_ASYNC_GENERIC_SERVER ServerType = 2
- ServerType_OTHER_SERVER ServerType = 3 // used for some language-specific variants
- ServerType_CALLBACK_SERVER ServerType = 4
-)
-
-// Enum value maps for ServerType.
-var (
- ServerType_name = map[int32]string{
- 0: "SYNC_SERVER",
- 1: "ASYNC_SERVER",
- 2: "ASYNC_GENERIC_SERVER",
- 3: "OTHER_SERVER",
- 4: "CALLBACK_SERVER",
- }
- ServerType_value = map[string]int32{
- "SYNC_SERVER": 0,
- "ASYNC_SERVER": 1,
- "ASYNC_GENERIC_SERVER": 2,
- "OTHER_SERVER": 3,
- "CALLBACK_SERVER": 4,
- }
-)
-
-func (x ServerType) Enum() *ServerType {
- p := new(ServerType)
- *p = x
- return p
-}
-
-func (x ServerType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ServerType) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_testing_control_proto_enumTypes[1].Descriptor()
-}
-
-func (ServerType) Type() protoreflect.EnumType {
- return &file_grpc_testing_control_proto_enumTypes[1]
-}
-
-func (x ServerType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ServerType.Descriptor instead.
-func (ServerType) EnumDescriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{1}
-}
-
-type RpcType int32
-
-const (
- RpcType_UNARY RpcType = 0
- RpcType_STREAMING RpcType = 1
- RpcType_STREAMING_FROM_CLIENT RpcType = 2
- RpcType_STREAMING_FROM_SERVER RpcType = 3
- RpcType_STREAMING_BOTH_WAYS RpcType = 4
-)
-
-// Enum value maps for RpcType.
-var (
- RpcType_name = map[int32]string{
- 0: "UNARY",
- 1: "STREAMING",
- 2: "STREAMING_FROM_CLIENT",
- 3: "STREAMING_FROM_SERVER",
- 4: "STREAMING_BOTH_WAYS",
- }
- RpcType_value = map[string]int32{
- "UNARY": 0,
- "STREAMING": 1,
- "STREAMING_FROM_CLIENT": 2,
- "STREAMING_FROM_SERVER": 3,
- "STREAMING_BOTH_WAYS": 4,
- }
-)
-
-func (x RpcType) Enum() *RpcType {
- p := new(RpcType)
- *p = x
- return p
-}
-
-func (x RpcType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (RpcType) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_testing_control_proto_enumTypes[2].Descriptor()
-}
-
-func (RpcType) Type() protoreflect.EnumType {
- return &file_grpc_testing_control_proto_enumTypes[2]
-}
-
-func (x RpcType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use RpcType.Descriptor instead.
-func (RpcType) EnumDescriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{2}
-}
-
-// Parameters of poisson process distribution, which is a good representation
-// of activity coming in from independent identical stationary sources.
-type PoissonParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
- OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
-}
-
-func (x *PoissonParams) Reset() {
- *x = PoissonParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PoissonParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PoissonParams) ProtoMessage() {}
-
-func (x *PoissonParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PoissonParams.ProtoReflect.Descriptor instead.
-func (*PoissonParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *PoissonParams) GetOfferedLoad() float64 {
- if x != nil {
- return x.OfferedLoad
- }
- return 0
-}
-
-// Once an RPC finishes, immediately start a new one.
-// No configuration parameters needed.
-type ClosedLoopParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ClosedLoopParams) Reset() {
- *x = ClosedLoopParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClosedLoopParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClosedLoopParams) ProtoMessage() {}
-
-func (x *ClosedLoopParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClosedLoopParams.ProtoReflect.Descriptor instead.
-func (*ClosedLoopParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{1}
-}
-
-type LoadParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Load:
- // *LoadParams_ClosedLoop
- // *LoadParams_Poisson
- Load isLoadParams_Load `protobuf_oneof:"load"`
-}
-
-func (x *LoadParams) Reset() {
- *x = LoadParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadParams) ProtoMessage() {}
-
-func (x *LoadParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadParams.ProtoReflect.Descriptor instead.
-func (*LoadParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{2}
-}
-
-func (m *LoadParams) GetLoad() isLoadParams_Load {
- if m != nil {
- return m.Load
- }
- return nil
-}
-
-func (x *LoadParams) GetClosedLoop() *ClosedLoopParams {
- if x, ok := x.GetLoad().(*LoadParams_ClosedLoop); ok {
- return x.ClosedLoop
- }
- return nil
-}
-
-func (x *LoadParams) GetPoisson() *PoissonParams {
- if x, ok := x.GetLoad().(*LoadParams_Poisson); ok {
- return x.Poisson
- }
- return nil
-}
-
-type isLoadParams_Load interface {
- isLoadParams_Load()
-}
-
-type LoadParams_ClosedLoop struct {
- ClosedLoop *ClosedLoopParams `protobuf:"bytes,1,opt,name=closed_loop,json=closedLoop,proto3,oneof"`
-}
-
-type LoadParams_Poisson struct {
- Poisson *PoissonParams `protobuf:"bytes,2,opt,name=poisson,proto3,oneof"`
-}
-
-func (*LoadParams_ClosedLoop) isLoadParams_Load() {}
-
-func (*LoadParams_Poisson) isLoadParams_Load() {}
-
-// presence of SecurityParams implies use of TLS
-type SecurityParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- UseTestCa bool `protobuf:"varint,1,opt,name=use_test_ca,json=useTestCa,proto3" json:"use_test_ca,omitempty"`
- ServerHostOverride string `protobuf:"bytes,2,opt,name=server_host_override,json=serverHostOverride,proto3" json:"server_host_override,omitempty"`
- CredType string `protobuf:"bytes,3,opt,name=cred_type,json=credType,proto3" json:"cred_type,omitempty"`
-}
-
-func (x *SecurityParams) Reset() {
- *x = SecurityParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SecurityParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SecurityParams) ProtoMessage() {}
-
-func (x *SecurityParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SecurityParams.ProtoReflect.Descriptor instead.
-func (*SecurityParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *SecurityParams) GetUseTestCa() bool {
- if x != nil {
- return x.UseTestCa
- }
- return false
-}
-
-func (x *SecurityParams) GetServerHostOverride() string {
- if x != nil {
- return x.ServerHostOverride
- }
- return ""
-}
-
-func (x *SecurityParams) GetCredType() string {
- if x != nil {
- return x.CredType
- }
- return ""
-}
-
-type ChannelArg struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Types that are assignable to Value:
- // *ChannelArg_StrValue
- // *ChannelArg_IntValue
- Value isChannelArg_Value `protobuf_oneof:"value"`
-}
-
-func (x *ChannelArg) Reset() {
- *x = ChannelArg{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChannelArg) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChannelArg) ProtoMessage() {}
-
-func (x *ChannelArg) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChannelArg.ProtoReflect.Descriptor instead.
-func (*ChannelArg) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *ChannelArg) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (m *ChannelArg) GetValue() isChannelArg_Value {
- if m != nil {
- return m.Value
- }
- return nil
-}
-
-func (x *ChannelArg) GetStrValue() string {
- if x, ok := x.GetValue().(*ChannelArg_StrValue); ok {
- return x.StrValue
- }
- return ""
-}
-
-func (x *ChannelArg) GetIntValue() int32 {
- if x, ok := x.GetValue().(*ChannelArg_IntValue); ok {
- return x.IntValue
- }
- return 0
-}
-
-type isChannelArg_Value interface {
- isChannelArg_Value()
-}
-
-type ChannelArg_StrValue struct {
- StrValue string `protobuf:"bytes,2,opt,name=str_value,json=strValue,proto3,oneof"`
-}
-
-type ChannelArg_IntValue struct {
- IntValue int32 `protobuf:"varint,3,opt,name=int_value,json=intValue,proto3,oneof"`
-}
-
-func (*ChannelArg_StrValue) isChannelArg_Value() {}
-
-func (*ChannelArg_IntValue) isChannelArg_Value() {}
-
-type ClientConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // List of targets to connect to. At least one target needs to be specified.
- ServerTargets []string `protobuf:"bytes,1,rep,name=server_targets,json=serverTargets,proto3" json:"server_targets,omitempty"`
- ClientType ClientType `protobuf:"varint,2,opt,name=client_type,json=clientType,proto3,enum=grpc.testing.ClientType" json:"client_type,omitempty"`
- SecurityParams *SecurityParams `protobuf:"bytes,3,opt,name=security_params,json=securityParams,proto3" json:"security_params,omitempty"`
- // How many concurrent RPCs to start for each channel.
- // For synchronous client, use a separate thread for each outstanding RPC.
- OutstandingRpcsPerChannel int32 `protobuf:"varint,4,opt,name=outstanding_rpcs_per_channel,json=outstandingRpcsPerChannel,proto3" json:"outstanding_rpcs_per_channel,omitempty"`
- // Number of independent client channels to create.
- // i-th channel will connect to server_target[i % server_targets.size()]
- ClientChannels int32 `protobuf:"varint,5,opt,name=client_channels,json=clientChannels,proto3" json:"client_channels,omitempty"`
- // Only for async client. Number of threads to use to start/manage RPCs.
- AsyncClientThreads int32 `protobuf:"varint,7,opt,name=async_client_threads,json=asyncClientThreads,proto3" json:"async_client_threads,omitempty"`
- RpcType RpcType `protobuf:"varint,8,opt,name=rpc_type,json=rpcType,proto3,enum=grpc.testing.RpcType" json:"rpc_type,omitempty"`
- // The requested load for the entire client (aggregated over all the threads).
- LoadParams *LoadParams `protobuf:"bytes,10,opt,name=load_params,json=loadParams,proto3" json:"load_params,omitempty"`
- PayloadConfig *PayloadConfig `protobuf:"bytes,11,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"`
- HistogramParams *HistogramParams `protobuf:"bytes,12,opt,name=histogram_params,json=histogramParams,proto3" json:"histogram_params,omitempty"`
- // Specify the cores we should run the client on, if desired
- CoreList []int32 `protobuf:"varint,13,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
- CoreLimit int32 `protobuf:"varint,14,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"`
- // If we use an OTHER_CLIENT client_type, this string gives more detail
- OtherClientApi string `protobuf:"bytes,15,opt,name=other_client_api,json=otherClientApi,proto3" json:"other_client_api,omitempty"`
- ChannelArgs []*ChannelArg `protobuf:"bytes,16,rep,name=channel_args,json=channelArgs,proto3" json:"channel_args,omitempty"`
- // Number of threads that share each completion queue
- ThreadsPerCq int32 `protobuf:"varint,17,opt,name=threads_per_cq,json=threadsPerCq,proto3" json:"threads_per_cq,omitempty"`
- // Number of messages on a stream before it gets finished/restarted
- MessagesPerStream int32 `protobuf:"varint,18,opt,name=messages_per_stream,json=messagesPerStream,proto3" json:"messages_per_stream,omitempty"`
- // Use coalescing API when possible.
- UseCoalesceApi bool `protobuf:"varint,19,opt,name=use_coalesce_api,json=useCoalesceApi,proto3" json:"use_coalesce_api,omitempty"`
- // If 0, disabled. Else, specifies the period between gathering latency
- // medians in milliseconds.
- MedianLatencyCollectionIntervalMillis int32 `protobuf:"varint,20,opt,name=median_latency_collection_interval_millis,json=medianLatencyCollectionIntervalMillis,proto3" json:"median_latency_collection_interval_millis,omitempty"`
- // Number of client processes. 0 indicates no restriction.
- ClientProcesses int32 `protobuf:"varint,21,opt,name=client_processes,json=clientProcesses,proto3" json:"client_processes,omitempty"`
-}
-
-func (x *ClientConfig) Reset() {
- *x = ClientConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientConfig) ProtoMessage() {}
-
-func (x *ClientConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead.
-func (*ClientConfig) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *ClientConfig) GetServerTargets() []string {
- if x != nil {
- return x.ServerTargets
- }
- return nil
-}
-
-func (x *ClientConfig) GetClientType() ClientType {
- if x != nil {
- return x.ClientType
- }
- return ClientType_SYNC_CLIENT
-}
-
-func (x *ClientConfig) GetSecurityParams() *SecurityParams {
- if x != nil {
- return x.SecurityParams
- }
- return nil
-}
-
-func (x *ClientConfig) GetOutstandingRpcsPerChannel() int32 {
- if x != nil {
- return x.OutstandingRpcsPerChannel
- }
- return 0
-}
-
-func (x *ClientConfig) GetClientChannels() int32 {
- if x != nil {
- return x.ClientChannels
- }
- return 0
-}
-
-func (x *ClientConfig) GetAsyncClientThreads() int32 {
- if x != nil {
- return x.AsyncClientThreads
- }
- return 0
-}
-
-func (x *ClientConfig) GetRpcType() RpcType {
- if x != nil {
- return x.RpcType
- }
- return RpcType_UNARY
-}
-
-func (x *ClientConfig) GetLoadParams() *LoadParams {
- if x != nil {
- return x.LoadParams
- }
- return nil
-}
-
-func (x *ClientConfig) GetPayloadConfig() *PayloadConfig {
- if x != nil {
- return x.PayloadConfig
- }
- return nil
-}
-
-func (x *ClientConfig) GetHistogramParams() *HistogramParams {
- if x != nil {
- return x.HistogramParams
- }
- return nil
-}
-
-func (x *ClientConfig) GetCoreList() []int32 {
- if x != nil {
- return x.CoreList
- }
- return nil
-}
-
-func (x *ClientConfig) GetCoreLimit() int32 {
- if x != nil {
- return x.CoreLimit
- }
- return 0
-}
-
-func (x *ClientConfig) GetOtherClientApi() string {
- if x != nil {
- return x.OtherClientApi
- }
- return ""
-}
-
-func (x *ClientConfig) GetChannelArgs() []*ChannelArg {
- if x != nil {
- return x.ChannelArgs
- }
- return nil
-}
-
-func (x *ClientConfig) GetThreadsPerCq() int32 {
- if x != nil {
- return x.ThreadsPerCq
- }
- return 0
-}
-
-func (x *ClientConfig) GetMessagesPerStream() int32 {
- if x != nil {
- return x.MessagesPerStream
- }
- return 0
-}
-
-func (x *ClientConfig) GetUseCoalesceApi() bool {
- if x != nil {
- return x.UseCoalesceApi
- }
- return false
-}
-
-func (x *ClientConfig) GetMedianLatencyCollectionIntervalMillis() int32 {
- if x != nil {
- return x.MedianLatencyCollectionIntervalMillis
- }
- return 0
-}
-
-func (x *ClientConfig) GetClientProcesses() int32 {
- if x != nil {
- return x.ClientProcesses
- }
- return 0
-}
-
-type ClientStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Stats *ClientStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
-}
-
-func (x *ClientStatus) Reset() {
- *x = ClientStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientStatus) ProtoMessage() {}
-
-func (x *ClientStatus) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientStatus.ProtoReflect.Descriptor instead.
-func (*ClientStatus) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *ClientStatus) GetStats() *ClientStats {
- if x != nil {
- return x.Stats
- }
- return nil
-}
-
-// Request current stats
-type Mark struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // if true, the stats will be reset after taking their snapshot.
- Reset_ bool `protobuf:"varint,1,opt,name=reset,proto3" json:"reset,omitempty"`
-}
-
-func (x *Mark) Reset() {
- *x = Mark{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Mark) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Mark) ProtoMessage() {}
-
-func (x *Mark) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Mark.ProtoReflect.Descriptor instead.
-func (*Mark) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Mark) GetReset_() bool {
- if x != nil {
- return x.Reset_
- }
- return false
-}
-
-type ClientArgs struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Argtype:
- // *ClientArgs_Setup
- // *ClientArgs_Mark
- Argtype isClientArgs_Argtype `protobuf_oneof:"argtype"`
-}
-
-func (x *ClientArgs) Reset() {
- *x = ClientArgs{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientArgs) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientArgs) ProtoMessage() {}
-
-func (x *ClientArgs) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientArgs.ProtoReflect.Descriptor instead.
-func (*ClientArgs) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{8}
-}
-
-func (m *ClientArgs) GetArgtype() isClientArgs_Argtype {
- if m != nil {
- return m.Argtype
- }
- return nil
-}
-
-func (x *ClientArgs) GetSetup() *ClientConfig {
- if x, ok := x.GetArgtype().(*ClientArgs_Setup); ok {
- return x.Setup
- }
- return nil
-}
-
-func (x *ClientArgs) GetMark() *Mark {
- if x, ok := x.GetArgtype().(*ClientArgs_Mark); ok {
- return x.Mark
- }
- return nil
-}
-
-type isClientArgs_Argtype interface {
- isClientArgs_Argtype()
-}
-
-type ClientArgs_Setup struct {
- Setup *ClientConfig `protobuf:"bytes,1,opt,name=setup,proto3,oneof"`
-}
-
-type ClientArgs_Mark struct {
- Mark *Mark `protobuf:"bytes,2,opt,name=mark,proto3,oneof"`
-}
-
-func (*ClientArgs_Setup) isClientArgs_Argtype() {}
-
-func (*ClientArgs_Mark) isClientArgs_Argtype() {}
-
-type ServerConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ServerType ServerType `protobuf:"varint,1,opt,name=server_type,json=serverType,proto3,enum=grpc.testing.ServerType" json:"server_type,omitempty"`
- SecurityParams *SecurityParams `protobuf:"bytes,2,opt,name=security_params,json=securityParams,proto3" json:"security_params,omitempty"`
- // Port on which to listen. Zero means pick unused port.
- Port int32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"`
- // Only for async server. Number of threads used to serve the requests.
- AsyncServerThreads int32 `protobuf:"varint,7,opt,name=async_server_threads,json=asyncServerThreads,proto3" json:"async_server_threads,omitempty"`
- // Specify the number of cores to limit server to, if desired
- CoreLimit int32 `protobuf:"varint,8,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"`
- // payload config, used in generic server.
- // Note this must NOT be used in proto (non-generic) servers. For proto servers,
- // 'response sizes' must be configured from the 'response_size' field of the
- // 'SimpleRequest' objects in RPC requests.
- PayloadConfig *PayloadConfig `protobuf:"bytes,9,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"`
- // Specify the cores we should run the server on, if desired
- CoreList []int32 `protobuf:"varint,10,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
- // If we use an OTHER_SERVER client_type, this string gives more detail
- OtherServerApi string `protobuf:"bytes,11,opt,name=other_server_api,json=otherServerApi,proto3" json:"other_server_api,omitempty"`
- // Number of threads that share each completion queue
- ThreadsPerCq int32 `protobuf:"varint,12,opt,name=threads_per_cq,json=threadsPerCq,proto3" json:"threads_per_cq,omitempty"`
- // Buffer pool size (no buffer pool specified if unset)
- ResourceQuotaSize int32 `protobuf:"varint,1001,opt,name=resource_quota_size,json=resourceQuotaSize,proto3" json:"resource_quota_size,omitempty"`
- ChannelArgs []*ChannelArg `protobuf:"bytes,1002,rep,name=channel_args,json=channelArgs,proto3" json:"channel_args,omitempty"`
- // Number of server processes. 0 indicates no restriction.
- ServerProcesses int32 `protobuf:"varint,21,opt,name=server_processes,json=serverProcesses,proto3" json:"server_processes,omitempty"`
-}
-
-func (x *ServerConfig) Reset() {
- *x = ServerConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerConfig) ProtoMessage() {}
-
-func (x *ServerConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerConfig.ProtoReflect.Descriptor instead.
-func (*ServerConfig) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *ServerConfig) GetServerType() ServerType {
- if x != nil {
- return x.ServerType
- }
- return ServerType_SYNC_SERVER
-}
-
-func (x *ServerConfig) GetSecurityParams() *SecurityParams {
- if x != nil {
- return x.SecurityParams
- }
- return nil
-}
-
-func (x *ServerConfig) GetPort() int32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *ServerConfig) GetAsyncServerThreads() int32 {
- if x != nil {
- return x.AsyncServerThreads
- }
- return 0
-}
-
-func (x *ServerConfig) GetCoreLimit() int32 {
- if x != nil {
- return x.CoreLimit
- }
- return 0
-}
-
-func (x *ServerConfig) GetPayloadConfig() *PayloadConfig {
- if x != nil {
- return x.PayloadConfig
- }
- return nil
-}
-
-func (x *ServerConfig) GetCoreList() []int32 {
- if x != nil {
- return x.CoreList
- }
- return nil
-}
-
-func (x *ServerConfig) GetOtherServerApi() string {
- if x != nil {
- return x.OtherServerApi
- }
- return ""
-}
-
-func (x *ServerConfig) GetThreadsPerCq() int32 {
- if x != nil {
- return x.ThreadsPerCq
- }
- return 0
-}
-
-func (x *ServerConfig) GetResourceQuotaSize() int32 {
- if x != nil {
- return x.ResourceQuotaSize
- }
- return 0
-}
-
-func (x *ServerConfig) GetChannelArgs() []*ChannelArg {
- if x != nil {
- return x.ChannelArgs
- }
- return nil
-}
-
-func (x *ServerConfig) GetServerProcesses() int32 {
- if x != nil {
- return x.ServerProcesses
- }
- return 0
-}
-
-type ServerArgs struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Argtype:
- // *ServerArgs_Setup
- // *ServerArgs_Mark
- Argtype isServerArgs_Argtype `protobuf_oneof:"argtype"`
-}
-
-func (x *ServerArgs) Reset() {
- *x = ServerArgs{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerArgs) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerArgs) ProtoMessage() {}
-
-func (x *ServerArgs) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerArgs.ProtoReflect.Descriptor instead.
-func (*ServerArgs) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{10}
-}
-
-func (m *ServerArgs) GetArgtype() isServerArgs_Argtype {
- if m != nil {
- return m.Argtype
- }
- return nil
-}
-
-func (x *ServerArgs) GetSetup() *ServerConfig {
- if x, ok := x.GetArgtype().(*ServerArgs_Setup); ok {
- return x.Setup
- }
- return nil
-}
-
-func (x *ServerArgs) GetMark() *Mark {
- if x, ok := x.GetArgtype().(*ServerArgs_Mark); ok {
- return x.Mark
- }
- return nil
-}
-
-type isServerArgs_Argtype interface {
- isServerArgs_Argtype()
-}
-
-type ServerArgs_Setup struct {
- Setup *ServerConfig `protobuf:"bytes,1,opt,name=setup,proto3,oneof"`
-}
-
-type ServerArgs_Mark struct {
- Mark *Mark `protobuf:"bytes,2,opt,name=mark,proto3,oneof"`
-}
-
-func (*ServerArgs_Setup) isServerArgs_Argtype() {}
-
-func (*ServerArgs_Mark) isServerArgs_Argtype() {}
-
-type ServerStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Stats *ServerStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
- // the port bound by the server
- Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
- // Number of cores available to the server
- Cores int32 `protobuf:"varint,3,opt,name=cores,proto3" json:"cores,omitempty"`
-}
-
-func (x *ServerStatus) Reset() {
- *x = ServerStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerStatus) ProtoMessage() {}
-
-func (x *ServerStatus) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerStatus.ProtoReflect.Descriptor instead.
-func (*ServerStatus) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *ServerStatus) GetStats() *ServerStats {
- if x != nil {
- return x.Stats
- }
- return nil
-}
-
-func (x *ServerStatus) GetPort() int32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *ServerStatus) GetCores() int32 {
- if x != nil {
- return x.Cores
- }
- return 0
-}
-
-type CoreRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *CoreRequest) Reset() {
- *x = CoreRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CoreRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CoreRequest) ProtoMessage() {}
-
-func (x *CoreRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CoreRequest.ProtoReflect.Descriptor instead.
-func (*CoreRequest) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{12}
-}
-
-type CoreResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Number of cores available on the server
- Cores int32 `protobuf:"varint,1,opt,name=cores,proto3" json:"cores,omitempty"`
-}
-
-func (x *CoreResponse) Reset() {
- *x = CoreResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CoreResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CoreResponse) ProtoMessage() {}
-
-func (x *CoreResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CoreResponse.ProtoReflect.Descriptor instead.
-func (*CoreResponse) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *CoreResponse) GetCores() int32 {
- if x != nil {
- return x.Cores
- }
- return 0
-}
-
-type Void struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *Void) Reset() {
- *x = Void{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Void) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Void) ProtoMessage() {}
-
-func (x *Void) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Void.ProtoReflect.Descriptor instead.
-func (*Void) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{14}
-}
-
-// A single performance scenario: input to qps_json_driver
-type Scenario struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Human readable name for this scenario
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Client configuration
- ClientConfig *ClientConfig `protobuf:"bytes,2,opt,name=client_config,json=clientConfig,proto3" json:"client_config,omitempty"`
- // Number of clients to start for the test
- NumClients int32 `protobuf:"varint,3,opt,name=num_clients,json=numClients,proto3" json:"num_clients,omitempty"`
- // Server configuration
- ServerConfig *ServerConfig `protobuf:"bytes,4,opt,name=server_config,json=serverConfig,proto3" json:"server_config,omitempty"`
- // Number of servers to start for the test
- NumServers int32 `protobuf:"varint,5,opt,name=num_servers,json=numServers,proto3" json:"num_servers,omitempty"`
- // Warmup period, in seconds
- WarmupSeconds int32 `protobuf:"varint,6,opt,name=warmup_seconds,json=warmupSeconds,proto3" json:"warmup_seconds,omitempty"`
- // Benchmark time, in seconds
- BenchmarkSeconds int32 `protobuf:"varint,7,opt,name=benchmark_seconds,json=benchmarkSeconds,proto3" json:"benchmark_seconds,omitempty"`
- // Number of workers to spawn locally (usually zero)
- SpawnLocalWorkerCount int32 `protobuf:"varint,8,opt,name=spawn_local_worker_count,json=spawnLocalWorkerCount,proto3" json:"spawn_local_worker_count,omitempty"`
-}
-
-func (x *Scenario) Reset() {
- *x = Scenario{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Scenario) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Scenario) ProtoMessage() {}
-
-func (x *Scenario) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Scenario.ProtoReflect.Descriptor instead.
-func (*Scenario) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Scenario) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Scenario) GetClientConfig() *ClientConfig {
- if x != nil {
- return x.ClientConfig
- }
- return nil
-}
-
-func (x *Scenario) GetNumClients() int32 {
- if x != nil {
- return x.NumClients
- }
- return 0
-}
-
-func (x *Scenario) GetServerConfig() *ServerConfig {
- if x != nil {
- return x.ServerConfig
- }
- return nil
-}
-
-func (x *Scenario) GetNumServers() int32 {
- if x != nil {
- return x.NumServers
- }
- return 0
-}
-
-func (x *Scenario) GetWarmupSeconds() int32 {
- if x != nil {
- return x.WarmupSeconds
- }
- return 0
-}
-
-func (x *Scenario) GetBenchmarkSeconds() int32 {
- if x != nil {
- return x.BenchmarkSeconds
- }
- return 0
-}
-
-func (x *Scenario) GetSpawnLocalWorkerCount() int32 {
- if x != nil {
- return x.SpawnLocalWorkerCount
- }
- return 0
-}
-
-// A set of scenarios to be run with qps_json_driver
-type Scenarios struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Scenarios []*Scenario `protobuf:"bytes,1,rep,name=scenarios,proto3" json:"scenarios,omitempty"`
-}
-
-func (x *Scenarios) Reset() {
- *x = Scenarios{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Scenarios) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Scenarios) ProtoMessage() {}
-
-func (x *Scenarios) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Scenarios.ProtoReflect.Descriptor instead.
-func (*Scenarios) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Scenarios) GetScenarios() []*Scenario {
- if x != nil {
- return x.Scenarios
- }
- return nil
-}
-
-// Basic summary that can be computed from ClientStats and ServerStats
-// once the scenario has finished.
-type ScenarioResultSummary struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Total number of operations per second over all clients. What is counted as 1 'operation' depends on the benchmark scenarios:
- // For unary benchmarks, an operation is processing of a single unary RPC.
- // For streaming benchmarks, an operation is processing of a single ping pong of request and response.
- Qps float64 `protobuf:"fixed64,1,opt,name=qps,proto3" json:"qps,omitempty"`
- // QPS per server core.
- QpsPerServerCore float64 `protobuf:"fixed64,2,opt,name=qps_per_server_core,json=qpsPerServerCore,proto3" json:"qps_per_server_core,omitempty"`
- // The total server cpu load based on system time across all server processes, expressed as percentage of a single cpu core.
- // For example, 85 implies 85% of a cpu core, 125 implies 125% of a cpu core. Since we are accumulating the cpu load across all the server
- // processes, the value could > 100 when there are multiple servers or a single server using multiple threads and cores.
- // Same explanation for the total client cpu load below.
- ServerSystemTime float64 `protobuf:"fixed64,3,opt,name=server_system_time,json=serverSystemTime,proto3" json:"server_system_time,omitempty"`
- // The total server cpu load based on user time across all server processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
- ServerUserTime float64 `protobuf:"fixed64,4,opt,name=server_user_time,json=serverUserTime,proto3" json:"server_user_time,omitempty"`
- // The total client cpu load based on system time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
- ClientSystemTime float64 `protobuf:"fixed64,5,opt,name=client_system_time,json=clientSystemTime,proto3" json:"client_system_time,omitempty"`
- // The total client cpu load based on user time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
- ClientUserTime float64 `protobuf:"fixed64,6,opt,name=client_user_time,json=clientUserTime,proto3" json:"client_user_time,omitempty"`
- // X% latency percentiles (in nanoseconds)
- Latency_50 float64 `protobuf:"fixed64,7,opt,name=latency_50,json=latency50,proto3" json:"latency_50,omitempty"`
- Latency_90 float64 `protobuf:"fixed64,8,opt,name=latency_90,json=latency90,proto3" json:"latency_90,omitempty"`
- Latency_95 float64 `protobuf:"fixed64,9,opt,name=latency_95,json=latency95,proto3" json:"latency_95,omitempty"`
- Latency_99 float64 `protobuf:"fixed64,10,opt,name=latency_99,json=latency99,proto3" json:"latency_99,omitempty"`
- Latency_999 float64 `protobuf:"fixed64,11,opt,name=latency_999,json=latency999,proto3" json:"latency_999,omitempty"`
- // server cpu usage percentage
- ServerCpuUsage float64 `protobuf:"fixed64,12,opt,name=server_cpu_usage,json=serverCpuUsage,proto3" json:"server_cpu_usage,omitempty"`
- // Number of requests that succeeded/failed
- SuccessfulRequestsPerSecond float64 `protobuf:"fixed64,13,opt,name=successful_requests_per_second,json=successfulRequestsPerSecond,proto3" json:"successful_requests_per_second,omitempty"`
- FailedRequestsPerSecond float64 `protobuf:"fixed64,14,opt,name=failed_requests_per_second,json=failedRequestsPerSecond,proto3" json:"failed_requests_per_second,omitempty"`
- // Number of polls called inside completion queue per request
- ClientPollsPerRequest float64 `protobuf:"fixed64,15,opt,name=client_polls_per_request,json=clientPollsPerRequest,proto3" json:"client_polls_per_request,omitempty"`
- ServerPollsPerRequest float64 `protobuf:"fixed64,16,opt,name=server_polls_per_request,json=serverPollsPerRequest,proto3" json:"server_polls_per_request,omitempty"`
- // Queries per CPU-sec over all servers or clients
- ServerQueriesPerCpuSec float64 `protobuf:"fixed64,17,opt,name=server_queries_per_cpu_sec,json=serverQueriesPerCpuSec,proto3" json:"server_queries_per_cpu_sec,omitempty"`
- ClientQueriesPerCpuSec float64 `protobuf:"fixed64,18,opt,name=client_queries_per_cpu_sec,json=clientQueriesPerCpuSec,proto3" json:"client_queries_per_cpu_sec,omitempty"`
-}
-
-func (x *ScenarioResultSummary) Reset() {
- *x = ScenarioResultSummary{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ScenarioResultSummary) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ScenarioResultSummary) ProtoMessage() {}
-
-func (x *ScenarioResultSummary) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ScenarioResultSummary.ProtoReflect.Descriptor instead.
-func (*ScenarioResultSummary) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *ScenarioResultSummary) GetQps() float64 {
- if x != nil {
- return x.Qps
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetQpsPerServerCore() float64 {
- if x != nil {
- return x.QpsPerServerCore
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetServerSystemTime() float64 {
- if x != nil {
- return x.ServerSystemTime
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetServerUserTime() float64 {
- if x != nil {
- return x.ServerUserTime
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetClientSystemTime() float64 {
- if x != nil {
- return x.ClientSystemTime
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetClientUserTime() float64 {
- if x != nil {
- return x.ClientUserTime
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetLatency_50() float64 {
- if x != nil {
- return x.Latency_50
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetLatency_90() float64 {
- if x != nil {
- return x.Latency_90
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetLatency_95() float64 {
- if x != nil {
- return x.Latency_95
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetLatency_99() float64 {
- if x != nil {
- return x.Latency_99
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetLatency_999() float64 {
- if x != nil {
- return x.Latency_999
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetServerCpuUsage() float64 {
- if x != nil {
- return x.ServerCpuUsage
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetSuccessfulRequestsPerSecond() float64 {
- if x != nil {
- return x.SuccessfulRequestsPerSecond
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetFailedRequestsPerSecond() float64 {
- if x != nil {
- return x.FailedRequestsPerSecond
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetClientPollsPerRequest() float64 {
- if x != nil {
- return x.ClientPollsPerRequest
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetServerPollsPerRequest() float64 {
- if x != nil {
- return x.ServerPollsPerRequest
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetServerQueriesPerCpuSec() float64 {
- if x != nil {
- return x.ServerQueriesPerCpuSec
- }
- return 0
-}
-
-func (x *ScenarioResultSummary) GetClientQueriesPerCpuSec() float64 {
- if x != nil {
- return x.ClientQueriesPerCpuSec
- }
- return 0
-}
-
-// Results of a single benchmark scenario.
-type ScenarioResult struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Inputs used to run the scenario.
- Scenario *Scenario `protobuf:"bytes,1,opt,name=scenario,proto3" json:"scenario,omitempty"`
- // Histograms from all clients merged into one histogram.
- Latencies *HistogramData `protobuf:"bytes,2,opt,name=latencies,proto3" json:"latencies,omitempty"`
- // Client stats for each client
- ClientStats []*ClientStats `protobuf:"bytes,3,rep,name=client_stats,json=clientStats,proto3" json:"client_stats,omitempty"`
- // Server stats for each server
- ServerStats []*ServerStats `protobuf:"bytes,4,rep,name=server_stats,json=serverStats,proto3" json:"server_stats,omitempty"`
- // Number of cores available to each server
- ServerCores []int32 `protobuf:"varint,5,rep,packed,name=server_cores,json=serverCores,proto3" json:"server_cores,omitempty"`
- // An after-the-fact computed summary
- Summary *ScenarioResultSummary `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"`
- // Information on success or failure of each worker
- ClientSuccess []bool `protobuf:"varint,7,rep,packed,name=client_success,json=clientSuccess,proto3" json:"client_success,omitempty"`
- ServerSuccess []bool `protobuf:"varint,8,rep,packed,name=server_success,json=serverSuccess,proto3" json:"server_success,omitempty"`
- // Number of failed requests (one row per status code seen)
- RequestResults []*RequestResultCount `protobuf:"bytes,9,rep,name=request_results,json=requestResults,proto3" json:"request_results,omitempty"`
-}
-
-func (x *ScenarioResult) Reset() {
- *x = ScenarioResult{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_control_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ScenarioResult) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ScenarioResult) ProtoMessage() {}
-
-func (x *ScenarioResult) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_control_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ScenarioResult.ProtoReflect.Descriptor instead.
-func (*ScenarioResult) Descriptor() ([]byte, []int) {
- return file_grpc_testing_control_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *ScenarioResult) GetScenario() *Scenario {
- if x != nil {
- return x.Scenario
- }
- return nil
-}
-
-func (x *ScenarioResult) GetLatencies() *HistogramData {
- if x != nil {
- return x.Latencies
- }
- return nil
-}
-
-func (x *ScenarioResult) GetClientStats() []*ClientStats {
- if x != nil {
- return x.ClientStats
- }
- return nil
-}
-
-func (x *ScenarioResult) GetServerStats() []*ServerStats {
- if x != nil {
- return x.ServerStats
- }
- return nil
-}
-
-func (x *ScenarioResult) GetServerCores() []int32 {
- if x != nil {
- return x.ServerCores
- }
- return nil
-}
-
-func (x *ScenarioResult) GetSummary() *ScenarioResultSummary {
- if x != nil {
- return x.Summary
- }
- return nil
-}
-
-func (x *ScenarioResult) GetClientSuccess() []bool {
- if x != nil {
- return x.ClientSuccess
- }
- return nil
-}
-
-func (x *ScenarioResult) GetServerSuccess() []bool {
- if x != nil {
- return x.ServerSuccess
- }
- return nil
-}
-
-func (x *ScenarioResult) GetRequestResults() []*RequestResultCount {
- if x != nil {
- return x.RequestResults
- }
- return nil
-}
-
-var File_grpc_testing_control_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_control_proto_rawDesc = []byte{
- 0x0a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63,
- 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x1b, 0x67, 0x72, 0x70, 0x63,
- 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
- 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x22, 0x32, 0x0a, 0x0d, 0x50, 0x6f, 0x69, 0x73, 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61,
- 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x6f,
- 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65,
- 0x64, 0x4c, 0x6f, 0x61, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c,
- 0x6f, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x4c, 0x6f,
- 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x73,
- 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x6f,
- 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52,
- 0x0a, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x70,
- 0x6f, 0x69, 0x73, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x6f, 0x69, 0x73,
- 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x07, 0x70, 0x6f, 0x69,
- 0x73, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x7f, 0x0a, 0x0e,
- 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e,
- 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x09, 0x75, 0x73, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x12, 0x30,
- 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x76,
- 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
- 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x67, 0x0a,
- 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x1d, 0x0a, 0x09, 0x73, 0x74, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d,
- 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x05, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf6, 0x07, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x39,
- 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63,
- 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x12, 0x3f, 0x0a, 0x1c, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f,
- 0x72, 0x70, 0x63, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x52, 0x70, 0x63, 0x73, 0x50, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65,
- 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x73,
- 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61,
- 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x43,
- 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x08,
- 0x72, 0x70, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x70,
- 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39,
- 0x0a, 0x0b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0a, 0x6c,
- 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x61, 0x79,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d,
- 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a,
- 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
- 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d,
- 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61,
- 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x5f,
- 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x72, 0x65,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f,
- 0x74, 0x68, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x69, 0x12, 0x3b, 0x0a,
- 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x10, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x52, 0x0b, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x68,
- 0x72, 0x65, 0x61, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x71, 0x18, 0x11, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x50, 0x65, 0x72, 0x43, 0x71,
- 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72,
- 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x12, 0x28, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65,
- 0x5f, 0x61, 0x70, 0x69, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x43,
- 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x41, 0x70, 0x69, 0x12, 0x58, 0x0a, 0x29, 0x6d, 0x65,
- 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6c,
- 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
- 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x25, 0x6d,
- 0x65, 0x64, 0x69, 0x61, 0x6e, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x6c, 0x6c,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x69,
- 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70,
- 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f,
- 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22,
- 0x3f, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c,
- 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
- 0x22, 0x1c, 0x0a, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x65,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x75,
- 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x05,
- 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e,
- 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70,
- 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61,
- 0x72, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x72,
- 0x67, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc0, 0x04, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61,
- 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x14,
- 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72,
- 0x65, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x73, 0x79, 0x6e,
- 0x63, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1d,
- 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a,
- 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0a,
- 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28,
- 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61,
- 0x70, 0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x70, 0x69, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x65,
- 0x61, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x50, 0x65, 0x72, 0x43, 0x71, 0x12, 0x2f,
- 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61,
- 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x12,
- 0x3c, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18,
- 0xea, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67,
- 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 0x0a,
- 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65,
- 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50,
- 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x75, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x48, 0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x61,
- 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x04,
- 0x6d, 0x61, 0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x22,
- 0x69, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
- 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
- 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x6f,
- 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x24, 0x0a, 0x0c, 0x43, 0x6f, 0x72,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72,
- 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22,
- 0x06, 0x0a, 0x04, 0x56, 0x6f, 0x69, 0x64, 0x22, 0xef, 0x02, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e,
- 0x61, 0x72, 0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65,
- 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43,
- 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d,
- 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x6e, 0x75, 0x6d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e,
- 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e,
- 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x53, 0x65, 0x63, 0x6f,
- 0x6e, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
- 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
- 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
- 0x12, 0x37, 0x0a, 0x18, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f,
- 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x15, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x57, 0x6f,
- 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x09, 0x53, 0x63, 0x65,
- 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72,
- 0x69, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69,
- 0x6f, 0x52, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x22, 0xbb, 0x06, 0x0a,
- 0x15, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53,
- 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x70, 0x73, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x03, 0x71, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x71, 0x70, 0x73, 0x5f,
- 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x71, 0x70, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x79, 0x73, 0x74, 0x65,
- 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f,
- 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12,
- 0x2c, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
- 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a,
- 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55,
- 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e,
- 0x63, 0x79, 0x5f, 0x35, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 0x74,
- 0x65, 0x6e, 0x63, 0x79, 0x35, 0x30, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63,
- 0x79, 0x5f, 0x39, 0x30, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65,
- 0x6e, 0x63, 0x79, 0x39, 0x30, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79,
- 0x5f, 0x39, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e,
- 0x63, 0x79, 0x39, 0x35, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f,
- 0x39, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63,
- 0x79, 0x39, 0x39, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x39,
- 0x39, 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63,
- 0x79, 0x39, 0x39, 0x39, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63,
- 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x43,
- 0x0a, 0x1e, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
- 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66,
- 0x75, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63,
- 0x6f, 0x6e, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
- 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
- 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x73,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x73, 0x50,
- 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x71, 0x75, 0x65,
- 0x72, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x65, 0x63,
- 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x51, 0x75,
- 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x65, 0x72, 0x43, 0x70, 0x75, 0x53, 0x65, 0x63, 0x12, 0x3a,
- 0x0a, 0x1a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73,
- 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x12, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x16, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65,
- 0x73, 0x50, 0x65, 0x72, 0x43, 0x70, 0x75, 0x53, 0x65, 0x63, 0x22, 0xf6, 0x03, 0x0a, 0x0e, 0x53,
- 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a,
- 0x08, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53,
- 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52, 0x08, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69,
- 0x6f, 0x12, 0x39, 0x0a, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x61, 0x74,
- 0x61, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c,
- 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0b, 0x63,
- 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0b, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x73,
- 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x63, 0x65, 0x6e,
- 0x61, 0x72, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
- 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c,
- 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x03,
- 0x28, 0x08, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73,
- 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x63, 0x63,
- 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
- 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x73, 0x2a, 0x56, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,
- 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45,
- 0x4e, 0x54, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x43, 0x4c,
- 0x49, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x4c, 0x4c, 0x42, 0x41,
- 0x43, 0x4b, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x2a, 0x70, 0x0a, 0x0a, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x4e,
- 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x53,
- 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14,
- 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x53, 0x45,
- 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f,
- 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x4c, 0x4c,
- 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x04, 0x2a, 0x72, 0x0a,
- 0x07, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x41, 0x52,
- 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47,
- 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f,
- 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x19, 0x0a,
- 0x15, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f,
- 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x52, 0x45,
- 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x5f, 0x57, 0x41, 0x59, 0x53, 0x10,
- 0x04, 0x42, 0x52, 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65,
- 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_testing_control_proto_rawDescOnce sync.Once
- file_grpc_testing_control_proto_rawDescData = file_grpc_testing_control_proto_rawDesc
-)
-
-func file_grpc_testing_control_proto_rawDescGZIP() []byte {
- file_grpc_testing_control_proto_rawDescOnce.Do(func() {
- file_grpc_testing_control_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_testing_control_proto_rawDescData)
- })
- return file_grpc_testing_control_proto_rawDescData
-}
-
-var file_grpc_testing_control_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_grpc_testing_control_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
-var file_grpc_testing_control_proto_goTypes = []interface{}{
- (ClientType)(0), // 0: grpc.testing.ClientType
- (ServerType)(0), // 1: grpc.testing.ServerType
- (RpcType)(0), // 2: grpc.testing.RpcType
- (*PoissonParams)(nil), // 3: grpc.testing.PoissonParams
- (*ClosedLoopParams)(nil), // 4: grpc.testing.ClosedLoopParams
- (*LoadParams)(nil), // 5: grpc.testing.LoadParams
- (*SecurityParams)(nil), // 6: grpc.testing.SecurityParams
- (*ChannelArg)(nil), // 7: grpc.testing.ChannelArg
- (*ClientConfig)(nil), // 8: grpc.testing.ClientConfig
- (*ClientStatus)(nil), // 9: grpc.testing.ClientStatus
- (*Mark)(nil), // 10: grpc.testing.Mark
- (*ClientArgs)(nil), // 11: grpc.testing.ClientArgs
- (*ServerConfig)(nil), // 12: grpc.testing.ServerConfig
- (*ServerArgs)(nil), // 13: grpc.testing.ServerArgs
- (*ServerStatus)(nil), // 14: grpc.testing.ServerStatus
- (*CoreRequest)(nil), // 15: grpc.testing.CoreRequest
- (*CoreResponse)(nil), // 16: grpc.testing.CoreResponse
- (*Void)(nil), // 17: grpc.testing.Void
- (*Scenario)(nil), // 18: grpc.testing.Scenario
- (*Scenarios)(nil), // 19: grpc.testing.Scenarios
- (*ScenarioResultSummary)(nil), // 20: grpc.testing.ScenarioResultSummary
- (*ScenarioResult)(nil), // 21: grpc.testing.ScenarioResult
- (*PayloadConfig)(nil), // 22: grpc.testing.PayloadConfig
- (*HistogramParams)(nil), // 23: grpc.testing.HistogramParams
- (*ClientStats)(nil), // 24: grpc.testing.ClientStats
- (*ServerStats)(nil), // 25: grpc.testing.ServerStats
- (*HistogramData)(nil), // 26: grpc.testing.HistogramData
- (*RequestResultCount)(nil), // 27: grpc.testing.RequestResultCount
-}
-var file_grpc_testing_control_proto_depIdxs = []int32{
- 4, // 0: grpc.testing.LoadParams.closed_loop:type_name -> grpc.testing.ClosedLoopParams
- 3, // 1: grpc.testing.LoadParams.poisson:type_name -> grpc.testing.PoissonParams
- 0, // 2: grpc.testing.ClientConfig.client_type:type_name -> grpc.testing.ClientType
- 6, // 3: grpc.testing.ClientConfig.security_params:type_name -> grpc.testing.SecurityParams
- 2, // 4: grpc.testing.ClientConfig.rpc_type:type_name -> grpc.testing.RpcType
- 5, // 5: grpc.testing.ClientConfig.load_params:type_name -> grpc.testing.LoadParams
- 22, // 6: grpc.testing.ClientConfig.payload_config:type_name -> grpc.testing.PayloadConfig
- 23, // 7: grpc.testing.ClientConfig.histogram_params:type_name -> grpc.testing.HistogramParams
- 7, // 8: grpc.testing.ClientConfig.channel_args:type_name -> grpc.testing.ChannelArg
- 24, // 9: grpc.testing.ClientStatus.stats:type_name -> grpc.testing.ClientStats
- 8, // 10: grpc.testing.ClientArgs.setup:type_name -> grpc.testing.ClientConfig
- 10, // 11: grpc.testing.ClientArgs.mark:type_name -> grpc.testing.Mark
- 1, // 12: grpc.testing.ServerConfig.server_type:type_name -> grpc.testing.ServerType
- 6, // 13: grpc.testing.ServerConfig.security_params:type_name -> grpc.testing.SecurityParams
- 22, // 14: grpc.testing.ServerConfig.payload_config:type_name -> grpc.testing.PayloadConfig
- 7, // 15: grpc.testing.ServerConfig.channel_args:type_name -> grpc.testing.ChannelArg
- 12, // 16: grpc.testing.ServerArgs.setup:type_name -> grpc.testing.ServerConfig
- 10, // 17: grpc.testing.ServerArgs.mark:type_name -> grpc.testing.Mark
- 25, // 18: grpc.testing.ServerStatus.stats:type_name -> grpc.testing.ServerStats
- 8, // 19: grpc.testing.Scenario.client_config:type_name -> grpc.testing.ClientConfig
- 12, // 20: grpc.testing.Scenario.server_config:type_name -> grpc.testing.ServerConfig
- 18, // 21: grpc.testing.Scenarios.scenarios:type_name -> grpc.testing.Scenario
- 18, // 22: grpc.testing.ScenarioResult.scenario:type_name -> grpc.testing.Scenario
- 26, // 23: grpc.testing.ScenarioResult.latencies:type_name -> grpc.testing.HistogramData
- 24, // 24: grpc.testing.ScenarioResult.client_stats:type_name -> grpc.testing.ClientStats
- 25, // 25: grpc.testing.ScenarioResult.server_stats:type_name -> grpc.testing.ServerStats
- 20, // 26: grpc.testing.ScenarioResult.summary:type_name -> grpc.testing.ScenarioResultSummary
- 27, // 27: grpc.testing.ScenarioResult.request_results:type_name -> grpc.testing.RequestResultCount
- 28, // [28:28] is the sub-list for method output_type
- 28, // [28:28] is the sub-list for method input_type
- 28, // [28:28] is the sub-list for extension type_name
- 28, // [28:28] is the sub-list for extension extendee
- 0, // [0:28] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_control_proto_init() }
-func file_grpc_testing_control_proto_init() {
- if File_grpc_testing_control_proto != nil {
- return
- }
- file_grpc_testing_payloads_proto_init()
- file_grpc_testing_stats_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_grpc_testing_control_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PoissonParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClosedLoopParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SecurityParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChannelArg); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientStatus); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Mark); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientArgs); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerArgs); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerStatus); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CoreRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CoreResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Void); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Scenario); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Scenarios); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ScenarioResultSummary); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_control_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ScenarioResult); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_testing_control_proto_msgTypes[2].OneofWrappers = []interface{}{
- (*LoadParams_ClosedLoop)(nil),
- (*LoadParams_Poisson)(nil),
- }
- file_grpc_testing_control_proto_msgTypes[4].OneofWrappers = []interface{}{
- (*ChannelArg_StrValue)(nil),
- (*ChannelArg_IntValue)(nil),
- }
- file_grpc_testing_control_proto_msgTypes[8].OneofWrappers = []interface{}{
- (*ClientArgs_Setup)(nil),
- (*ClientArgs_Mark)(nil),
- }
- file_grpc_testing_control_proto_msgTypes[10].OneofWrappers = []interface{}{
- (*ServerArgs_Setup)(nil),
- (*ServerArgs_Mark)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_control_proto_rawDesc,
- NumEnums: 3,
- NumMessages: 19,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_testing_control_proto_goTypes,
- DependencyIndexes: file_grpc_testing_control_proto_depIdxs,
- EnumInfos: file_grpc_testing_control_proto_enumTypes,
- MessageInfos: file_grpc_testing_control_proto_msgTypes,
- }.Build()
- File_grpc_testing_control_proto = out.File
- file_grpc_testing_control_proto_rawDesc = nil
- file_grpc_testing_control_proto_goTypes = nil
- file_grpc_testing_control_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/empty.pb.go b/gen/proto/grpc/testing/empty.pb.go
deleted file mode 100644
index fb0b17c..0000000
--- a/gen/proto/grpc/testing/empty.pb.go
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/empty.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// An empty message that you can re-use to avoid defining duplicated empty
-// messages in your project. A typical example is to use it as argument or the
-// return value of a service API. For instance:
-//
-// service Foo {
-// rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
-// };
-//
-type Empty struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *Empty) Reset() {
- *x = Empty{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_empty_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Empty) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Empty) ProtoMessage() {}
-
-func (x *Empty) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_empty_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Empty.ProtoReflect.Descriptor instead.
-func (*Empty) Descriptor() ([]byte, []int) {
- return file_grpc_testing_empty_proto_rawDescGZIP(), []int{0}
-}
-
-var File_grpc_testing_empty_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_empty_proto_rawDesc = []byte{
- 0x0a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x65,
- 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74,
- 0x79, 0x42, 0x5b, 0x0a, 0x1b, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x42, 0x0b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x5a, 0x2f, 0x67,
- 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e,
- 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_testing_empty_proto_rawDescOnce sync.Once
- file_grpc_testing_empty_proto_rawDescData = file_grpc_testing_empty_proto_rawDesc
-)
-
-func file_grpc_testing_empty_proto_rawDescGZIP() []byte {
- file_grpc_testing_empty_proto_rawDescOnce.Do(func() {
- file_grpc_testing_empty_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_testing_empty_proto_rawDescData)
- })
- return file_grpc_testing_empty_proto_rawDescData
-}
-
-var file_grpc_testing_empty_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_grpc_testing_empty_proto_goTypes = []interface{}{
- (*Empty)(nil), // 0: grpc.testing.Empty
-}
-var file_grpc_testing_empty_proto_depIdxs = []int32{
- 0, // [0:0] is the sub-list for method output_type
- 0, // [0:0] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_empty_proto_init() }
-func file_grpc_testing_empty_proto_init() {
- if File_grpc_testing_empty_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_testing_empty_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Empty); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_empty_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_testing_empty_proto_goTypes,
- DependencyIndexes: file_grpc_testing_empty_proto_depIdxs,
- MessageInfos: file_grpc_testing_empty_proto_msgTypes,
- }.Build()
- File_grpc_testing_empty_proto = out.File
- file_grpc_testing_empty_proto_rawDesc = nil
- file_grpc_testing_empty_proto_goTypes = nil
- file_grpc_testing_empty_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/messages.pb.go b/gen/proto/grpc/testing/messages.pb.go
deleted file mode 100644
index 2356588..0000000
--- a/gen/proto/grpc/testing/messages.pb.go
+++ /dev/null
@@ -1,2174 +0,0 @@
-// Copyright 2015-2016 gRPC 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.
-
-// Message definitions to be used by integration test service definitions.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/messages.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// The type of payload that should be returned.
-type PayloadType int32
-
-const (
- // Compressable text format.
- PayloadType_COMPRESSABLE PayloadType = 0
-)
-
-// Enum value maps for PayloadType.
-var (
- PayloadType_name = map[int32]string{
- 0: "COMPRESSABLE",
- }
- PayloadType_value = map[string]int32{
- "COMPRESSABLE": 0,
- }
-)
-
-func (x PayloadType) Enum() *PayloadType {
- p := new(PayloadType)
- *p = x
- return p
-}
-
-func (x PayloadType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (PayloadType) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_testing_messages_proto_enumTypes[0].Descriptor()
-}
-
-func (PayloadType) Type() protoreflect.EnumType {
- return &file_grpc_testing_messages_proto_enumTypes[0]
-}
-
-func (x PayloadType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use PayloadType.Descriptor instead.
-func (PayloadType) EnumDescriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{0}
-}
-
-// The type of route that a client took to reach a server w.r.t. gRPCLB.
-// The server must fill in "fallback" if it detects that the RPC reached
-// the server via the "gRPCLB fallback" path, and "backend" if it detects
-// that the RPC reached the server via "gRPCLB backend" path (i.e. if it got
-// the address of this server from the gRPCLB server BalanceLoad RPC). Exactly
-// how this detection is done is context and server dependent.
-type GrpclbRouteType int32
-
-const (
- // Server didn't detect the route that a client took to reach it.
- GrpclbRouteType_GRPCLB_ROUTE_TYPE_UNKNOWN GrpclbRouteType = 0
- // Indicates that a client reached a server via gRPCLB fallback.
- GrpclbRouteType_GRPCLB_ROUTE_TYPE_FALLBACK GrpclbRouteType = 1
- // Indicates that a client reached a server as a gRPCLB-given backend.
- GrpclbRouteType_GRPCLB_ROUTE_TYPE_BACKEND GrpclbRouteType = 2
-)
-
-// Enum value maps for GrpclbRouteType.
-var (
- GrpclbRouteType_name = map[int32]string{
- 0: "GRPCLB_ROUTE_TYPE_UNKNOWN",
- 1: "GRPCLB_ROUTE_TYPE_FALLBACK",
- 2: "GRPCLB_ROUTE_TYPE_BACKEND",
- }
- GrpclbRouteType_value = map[string]int32{
- "GRPCLB_ROUTE_TYPE_UNKNOWN": 0,
- "GRPCLB_ROUTE_TYPE_FALLBACK": 1,
- "GRPCLB_ROUTE_TYPE_BACKEND": 2,
- }
-)
-
-func (x GrpclbRouteType) Enum() *GrpclbRouteType {
- p := new(GrpclbRouteType)
- *p = x
- return p
-}
-
-func (x GrpclbRouteType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (GrpclbRouteType) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_testing_messages_proto_enumTypes[1].Descriptor()
-}
-
-func (GrpclbRouteType) Type() protoreflect.EnumType {
- return &file_grpc_testing_messages_proto_enumTypes[1]
-}
-
-func (x GrpclbRouteType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use GrpclbRouteType.Descriptor instead.
-func (GrpclbRouteType) EnumDescriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{1}
-}
-
-// Type of RPCs to send.
-type ClientConfigureRequest_RpcType int32
-
-const (
- ClientConfigureRequest_EMPTY_CALL ClientConfigureRequest_RpcType = 0
- ClientConfigureRequest_UNARY_CALL ClientConfigureRequest_RpcType = 1
-)
-
-// Enum value maps for ClientConfigureRequest_RpcType.
-var (
- ClientConfigureRequest_RpcType_name = map[int32]string{
- 0: "EMPTY_CALL",
- 1: "UNARY_CALL",
- }
- ClientConfigureRequest_RpcType_value = map[string]int32{
- "EMPTY_CALL": 0,
- "UNARY_CALL": 1,
- }
-)
-
-func (x ClientConfigureRequest_RpcType) Enum() *ClientConfigureRequest_RpcType {
- p := new(ClientConfigureRequest_RpcType)
- *p = x
- return p
-}
-
-func (x ClientConfigureRequest_RpcType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ClientConfigureRequest_RpcType) Descriptor() protoreflect.EnumDescriptor {
- return file_grpc_testing_messages_proto_enumTypes[2].Descriptor()
-}
-
-func (ClientConfigureRequest_RpcType) Type() protoreflect.EnumType {
- return &file_grpc_testing_messages_proto_enumTypes[2]
-}
-
-func (x ClientConfigureRequest_RpcType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ClientConfigureRequest_RpcType.Descriptor instead.
-func (ClientConfigureRequest_RpcType) EnumDescriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{16, 0}
-}
-
-// TODO(dgq): Go back to using well-known types once
-// https://github.com/grpc/grpc/issues/6980 has been fixed.
-// import "google/protobuf/wrappers.proto";
-type BoolValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The bool value.
- Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *BoolValue) Reset() {
- *x = BoolValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *BoolValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BoolValue) ProtoMessage() {}
-
-func (x *BoolValue) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use BoolValue.ProtoReflect.Descriptor instead.
-func (*BoolValue) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *BoolValue) GetValue() bool {
- if x != nil {
- return x.Value
- }
- return false
-}
-
-// A block of data, to simply increase gRPC message size.
-type Payload struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The type of data in body.
- Type PayloadType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.testing.PayloadType" json:"type,omitempty"`
- // Primary contents of payload.
- Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
-}
-
-func (x *Payload) Reset() {
- *x = Payload{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Payload) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Payload) ProtoMessage() {}
-
-func (x *Payload) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Payload.ProtoReflect.Descriptor instead.
-func (*Payload) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Payload) GetType() PayloadType {
- if x != nil {
- return x.Type
- }
- return PayloadType_COMPRESSABLE
-}
-
-func (x *Payload) GetBody() []byte {
- if x != nil {
- return x.Body
- }
- return nil
-}
-
-// A protobuf representation for grpc status. This is used by test
-// clients to specify a status that the server should attempt to return.
-type EchoStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
- Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-}
-
-func (x *EchoStatus) Reset() {
- *x = EchoStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *EchoStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EchoStatus) ProtoMessage() {}
-
-func (x *EchoStatus) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use EchoStatus.ProtoReflect.Descriptor instead.
-func (*EchoStatus) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *EchoStatus) GetCode() int32 {
- if x != nil {
- return x.Code
- }
- return 0
-}
-
-func (x *EchoStatus) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-// Unary request.
-type SimpleRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Desired payload type in the response from the server.
- // If response_type is RANDOM, server randomly chooses one from other formats.
- ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=grpc.testing.PayloadType" json:"response_type,omitempty"`
- // Desired payload size in the response from the server.
- ResponseSize int32 `protobuf:"varint,2,opt,name=response_size,json=responseSize,proto3" json:"response_size,omitempty"`
- // Optional input payload sent along with the request.
- Payload *Payload `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
- // Whether SimpleResponse should include username.
- FillUsername bool `protobuf:"varint,4,opt,name=fill_username,json=fillUsername,proto3" json:"fill_username,omitempty"`
- // Whether SimpleResponse should include OAuth scope.
- FillOauthScope bool `protobuf:"varint,5,opt,name=fill_oauth_scope,json=fillOauthScope,proto3" json:"fill_oauth_scope,omitempty"`
- // Whether to request the server to compress the response. This field is
- // "nullable" in order to interoperate seamlessly with clients not able to
- // implement the full compression tests by introspecting the call to verify
- // the response's compression status.
- ResponseCompressed *BoolValue `protobuf:"bytes,6,opt,name=response_compressed,json=responseCompressed,proto3" json:"response_compressed,omitempty"`
- // Whether server should return a given status
- ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
- // Whether the server should expect this request to be compressed.
- ExpectCompressed *BoolValue `protobuf:"bytes,8,opt,name=expect_compressed,json=expectCompressed,proto3" json:"expect_compressed,omitempty"`
- // Whether SimpleResponse should include server_id.
- FillServerId bool `protobuf:"varint,9,opt,name=fill_server_id,json=fillServerId,proto3" json:"fill_server_id,omitempty"`
- // Whether SimpleResponse should include grpclb_route_type.
- FillGrpclbRouteType bool `protobuf:"varint,10,opt,name=fill_grpclb_route_type,json=fillGrpclbRouteType,proto3" json:"fill_grpclb_route_type,omitempty"`
-}
-
-func (x *SimpleRequest) Reset() {
- *x = SimpleRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SimpleRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SimpleRequest) ProtoMessage() {}
-
-func (x *SimpleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SimpleRequest.ProtoReflect.Descriptor instead.
-func (*SimpleRequest) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *SimpleRequest) GetResponseType() PayloadType {
- if x != nil {
- return x.ResponseType
- }
- return PayloadType_COMPRESSABLE
-}
-
-func (x *SimpleRequest) GetResponseSize() int32 {
- if x != nil {
- return x.ResponseSize
- }
- return 0
-}
-
-func (x *SimpleRequest) GetPayload() *Payload {
- if x != nil {
- return x.Payload
- }
- return nil
-}
-
-func (x *SimpleRequest) GetFillUsername() bool {
- if x != nil {
- return x.FillUsername
- }
- return false
-}
-
-func (x *SimpleRequest) GetFillOauthScope() bool {
- if x != nil {
- return x.FillOauthScope
- }
- return false
-}
-
-func (x *SimpleRequest) GetResponseCompressed() *BoolValue {
- if x != nil {
- return x.ResponseCompressed
- }
- return nil
-}
-
-func (x *SimpleRequest) GetResponseStatus() *EchoStatus {
- if x != nil {
- return x.ResponseStatus
- }
- return nil
-}
-
-func (x *SimpleRequest) GetExpectCompressed() *BoolValue {
- if x != nil {
- return x.ExpectCompressed
- }
- return nil
-}
-
-func (x *SimpleRequest) GetFillServerId() bool {
- if x != nil {
- return x.FillServerId
- }
- return false
-}
-
-func (x *SimpleRequest) GetFillGrpclbRouteType() bool {
- if x != nil {
- return x.FillGrpclbRouteType
- }
- return false
-}
-
-// Unary response, as configured by the request.
-type SimpleResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Payload to increase message size.
- Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
- // The user the request came from, for verifying authentication was
- // successful when the client expected it.
- Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
- // OAuth scope.
- OauthScope string `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope,proto3" json:"oauth_scope,omitempty"`
- // Server WorkloadID. This must be unique among different server instances,
- // but the same across all RPC's made to a particular server instance.
- ServerId string `protobuf:"bytes,4,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
- // gRPCLB Path.
- GrpclbRouteType GrpclbRouteType `protobuf:"varint,5,opt,name=grpclb_route_type,json=grpclbRouteType,proto3,enum=grpc.testing.GrpclbRouteType" json:"grpclb_route_type,omitempty"`
- // Server hostname.
- Hostname string `protobuf:"bytes,6,opt,name=hostname,proto3" json:"hostname,omitempty"`
-}
-
-func (x *SimpleResponse) Reset() {
- *x = SimpleResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SimpleResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SimpleResponse) ProtoMessage() {}
-
-func (x *SimpleResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SimpleResponse.ProtoReflect.Descriptor instead.
-func (*SimpleResponse) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *SimpleResponse) GetPayload() *Payload {
- if x != nil {
- return x.Payload
- }
- return nil
-}
-
-func (x *SimpleResponse) GetUsername() string {
- if x != nil {
- return x.Username
- }
- return ""
-}
-
-func (x *SimpleResponse) GetOauthScope() string {
- if x != nil {
- return x.OauthScope
- }
- return ""
-}
-
-func (x *SimpleResponse) GetServerId() string {
- if x != nil {
- return x.ServerId
- }
- return ""
-}
-
-func (x *SimpleResponse) GetGrpclbRouteType() GrpclbRouteType {
- if x != nil {
- return x.GrpclbRouteType
- }
- return GrpclbRouteType_GRPCLB_ROUTE_TYPE_UNKNOWN
-}
-
-func (x *SimpleResponse) GetHostname() string {
- if x != nil {
- return x.Hostname
- }
- return ""
-}
-
-// Client-streaming request.
-type StreamingInputCallRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional input payload sent along with the request.
- Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
- // Whether the server should expect this request to be compressed. This field
- // is "nullable" in order to interoperate seamlessly with servers not able to
- // implement the full compression tests by introspecting the call to verify
- // the request's compression status.
- ExpectCompressed *BoolValue `protobuf:"bytes,2,opt,name=expect_compressed,json=expectCompressed,proto3" json:"expect_compressed,omitempty"`
-}
-
-func (x *StreamingInputCallRequest) Reset() {
- *x = StreamingInputCallRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StreamingInputCallRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StreamingInputCallRequest) ProtoMessage() {}
-
-func (x *StreamingInputCallRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StreamingInputCallRequest.ProtoReflect.Descriptor instead.
-func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *StreamingInputCallRequest) GetPayload() *Payload {
- if x != nil {
- return x.Payload
- }
- return nil
-}
-
-func (x *StreamingInputCallRequest) GetExpectCompressed() *BoolValue {
- if x != nil {
- return x.ExpectCompressed
- }
- return nil
-}
-
-// Client-streaming response.
-type StreamingInputCallResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Aggregated size of payloads received from the client.
- AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
-}
-
-func (x *StreamingInputCallResponse) Reset() {
- *x = StreamingInputCallResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StreamingInputCallResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StreamingInputCallResponse) ProtoMessage() {}
-
-func (x *StreamingInputCallResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StreamingInputCallResponse.ProtoReflect.Descriptor instead.
-func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
- if x != nil {
- return x.AggregatedPayloadSize
- }
- return 0
-}
-
-// Configuration for a particular response.
-type ResponseParameters struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Desired payload sizes in responses from the server.
- Size int32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"`
- // Desired interval between consecutive responses in the response stream in
- // microseconds.
- IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
- // Whether to request the server to compress the response. This field is
- // "nullable" in order to interoperate seamlessly with clients not able to
- // implement the full compression tests by introspecting the call to verify
- // the response's compression status.
- Compressed *BoolValue `protobuf:"bytes,3,opt,name=compressed,proto3" json:"compressed,omitempty"`
-}
-
-func (x *ResponseParameters) Reset() {
- *x = ResponseParameters{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ResponseParameters) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ResponseParameters) ProtoMessage() {}
-
-func (x *ResponseParameters) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ResponseParameters.ProtoReflect.Descriptor instead.
-func (*ResponseParameters) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *ResponseParameters) GetSize() int32 {
- if x != nil {
- return x.Size
- }
- return 0
-}
-
-func (x *ResponseParameters) GetIntervalUs() int32 {
- if x != nil {
- return x.IntervalUs
- }
- return 0
-}
-
-func (x *ResponseParameters) GetCompressed() *BoolValue {
- if x != nil {
- return x.Compressed
- }
- return nil
-}
-
-// Server-streaming request.
-type StreamingOutputCallRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Desired payload type in the response from the server.
- // If response_type is RANDOM, the payload from each response in the stream
- // might be of different types. This is to simulate a mixed type of payload
- // stream.
- ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=grpc.testing.PayloadType" json:"response_type,omitempty"`
- // Configuration for each expected response message.
- ResponseParameters []*ResponseParameters `protobuf:"bytes,2,rep,name=response_parameters,json=responseParameters,proto3" json:"response_parameters,omitempty"`
- // Optional input payload sent along with the request.
- Payload *Payload `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
- // Whether server should return a given status
- ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
-}
-
-func (x *StreamingOutputCallRequest) Reset() {
- *x = StreamingOutputCallRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StreamingOutputCallRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StreamingOutputCallRequest) ProtoMessage() {}
-
-func (x *StreamingOutputCallRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StreamingOutputCallRequest.ProtoReflect.Descriptor instead.
-func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *StreamingOutputCallRequest) GetResponseType() PayloadType {
- if x != nil {
- return x.ResponseType
- }
- return PayloadType_COMPRESSABLE
-}
-
-func (x *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
- if x != nil {
- return x.ResponseParameters
- }
- return nil
-}
-
-func (x *StreamingOutputCallRequest) GetPayload() *Payload {
- if x != nil {
- return x.Payload
- }
- return nil
-}
-
-func (x *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus {
- if x != nil {
- return x.ResponseStatus
- }
- return nil
-}
-
-// Server-streaming response, as configured by the request and parameters.
-type StreamingOutputCallResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Payload to increase response size.
- Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-}
-
-func (x *StreamingOutputCallResponse) Reset() {
- *x = StreamingOutputCallResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StreamingOutputCallResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StreamingOutputCallResponse) ProtoMessage() {}
-
-func (x *StreamingOutputCallResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StreamingOutputCallResponse.ProtoReflect.Descriptor instead.
-func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *StreamingOutputCallResponse) GetPayload() *Payload {
- if x != nil {
- return x.Payload
- }
- return nil
-}
-
-// For reconnect interop test only.
-// Client tells server what reconnection parameters it used.
-type ReconnectParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- MaxReconnectBackoffMs int32 `protobuf:"varint,1,opt,name=max_reconnect_backoff_ms,json=maxReconnectBackoffMs,proto3" json:"max_reconnect_backoff_ms,omitempty"`
-}
-
-func (x *ReconnectParams) Reset() {
- *x = ReconnectParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ReconnectParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReconnectParams) ProtoMessage() {}
-
-func (x *ReconnectParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReconnectParams.ProtoReflect.Descriptor instead.
-func (*ReconnectParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *ReconnectParams) GetMaxReconnectBackoffMs() int32 {
- if x != nil {
- return x.MaxReconnectBackoffMs
- }
- return 0
-}
-
-// For reconnect interop test only.
-// Server tells client whether its reconnects are following the spec and the
-// reconnect backoffs it saw.
-type ReconnectInfo struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Passed bool `protobuf:"varint,1,opt,name=passed,proto3" json:"passed,omitempty"`
- BackoffMs []int32 `protobuf:"varint,2,rep,packed,name=backoff_ms,json=backoffMs,proto3" json:"backoff_ms,omitempty"`
-}
-
-func (x *ReconnectInfo) Reset() {
- *x = ReconnectInfo{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ReconnectInfo) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReconnectInfo) ProtoMessage() {}
-
-func (x *ReconnectInfo) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReconnectInfo.ProtoReflect.Descriptor instead.
-func (*ReconnectInfo) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *ReconnectInfo) GetPassed() bool {
- if x != nil {
- return x.Passed
- }
- return false
-}
-
-func (x *ReconnectInfo) GetBackoffMs() []int32 {
- if x != nil {
- return x.BackoffMs
- }
- return nil
-}
-
-type LoadBalancerStatsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Request stats for the next num_rpcs sent by client.
- NumRpcs int32 `protobuf:"varint,1,opt,name=num_rpcs,json=numRpcs,proto3" json:"num_rpcs,omitempty"`
- // If num_rpcs have not completed within timeout_sec, return partial results.
- TimeoutSec int32 `protobuf:"varint,2,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"`
-}
-
-func (x *LoadBalancerStatsRequest) Reset() {
- *x = LoadBalancerStatsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerStatsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerStatsRequest) ProtoMessage() {}
-
-func (x *LoadBalancerStatsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerStatsRequest.ProtoReflect.Descriptor instead.
-func (*LoadBalancerStatsRequest) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *LoadBalancerStatsRequest) GetNumRpcs() int32 {
- if x != nil {
- return x.NumRpcs
- }
- return 0
-}
-
-func (x *LoadBalancerStatsRequest) GetTimeoutSec() int32 {
- if x != nil {
- return x.TimeoutSec
- }
- return 0
-}
-
-type LoadBalancerStatsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The number of completed RPCs for each peer.
- RpcsByPeer map[string]int32 `protobuf:"bytes,1,rep,name=rpcs_by_peer,json=rpcsByPeer,proto3" json:"rpcs_by_peer,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // The number of RPCs that failed to record a remote peer.
- NumFailures int32 `protobuf:"varint,2,opt,name=num_failures,json=numFailures,proto3" json:"num_failures,omitempty"`
- RpcsByMethod map[string]*LoadBalancerStatsResponse_RpcsByPeer `protobuf:"bytes,3,rep,name=rpcs_by_method,json=rpcsByMethod,proto3" json:"rpcs_by_method,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *LoadBalancerStatsResponse) Reset() {
- *x = LoadBalancerStatsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerStatsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerStatsResponse) ProtoMessage() {}
-
-func (x *LoadBalancerStatsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerStatsResponse.ProtoReflect.Descriptor instead.
-func (*LoadBalancerStatsResponse) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *LoadBalancerStatsResponse) GetRpcsByPeer() map[string]int32 {
- if x != nil {
- return x.RpcsByPeer
- }
- return nil
-}
-
-func (x *LoadBalancerStatsResponse) GetNumFailures() int32 {
- if x != nil {
- return x.NumFailures
- }
- return 0
-}
-
-func (x *LoadBalancerStatsResponse) GetRpcsByMethod() map[string]*LoadBalancerStatsResponse_RpcsByPeer {
- if x != nil {
- return x.RpcsByMethod
- }
- return nil
-}
-
-// Request for retrieving a test client's accumulated stats.
-type LoadBalancerAccumulatedStatsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *LoadBalancerAccumulatedStatsRequest) Reset() {
- *x = LoadBalancerAccumulatedStatsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerAccumulatedStatsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerAccumulatedStatsRequest) ProtoMessage() {}
-
-func (x *LoadBalancerAccumulatedStatsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerAccumulatedStatsRequest.ProtoReflect.Descriptor instead.
-func (*LoadBalancerAccumulatedStatsRequest) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{14}
-}
-
-// Accumulated stats for RPCs sent by a test client.
-type LoadBalancerAccumulatedStatsResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The total number of RPCs have ever issued for each type.
- // Deprecated: use stats_per_method.rpcs_started instead.
- //
- // Deprecated: Do not use.
- NumRpcsStartedByMethod map[string]int32 `protobuf:"bytes,1,rep,name=num_rpcs_started_by_method,json=numRpcsStartedByMethod,proto3" json:"num_rpcs_started_by_method,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // The total number of RPCs have ever completed successfully for each type.
- // Deprecated: use stats_per_method.result instead.
- //
- // Deprecated: Do not use.
- NumRpcsSucceededByMethod map[string]int32 `protobuf:"bytes,2,rep,name=num_rpcs_succeeded_by_method,json=numRpcsSucceededByMethod,proto3" json:"num_rpcs_succeeded_by_method,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // The total number of RPCs have ever failed for each type.
- // Deprecated: use stats_per_method.result instead.
- //
- // Deprecated: Do not use.
- NumRpcsFailedByMethod map[string]int32 `protobuf:"bytes,3,rep,name=num_rpcs_failed_by_method,json=numRpcsFailedByMethod,proto3" json:"num_rpcs_failed_by_method,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // Per-method RPC statistics. The key is the RpcType in string form; e.g.
- // 'EMPTY_CALL' or 'UNARY_CALL'
- StatsPerMethod map[string]*LoadBalancerAccumulatedStatsResponse_MethodStats `protobuf:"bytes,4,rep,name=stats_per_method,json=statsPerMethod,proto3" json:"stats_per_method,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *LoadBalancerAccumulatedStatsResponse) Reset() {
- *x = LoadBalancerAccumulatedStatsResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerAccumulatedStatsResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerAccumulatedStatsResponse) ProtoMessage() {}
-
-func (x *LoadBalancerAccumulatedStatsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerAccumulatedStatsResponse.ProtoReflect.Descriptor instead.
-func (*LoadBalancerAccumulatedStatsResponse) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{15}
-}
-
-// Deprecated: Do not use.
-func (x *LoadBalancerAccumulatedStatsResponse) GetNumRpcsStartedByMethod() map[string]int32 {
- if x != nil {
- return x.NumRpcsStartedByMethod
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *LoadBalancerAccumulatedStatsResponse) GetNumRpcsSucceededByMethod() map[string]int32 {
- if x != nil {
- return x.NumRpcsSucceededByMethod
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *LoadBalancerAccumulatedStatsResponse) GetNumRpcsFailedByMethod() map[string]int32 {
- if x != nil {
- return x.NumRpcsFailedByMethod
- }
- return nil
-}
-
-func (x *LoadBalancerAccumulatedStatsResponse) GetStatsPerMethod() map[string]*LoadBalancerAccumulatedStatsResponse_MethodStats {
- if x != nil {
- return x.StatsPerMethod
- }
- return nil
-}
-
-// Configurations for a test client.
-type ClientConfigureRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The types of RPCs the client sends.
- Types []ClientConfigureRequest_RpcType `protobuf:"varint,1,rep,packed,name=types,proto3,enum=grpc.testing.ClientConfigureRequest_RpcType" json:"types,omitempty"`
- // The collection of custom metadata to be attached to RPCs sent by the client.
- Metadata []*ClientConfigureRequest_Metadata `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty"`
- // The deadline to use, in seconds, for all RPCs. If unset or zero, the
- // client will use the default from the command-line.
- TimeoutSec int32 `protobuf:"varint,3,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"`
-}
-
-func (x *ClientConfigureRequest) Reset() {
- *x = ClientConfigureRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientConfigureRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientConfigureRequest) ProtoMessage() {}
-
-func (x *ClientConfigureRequest) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientConfigureRequest.ProtoReflect.Descriptor instead.
-func (*ClientConfigureRequest) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *ClientConfigureRequest) GetTypes() []ClientConfigureRequest_RpcType {
- if x != nil {
- return x.Types
- }
- return nil
-}
-
-func (x *ClientConfigureRequest) GetMetadata() []*ClientConfigureRequest_Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *ClientConfigureRequest) GetTimeoutSec() int32 {
- if x != nil {
- return x.TimeoutSec
- }
- return 0
-}
-
-// Response for updating a test client's configuration.
-type ClientConfigureResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ClientConfigureResponse) Reset() {
- *x = ClientConfigureResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientConfigureResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientConfigureResponse) ProtoMessage() {}
-
-func (x *ClientConfigureResponse) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientConfigureResponse.ProtoReflect.Descriptor instead.
-func (*ClientConfigureResponse) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{17}
-}
-
-type LoadBalancerStatsResponse_RpcsByPeer struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The number of completed RPCs for each peer.
- RpcsByPeer map[string]int32 `protobuf:"bytes,1,rep,name=rpcs_by_peer,json=rpcsByPeer,proto3" json:"rpcs_by_peer,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-}
-
-func (x *LoadBalancerStatsResponse_RpcsByPeer) Reset() {
- *x = LoadBalancerStatsResponse_RpcsByPeer{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerStatsResponse_RpcsByPeer) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerStatsResponse_RpcsByPeer) ProtoMessage() {}
-
-func (x *LoadBalancerStatsResponse_RpcsByPeer) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerStatsResponse_RpcsByPeer.ProtoReflect.Descriptor instead.
-func (*LoadBalancerStatsResponse_RpcsByPeer) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{13, 0}
-}
-
-func (x *LoadBalancerStatsResponse_RpcsByPeer) GetRpcsByPeer() map[string]int32 {
- if x != nil {
- return x.RpcsByPeer
- }
- return nil
-}
-
-type LoadBalancerAccumulatedStatsResponse_MethodStats struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The number of RPCs that were started for this method.
- RpcsStarted int32 `protobuf:"varint,1,opt,name=rpcs_started,json=rpcsStarted,proto3" json:"rpcs_started,omitempty"`
- // The number of RPCs that completed with each status for this method. The
- // key is the integral value of a google.rpc.Code; the value is the count.
- Result map[int32]int32 `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-}
-
-func (x *LoadBalancerAccumulatedStatsResponse_MethodStats) Reset() {
- *x = LoadBalancerAccumulatedStatsResponse_MethodStats{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerAccumulatedStatsResponse_MethodStats) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerAccumulatedStatsResponse_MethodStats) ProtoMessage() {}
-
-func (x *LoadBalancerAccumulatedStatsResponse_MethodStats) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[25]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerAccumulatedStatsResponse_MethodStats.ProtoReflect.Descriptor instead.
-func (*LoadBalancerAccumulatedStatsResponse_MethodStats) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{15, 3}
-}
-
-func (x *LoadBalancerAccumulatedStatsResponse_MethodStats) GetRpcsStarted() int32 {
- if x != nil {
- return x.RpcsStarted
- }
- return 0
-}
-
-func (x *LoadBalancerAccumulatedStatsResponse_MethodStats) GetResult() map[int32]int32 {
- if x != nil {
- return x.Result
- }
- return nil
-}
-
-// Metadata to be attached for the given type of RPCs.
-type ClientConfigureRequest_Metadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type ClientConfigureRequest_RpcType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.testing.ClientConfigureRequest_RpcType" json:"type,omitempty"`
- Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
- Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *ClientConfigureRequest_Metadata) Reset() {
- *x = ClientConfigureRequest_Metadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_messages_proto_msgTypes[28]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientConfigureRequest_Metadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientConfigureRequest_Metadata) ProtoMessage() {}
-
-func (x *ClientConfigureRequest_Metadata) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_messages_proto_msgTypes[28]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientConfigureRequest_Metadata.ProtoReflect.Descriptor instead.
-func (*ClientConfigureRequest_Metadata) Descriptor() ([]byte, []int) {
- return file_grpc_testing_messages_proto_rawDescGZIP(), []int{16, 0}
-}
-
-func (x *ClientConfigureRequest_Metadata) GetType() ClientConfigureRequest_RpcType {
- if x != nil {
- return x.Type
- }
- return ClientConfigureRequest_EMPTY_CALL
-}
-
-func (x *ClientConfigureRequest_Metadata) GetKey() string {
- if x != nil {
- return x.Key
- }
- return ""
-}
-
-func (x *ClientConfigureRequest_Metadata) GetValue() string {
- if x != nil {
- return x.Value
- }
- return ""
-}
-
-var File_grpc_testing_messages_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_messages_proto_rawDesc = []byte{
- 0x0a, 0x1b, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x21, 0x0a, 0x09, 0x42,
- 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4c,
- 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79,
- 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x3a, 0x0a, 0x0a,
- 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
- 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18,
- 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x04, 0x0a, 0x0d, 0x53, 0x69, 0x6d,
- 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12,
- 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
- 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
- 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x55, 0x73, 0x65,
- 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x61,
- 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12,
- 0x48, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70,
- 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43,
- 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x44, 0x0a, 0x11,
- 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65,
- 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73,
- 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x66, 0x69, 0x6c, 0x6c,
- 0x5f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x6c, 0x47, 0x72,
- 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x82, 0x02,
- 0x0a, 0x0e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
- 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a,
- 0x0b, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1b,
- 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x67,
- 0x72, 0x70, 0x63, 0x6c, 0x62, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74,
- 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75,
- 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
- 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67,
- 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
- 0x64, 0x12, 0x44, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70,
- 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6d,
- 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
- 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74,
- 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x82, 0x01,
- 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
- 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65,
- 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69,
- 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6d,
- 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x6f, 0x6f,
- 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73,
- 0x65, 0x64, 0x22, 0xa3, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67,
- 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54,
- 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x51, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61,
- 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
- 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
- 0x74, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61,
- 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x63,
- 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
- 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52,
- 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x4a, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f,
- 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6d,
- 0x61, 0x78, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x62, 0x61, 0x63,
- 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d,
- 0x61, 0x78, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x6f,
- 0x66, 0x66, 0x4d, 0x73, 0x22, 0x46, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a,
- 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x05, 0x52, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4d, 0x73, 0x22, 0x56, 0x0a, 0x18,
- 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f,
- 0x72, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52,
- 0x70, 0x63, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73,
- 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
- 0x74, 0x53, 0x65, 0x63, 0x22, 0xe2, 0x04, 0x0a, 0x19, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x65,
- 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0a, 0x72, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x12, 0x21, 0x0a,
- 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73,
- 0x12, 0x5f, 0x0a, 0x0e, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x68,
- 0x6f, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x1a, 0xb1, 0x01, 0x0a, 0x0a, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72,
- 0x12, 0x64, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x65, 0x65, 0x72,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
- 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42,
- 0x79, 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x70, 0x63, 0x73,
- 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x0f, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79,
- 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50,
- 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x11, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x4d, 0x65,
- 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x6f, 0x61,
- 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c,
- 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x22, 0x86, 0x09, 0x0a, 0x24, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
- 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x1a, 0x6e, 0x75,
- 0x6d, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62,
- 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f,
- 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75,
- 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65,
- 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02,
- 0x18, 0x01, 0x52, 0x16, 0x6e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74,
- 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x94, 0x01, 0x0a, 0x1c, 0x6e,
- 0x75, 0x6d, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65,
- 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x41, 0x63, 0x63,
- 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x53, 0x75, 0x63,
- 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x18, 0x6e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73,
- 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x12, 0x8b, 0x01, 0x0a, 0x19, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x66,
- 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
- 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x52, 0x70, 0x63,
- 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x52, 0x70, 0x63,
- 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12,
- 0x70, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74,
- 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
- 0x61, 0x6e, 0x63, 0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64,
- 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74,
- 0x61, 0x74, 0x73, 0x50, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x50, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x1a, 0x49, 0x0a, 0x1b, 0x4e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x53, 0x74, 0x61, 0x72,
- 0x74, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d,
- 0x4e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64,
- 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x48, 0x0a, 0x1a, 0x4e, 0x75, 0x6d,
- 0x52, 0x70, 0x63, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68,
- 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0xcf, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x74,
- 0x61, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x73, 0x53,
- 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61,
- 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50,
- 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x54, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f,
- 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75,
- 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe9, 0x02, 0x0a, 0x16, 0x43, 0x6c,
- 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
- 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70,
- 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73,
- 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
- 0x74, 0x53, 0x65, 0x63, 0x1a, 0x74, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c,
- 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x29, 0x0a, 0x07, 0x52, 0x70,
- 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x43,
- 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x43,
- 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x2a, 0x1f, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12,
- 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10,
- 0x00, 0x2a, 0x6f, 0x0a, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52,
- 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
- 0x4e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x47, 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f,
- 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43,
- 0x4b, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f,
- 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44,
- 0x10, 0x02, 0x42, 0x4e, 0x0a, 0x1b, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f,
- 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_testing_messages_proto_rawDescOnce sync.Once
- file_grpc_testing_messages_proto_rawDescData = file_grpc_testing_messages_proto_rawDesc
-)
-
-func file_grpc_testing_messages_proto_rawDescGZIP() []byte {
- file_grpc_testing_messages_proto_rawDescOnce.Do(func() {
- file_grpc_testing_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_testing_messages_proto_rawDescData)
- })
- return file_grpc_testing_messages_proto_rawDescData
-}
-
-var file_grpc_testing_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_grpc_testing_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
-var file_grpc_testing_messages_proto_goTypes = []interface{}{
- (PayloadType)(0), // 0: grpc.testing.PayloadType
- (GrpclbRouteType)(0), // 1: grpc.testing.GrpclbRouteType
- (ClientConfigureRequest_RpcType)(0), // 2: grpc.testing.ClientConfigureRequest.RpcType
- (*BoolValue)(nil), // 3: grpc.testing.BoolValue
- (*Payload)(nil), // 4: grpc.testing.Payload
- (*EchoStatus)(nil), // 5: grpc.testing.EchoStatus
- (*SimpleRequest)(nil), // 6: grpc.testing.SimpleRequest
- (*SimpleResponse)(nil), // 7: grpc.testing.SimpleResponse
- (*StreamingInputCallRequest)(nil), // 8: grpc.testing.StreamingInputCallRequest
- (*StreamingInputCallResponse)(nil), // 9: grpc.testing.StreamingInputCallResponse
- (*ResponseParameters)(nil), // 10: grpc.testing.ResponseParameters
- (*StreamingOutputCallRequest)(nil), // 11: grpc.testing.StreamingOutputCallRequest
- (*StreamingOutputCallResponse)(nil), // 12: grpc.testing.StreamingOutputCallResponse
- (*ReconnectParams)(nil), // 13: grpc.testing.ReconnectParams
- (*ReconnectInfo)(nil), // 14: grpc.testing.ReconnectInfo
- (*LoadBalancerStatsRequest)(nil), // 15: grpc.testing.LoadBalancerStatsRequest
- (*LoadBalancerStatsResponse)(nil), // 16: grpc.testing.LoadBalancerStatsResponse
- (*LoadBalancerAccumulatedStatsRequest)(nil), // 17: grpc.testing.LoadBalancerAccumulatedStatsRequest
- (*LoadBalancerAccumulatedStatsResponse)(nil), // 18: grpc.testing.LoadBalancerAccumulatedStatsResponse
- (*ClientConfigureRequest)(nil), // 19: grpc.testing.ClientConfigureRequest
- (*ClientConfigureResponse)(nil), // 20: grpc.testing.ClientConfigureResponse
- (*LoadBalancerStatsResponse_RpcsByPeer)(nil), // 21: grpc.testing.LoadBalancerStatsResponse.RpcsByPeer
- nil, // 22: grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry
- nil, // 23: grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry
- nil, // 24: grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.RpcsByPeerEntry
- nil, // 25: grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsStartedByMethodEntry
- nil, // 26: grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsSucceededByMethodEntry
- nil, // 27: grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsFailedByMethodEntry
- (*LoadBalancerAccumulatedStatsResponse_MethodStats)(nil), // 28: grpc.testing.LoadBalancerAccumulatedStatsResponse.MethodStats
- nil, // 29: grpc.testing.LoadBalancerAccumulatedStatsResponse.StatsPerMethodEntry
- nil, // 30: grpc.testing.LoadBalancerAccumulatedStatsResponse.MethodStats.ResultEntry
- (*ClientConfigureRequest_Metadata)(nil), // 31: grpc.testing.ClientConfigureRequest.Metadata
-}
-var file_grpc_testing_messages_proto_depIdxs = []int32{
- 0, // 0: grpc.testing.Payload.type:type_name -> grpc.testing.PayloadType
- 0, // 1: grpc.testing.SimpleRequest.response_type:type_name -> grpc.testing.PayloadType
- 4, // 2: grpc.testing.SimpleRequest.payload:type_name -> grpc.testing.Payload
- 3, // 3: grpc.testing.SimpleRequest.response_compressed:type_name -> grpc.testing.BoolValue
- 5, // 4: grpc.testing.SimpleRequest.response_status:type_name -> grpc.testing.EchoStatus
- 3, // 5: grpc.testing.SimpleRequest.expect_compressed:type_name -> grpc.testing.BoolValue
- 4, // 6: grpc.testing.SimpleResponse.payload:type_name -> grpc.testing.Payload
- 1, // 7: grpc.testing.SimpleResponse.grpclb_route_type:type_name -> grpc.testing.GrpclbRouteType
- 4, // 8: grpc.testing.StreamingInputCallRequest.payload:type_name -> grpc.testing.Payload
- 3, // 9: grpc.testing.StreamingInputCallRequest.expect_compressed:type_name -> grpc.testing.BoolValue
- 3, // 10: grpc.testing.ResponseParameters.compressed:type_name -> grpc.testing.BoolValue
- 0, // 11: grpc.testing.StreamingOutputCallRequest.response_type:type_name -> grpc.testing.PayloadType
- 10, // 12: grpc.testing.StreamingOutputCallRequest.response_parameters:type_name -> grpc.testing.ResponseParameters
- 4, // 13: grpc.testing.StreamingOutputCallRequest.payload:type_name -> grpc.testing.Payload
- 5, // 14: grpc.testing.StreamingOutputCallRequest.response_status:type_name -> grpc.testing.EchoStatus
- 4, // 15: grpc.testing.StreamingOutputCallResponse.payload:type_name -> grpc.testing.Payload
- 22, // 16: grpc.testing.LoadBalancerStatsResponse.rpcs_by_peer:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry
- 23, // 17: grpc.testing.LoadBalancerStatsResponse.rpcs_by_method:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry
- 25, // 18: grpc.testing.LoadBalancerAccumulatedStatsResponse.num_rpcs_started_by_method:type_name -> grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsStartedByMethodEntry
- 26, // 19: grpc.testing.LoadBalancerAccumulatedStatsResponse.num_rpcs_succeeded_by_method:type_name -> grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsSucceededByMethodEntry
- 27, // 20: grpc.testing.LoadBalancerAccumulatedStatsResponse.num_rpcs_failed_by_method:type_name -> grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsFailedByMethodEntry
- 29, // 21: grpc.testing.LoadBalancerAccumulatedStatsResponse.stats_per_method:type_name -> grpc.testing.LoadBalancerAccumulatedStatsResponse.StatsPerMethodEntry
- 2, // 22: grpc.testing.ClientConfigureRequest.types:type_name -> grpc.testing.ClientConfigureRequest.RpcType
- 31, // 23: grpc.testing.ClientConfigureRequest.metadata:type_name -> grpc.testing.ClientConfigureRequest.Metadata
- 24, // 24: grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.rpcs_by_peer:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.RpcsByPeerEntry
- 21, // 25: grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry.value:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeer
- 30, // 26: grpc.testing.LoadBalancerAccumulatedStatsResponse.MethodStats.result:type_name -> grpc.testing.LoadBalancerAccumulatedStatsResponse.MethodStats.ResultEntry
- 28, // 27: grpc.testing.LoadBalancerAccumulatedStatsResponse.StatsPerMethodEntry.value:type_name -> grpc.testing.LoadBalancerAccumulatedStatsResponse.MethodStats
- 2, // 28: grpc.testing.ClientConfigureRequest.Metadata.type:type_name -> grpc.testing.ClientConfigureRequest.RpcType
- 29, // [29:29] is the sub-list for method output_type
- 29, // [29:29] is the sub-list for method input_type
- 29, // [29:29] is the sub-list for extension type_name
- 29, // [29:29] is the sub-list for extension extendee
- 0, // [0:29] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_messages_proto_init() }
-func file_grpc_testing_messages_proto_init() {
- if File_grpc_testing_messages_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_testing_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BoolValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Payload); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EchoStatus); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SimpleRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SimpleResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamingInputCallRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamingInputCallResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResponseParameters); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamingOutputCallRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamingOutputCallResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReconnectParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReconnectInfo); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerStatsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerStatsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerAccumulatedStatsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerAccumulatedStatsResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientConfigureRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientConfigureResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerStatsResponse_RpcsByPeer); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerAccumulatedStatsResponse_MethodStats); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_messages_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientConfigureRequest_Metadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_messages_proto_rawDesc,
- NumEnums: 3,
- NumMessages: 29,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_testing_messages_proto_goTypes,
- DependencyIndexes: file_grpc_testing_messages_proto_depIdxs,
- EnumInfos: file_grpc_testing_messages_proto_enumTypes,
- MessageInfos: file_grpc_testing_messages_proto_msgTypes,
- }.Build()
- File_grpc_testing_messages_proto = out.File
- file_grpc_testing_messages_proto_rawDesc = nil
- file_grpc_testing_messages_proto_goTypes = nil
- file_grpc_testing_messages_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/payloads.pb.go b/gen/proto/grpc/testing/payloads.pb.go
deleted file mode 100644
index a7cd863..0000000
--- a/gen/proto/grpc/testing/payloads.pb.go
+++ /dev/null
@@ -1,427 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/payloads.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type ByteBufferParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ReqSize int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
- RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
-}
-
-func (x *ByteBufferParams) Reset() {
- *x = ByteBufferParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_payloads_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ByteBufferParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ByteBufferParams) ProtoMessage() {}
-
-func (x *ByteBufferParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_payloads_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ByteBufferParams.ProtoReflect.Descriptor instead.
-func (*ByteBufferParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_payloads_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ByteBufferParams) GetReqSize() int32 {
- if x != nil {
- return x.ReqSize
- }
- return 0
-}
-
-func (x *ByteBufferParams) GetRespSize() int32 {
- if x != nil {
- return x.RespSize
- }
- return 0
-}
-
-type SimpleProtoParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ReqSize int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
- RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
-}
-
-func (x *SimpleProtoParams) Reset() {
- *x = SimpleProtoParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_payloads_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SimpleProtoParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SimpleProtoParams) ProtoMessage() {}
-
-func (x *SimpleProtoParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_payloads_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SimpleProtoParams.ProtoReflect.Descriptor instead.
-func (*SimpleProtoParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_payloads_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *SimpleProtoParams) GetReqSize() int32 {
- if x != nil {
- return x.ReqSize
- }
- return 0
-}
-
-func (x *SimpleProtoParams) GetRespSize() int32 {
- if x != nil {
- return x.RespSize
- }
- return 0
-}
-
-type ComplexProtoParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ComplexProtoParams) Reset() {
- *x = ComplexProtoParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_payloads_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ComplexProtoParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ComplexProtoParams) ProtoMessage() {}
-
-func (x *ComplexProtoParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_payloads_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ComplexProtoParams.ProtoReflect.Descriptor instead.
-func (*ComplexProtoParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_payloads_proto_rawDescGZIP(), []int{2}
-}
-
-type PayloadConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Payload:
- // *PayloadConfig_BytebufParams
- // *PayloadConfig_SimpleParams
- // *PayloadConfig_ComplexParams
- Payload isPayloadConfig_Payload `protobuf_oneof:"payload"`
-}
-
-func (x *PayloadConfig) Reset() {
- *x = PayloadConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_payloads_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PayloadConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PayloadConfig) ProtoMessage() {}
-
-func (x *PayloadConfig) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_payloads_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PayloadConfig.ProtoReflect.Descriptor instead.
-func (*PayloadConfig) Descriptor() ([]byte, []int) {
- return file_grpc_testing_payloads_proto_rawDescGZIP(), []int{3}
-}
-
-func (m *PayloadConfig) GetPayload() isPayloadConfig_Payload {
- if m != nil {
- return m.Payload
- }
- return nil
-}
-
-func (x *PayloadConfig) GetBytebufParams() *ByteBufferParams {
- if x, ok := x.GetPayload().(*PayloadConfig_BytebufParams); ok {
- return x.BytebufParams
- }
- return nil
-}
-
-func (x *PayloadConfig) GetSimpleParams() *SimpleProtoParams {
- if x, ok := x.GetPayload().(*PayloadConfig_SimpleParams); ok {
- return x.SimpleParams
- }
- return nil
-}
-
-func (x *PayloadConfig) GetComplexParams() *ComplexProtoParams {
- if x, ok := x.GetPayload().(*PayloadConfig_ComplexParams); ok {
- return x.ComplexParams
- }
- return nil
-}
-
-type isPayloadConfig_Payload interface {
- isPayloadConfig_Payload()
-}
-
-type PayloadConfig_BytebufParams struct {
- BytebufParams *ByteBufferParams `protobuf:"bytes,1,opt,name=bytebuf_params,json=bytebufParams,proto3,oneof"`
-}
-
-type PayloadConfig_SimpleParams struct {
- SimpleParams *SimpleProtoParams `protobuf:"bytes,2,opt,name=simple_params,json=simpleParams,proto3,oneof"`
-}
-
-type PayloadConfig_ComplexParams struct {
- ComplexParams *ComplexProtoParams `protobuf:"bytes,3,opt,name=complex_params,json=complexParams,proto3,oneof"`
-}
-
-func (*PayloadConfig_BytebufParams) isPayloadConfig_Payload() {}
-
-func (*PayloadConfig_SimpleParams) isPayloadConfig_Payload() {}
-
-func (*PayloadConfig_ComplexParams) isPayloadConfig_Payload() {}
-
-var File_grpc_testing_payloads_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_payloads_proto_rawDesc = []byte{
- 0x0a, 0x1b, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70,
- 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4a, 0x0a, 0x10, 0x42,
- 0x79, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
- 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x07, 0x72, 0x65, 0x71, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65,
- 0x73, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72,
- 0x65, 0x73, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x11, 0x53, 0x69, 0x6d, 0x70, 0x6c,
- 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x0a, 0x08,
- 0x72, 0x65, 0x71, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
- 0x72, 0x65, 0x71, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x5f,
- 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70,
- 0x53, 0x69, 0x7a, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xf6, 0x01, 0x0a, 0x0d, 0x50,
- 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0e,
- 0x62, 0x79, 0x74, 0x65, 0x62, 0x75, 0x66, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x61,
- 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x62, 0x75, 0x66, 0x50,
- 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x46, 0x0a, 0x0d, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f,
- 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70,
- 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52,
- 0x0c, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x49, 0x0a,
- 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
- 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c,
- 0x6f, 0x61, 0x64, 0x42, 0x53, 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x0d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63,
- 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63,
- 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_testing_payloads_proto_rawDescOnce sync.Once
- file_grpc_testing_payloads_proto_rawDescData = file_grpc_testing_payloads_proto_rawDesc
-)
-
-func file_grpc_testing_payloads_proto_rawDescGZIP() []byte {
- file_grpc_testing_payloads_proto_rawDescOnce.Do(func() {
- file_grpc_testing_payloads_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_testing_payloads_proto_rawDescData)
- })
- return file_grpc_testing_payloads_proto_rawDescData
-}
-
-var file_grpc_testing_payloads_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_grpc_testing_payloads_proto_goTypes = []interface{}{
- (*ByteBufferParams)(nil), // 0: grpc.testing.ByteBufferParams
- (*SimpleProtoParams)(nil), // 1: grpc.testing.SimpleProtoParams
- (*ComplexProtoParams)(nil), // 2: grpc.testing.ComplexProtoParams
- (*PayloadConfig)(nil), // 3: grpc.testing.PayloadConfig
-}
-var file_grpc_testing_payloads_proto_depIdxs = []int32{
- 0, // 0: grpc.testing.PayloadConfig.bytebuf_params:type_name -> grpc.testing.ByteBufferParams
- 1, // 1: grpc.testing.PayloadConfig.simple_params:type_name -> grpc.testing.SimpleProtoParams
- 2, // 2: grpc.testing.PayloadConfig.complex_params:type_name -> grpc.testing.ComplexProtoParams
- 3, // [3:3] is the sub-list for method output_type
- 3, // [3:3] is the sub-list for method input_type
- 3, // [3:3] is the sub-list for extension type_name
- 3, // [3:3] is the sub-list for extension extendee
- 0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_payloads_proto_init() }
-func file_grpc_testing_payloads_proto_init() {
- if File_grpc_testing_payloads_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_testing_payloads_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ByteBufferParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_payloads_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SimpleProtoParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_payloads_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ComplexProtoParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_payloads_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PayloadConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_grpc_testing_payloads_proto_msgTypes[3].OneofWrappers = []interface{}{
- (*PayloadConfig_BytebufParams)(nil),
- (*PayloadConfig_SimpleParams)(nil),
- (*PayloadConfig_ComplexParams)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_payloads_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 4,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_testing_payloads_proto_goTypes,
- DependencyIndexes: file_grpc_testing_payloads_proto_depIdxs,
- MessageInfos: file_grpc_testing_payloads_proto_msgTypes,
- }.Build()
- File_grpc_testing_payloads_proto = out.File
- file_grpc_testing_payloads_proto_rawDesc = nil
- file_grpc_testing_payloads_proto_goTypes = nil
- file_grpc_testing_payloads_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/report_qps_scenario_service.pb.go b/gen/proto/grpc/testing/report_qps_scenario_service.pb.go
deleted file mode 100644
index 119a831..0000000
--- a/gen/proto/grpc/testing/report_qps_scenario_service.pb.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/report_qps_scenario_service.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-var File_grpc_testing_report_qps_scenario_service_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_report_qps_scenario_service_proto_rawDesc = []byte{
- 0x0a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x71, 0x70, 0x73, 0x5f, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72,
- 0x69, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x1a,
- 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6f, 0x6e,
- 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5e, 0x0a, 0x18, 0x52, 0x65,
- 0x70, 0x6f, 0x72, 0x74, 0x51, 0x70, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x53,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x12, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x42, 0x63, 0x0a, 0x0f, 0x69, 0x6f,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x1d, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x51, 0x70, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f,
- 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69,
- 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62,
- 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_grpc_testing_report_qps_scenario_service_proto_goTypes = []interface{}{
- (*ScenarioResult)(nil), // 0: grpc.testing.ScenarioResult
- (*Void)(nil), // 1: grpc.testing.Void
-}
-var file_grpc_testing_report_qps_scenario_service_proto_depIdxs = []int32{
- 0, // 0: grpc.testing.ReportQpsScenarioService.ReportScenario:input_type -> grpc.testing.ScenarioResult
- 1, // 1: grpc.testing.ReportQpsScenarioService.ReportScenario:output_type -> grpc.testing.Void
- 1, // [1:2] is the sub-list for method output_type
- 0, // [0:1] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_report_qps_scenario_service_proto_init() }
-func file_grpc_testing_report_qps_scenario_service_proto_init() {
- if File_grpc_testing_report_qps_scenario_service_proto != nil {
- return
- }
- file_grpc_testing_control_proto_init()
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_report_qps_scenario_service_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 0,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_testing_report_qps_scenario_service_proto_goTypes,
- DependencyIndexes: file_grpc_testing_report_qps_scenario_service_proto_depIdxs,
- }.Build()
- File_grpc_testing_report_qps_scenario_service_proto = out.File
- file_grpc_testing_report_qps_scenario_service_proto_rawDesc = nil
- file_grpc_testing_report_qps_scenario_service_proto_goTypes = nil
- file_grpc_testing_report_qps_scenario_service_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/stats.pb.go b/gen/proto/grpc/testing/stats.pb.go
deleted file mode 100644
index 708bb8c..0000000
--- a/gen/proto/grpc/testing/stats.pb.go
+++ /dev/null
@@ -1,632 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/stats.proto
-
-package testing
-
-import (
- core "github.com/costinm/grpc-mesh/proto/grpc/core"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type ServerStats struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // wall clock time change in seconds since last reset
- TimeElapsed float64 `protobuf:"fixed64,1,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
- // change in user time (in seconds) used by the server since last reset
- TimeUser float64 `protobuf:"fixed64,2,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
- // change in server time (in seconds) used by the server process and all
- // threads since last reset
- TimeSystem float64 `protobuf:"fixed64,3,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
- // change in total cpu time of the server (data from proc/stat)
- TotalCpuTime uint64 `protobuf:"varint,4,opt,name=total_cpu_time,json=totalCpuTime,proto3" json:"total_cpu_time,omitempty"`
- // change in idle time of the server (data from proc/stat)
- IdleCpuTime uint64 `protobuf:"varint,5,opt,name=idle_cpu_time,json=idleCpuTime,proto3" json:"idle_cpu_time,omitempty"`
- // Number of polls called inside completion queue
- CqPollCount uint64 `protobuf:"varint,6,opt,name=cq_poll_count,json=cqPollCount,proto3" json:"cq_poll_count,omitempty"`
- // Core library stats
- CoreStats *core.Stats `protobuf:"bytes,7,opt,name=core_stats,json=coreStats,proto3" json:"core_stats,omitempty"`
-}
-
-func (x *ServerStats) Reset() {
- *x = ServerStats{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_stats_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerStats) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerStats) ProtoMessage() {}
-
-func (x *ServerStats) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_stats_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerStats.ProtoReflect.Descriptor instead.
-func (*ServerStats) Descriptor() ([]byte, []int) {
- return file_grpc_testing_stats_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ServerStats) GetTimeElapsed() float64 {
- if x != nil {
- return x.TimeElapsed
- }
- return 0
-}
-
-func (x *ServerStats) GetTimeUser() float64 {
- if x != nil {
- return x.TimeUser
- }
- return 0
-}
-
-func (x *ServerStats) GetTimeSystem() float64 {
- if x != nil {
- return x.TimeSystem
- }
- return 0
-}
-
-func (x *ServerStats) GetTotalCpuTime() uint64 {
- if x != nil {
- return x.TotalCpuTime
- }
- return 0
-}
-
-func (x *ServerStats) GetIdleCpuTime() uint64 {
- if x != nil {
- return x.IdleCpuTime
- }
- return 0
-}
-
-func (x *ServerStats) GetCqPollCount() uint64 {
- if x != nil {
- return x.CqPollCount
- }
- return 0
-}
-
-func (x *ServerStats) GetCoreStats() *core.Stats {
- if x != nil {
- return x.CoreStats
- }
- return nil
-}
-
-// Histogram params based on grpc/support/histogram.c
-type HistogramParams struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Resolution float64 `protobuf:"fixed64,1,opt,name=resolution,proto3" json:"resolution,omitempty"` // first bucket is [0, 1 + resolution)
- MaxPossible float64 `protobuf:"fixed64,2,opt,name=max_possible,json=maxPossible,proto3" json:"max_possible,omitempty"` // use enough buckets to allow this value
-}
-
-func (x *HistogramParams) Reset() {
- *x = HistogramParams{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_stats_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HistogramParams) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HistogramParams) ProtoMessage() {}
-
-func (x *HistogramParams) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_stats_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HistogramParams.ProtoReflect.Descriptor instead.
-func (*HistogramParams) Descriptor() ([]byte, []int) {
- return file_grpc_testing_stats_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *HistogramParams) GetResolution() float64 {
- if x != nil {
- return x.Resolution
- }
- return 0
-}
-
-func (x *HistogramParams) GetMaxPossible() float64 {
- if x != nil {
- return x.MaxPossible
- }
- return 0
-}
-
-// Histogram data based on grpc/support/histogram.c
-type HistogramData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Bucket []uint32 `protobuf:"varint,1,rep,packed,name=bucket,proto3" json:"bucket,omitempty"`
- MinSeen float64 `protobuf:"fixed64,2,opt,name=min_seen,json=minSeen,proto3" json:"min_seen,omitempty"`
- MaxSeen float64 `protobuf:"fixed64,3,opt,name=max_seen,json=maxSeen,proto3" json:"max_seen,omitempty"`
- Sum float64 `protobuf:"fixed64,4,opt,name=sum,proto3" json:"sum,omitempty"`
- SumOfSquares float64 `protobuf:"fixed64,5,opt,name=sum_of_squares,json=sumOfSquares,proto3" json:"sum_of_squares,omitempty"`
- Count float64 `protobuf:"fixed64,6,opt,name=count,proto3" json:"count,omitempty"`
-}
-
-func (x *HistogramData) Reset() {
- *x = HistogramData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_stats_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HistogramData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HistogramData) ProtoMessage() {}
-
-func (x *HistogramData) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_stats_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HistogramData.ProtoReflect.Descriptor instead.
-func (*HistogramData) Descriptor() ([]byte, []int) {
- return file_grpc_testing_stats_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *HistogramData) GetBucket() []uint32 {
- if x != nil {
- return x.Bucket
- }
- return nil
-}
-
-func (x *HistogramData) GetMinSeen() float64 {
- if x != nil {
- return x.MinSeen
- }
- return 0
-}
-
-func (x *HistogramData) GetMaxSeen() float64 {
- if x != nil {
- return x.MaxSeen
- }
- return 0
-}
-
-func (x *HistogramData) GetSum() float64 {
- if x != nil {
- return x.Sum
- }
- return 0
-}
-
-func (x *HistogramData) GetSumOfSquares() float64 {
- if x != nil {
- return x.SumOfSquares
- }
- return 0
-}
-
-func (x *HistogramData) GetCount() float64 {
- if x != nil {
- return x.Count
- }
- return 0
-}
-
-type RequestResultCount struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- StatusCode int32 `protobuf:"varint,1,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"`
- Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
-}
-
-func (x *RequestResultCount) Reset() {
- *x = RequestResultCount{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_stats_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RequestResultCount) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RequestResultCount) ProtoMessage() {}
-
-func (x *RequestResultCount) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_stats_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RequestResultCount.ProtoReflect.Descriptor instead.
-func (*RequestResultCount) Descriptor() ([]byte, []int) {
- return file_grpc_testing_stats_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *RequestResultCount) GetStatusCode() int32 {
- if x != nil {
- return x.StatusCode
- }
- return 0
-}
-
-func (x *RequestResultCount) GetCount() int64 {
- if x != nil {
- return x.Count
- }
- return 0
-}
-
-type ClientStats struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Latency histogram. Data points are in nanoseconds.
- Latencies *HistogramData `protobuf:"bytes,1,opt,name=latencies,proto3" json:"latencies,omitempty"`
- // See ServerStats for details.
- TimeElapsed float64 `protobuf:"fixed64,2,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
- TimeUser float64 `protobuf:"fixed64,3,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
- TimeSystem float64 `protobuf:"fixed64,4,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
- // Number of failed requests (one row per status code seen)
- RequestResults []*RequestResultCount `protobuf:"bytes,5,rep,name=request_results,json=requestResults,proto3" json:"request_results,omitempty"`
- // Number of polls called inside completion queue
- CqPollCount uint64 `protobuf:"varint,6,opt,name=cq_poll_count,json=cqPollCount,proto3" json:"cq_poll_count,omitempty"`
- // Core library stats
- CoreStats *core.Stats `protobuf:"bytes,7,opt,name=core_stats,json=coreStats,proto3" json:"core_stats,omitempty"`
-}
-
-func (x *ClientStats) Reset() {
- *x = ClientStats{}
- if protoimpl.UnsafeEnabled {
- mi := &file_grpc_testing_stats_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientStats) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientStats) ProtoMessage() {}
-
-func (x *ClientStats) ProtoReflect() protoreflect.Message {
- mi := &file_grpc_testing_stats_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientStats.ProtoReflect.Descriptor instead.
-func (*ClientStats) Descriptor() ([]byte, []int) {
- return file_grpc_testing_stats_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *ClientStats) GetLatencies() *HistogramData {
- if x != nil {
- return x.Latencies
- }
- return nil
-}
-
-func (x *ClientStats) GetTimeElapsed() float64 {
- if x != nil {
- return x.TimeElapsed
- }
- return 0
-}
-
-func (x *ClientStats) GetTimeUser() float64 {
- if x != nil {
- return x.TimeUser
- }
- return 0
-}
-
-func (x *ClientStats) GetTimeSystem() float64 {
- if x != nil {
- return x.TimeSystem
- }
- return 0
-}
-
-func (x *ClientStats) GetRequestResults() []*RequestResultCount {
- if x != nil {
- return x.RequestResults
- }
- return nil
-}
-
-func (x *ClientStats) GetCqPollCount() uint64 {
- if x != nil {
- return x.CqPollCount
- }
- return 0
-}
-
-func (x *ClientStats) GetCoreStats() *core.Stats {
- if x != nil {
- return x.CoreStats
- }
- return nil
-}
-
-var File_grpc_testing_stats_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_stats_proto_rawDesc = []byte{
- 0x0a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x73,
- 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x15, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63,
- 0x6f, 0x72, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
- 0x8d, 0x02, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
- 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6c, 0x61, 0x70, 0x73,
- 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12,
- 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
- 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43,
- 0x70, 0x75, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x63,
- 0x70, 0x75, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x69,
- 0x64, 0x6c, 0x65, 0x43, 0x70, 0x75, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x71,
- 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x0b, 0x63, 0x71, 0x50, 0x6f, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f,
- 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53,
- 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22,
- 0x54, 0x0a, 0x0f, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x61,
- 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62,
- 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x73,
- 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67,
- 0x72, 0x61, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65,
- 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12,
- 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61,
- 0x78, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61,
- 0x78, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x75, 0x6d, 0x5f, 0x6f,
- 0x66, 0x5f, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x0c, 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x53, 0x71, 0x75, 0x61, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a,
- 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x22, 0x4b, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x22, 0xc9, 0x02, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73,
- 0x12, 0x39, 0x0a, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x61, 0x74, 0x61,
- 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74,
- 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x12, 0x1b,
- 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74,
- 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x49, 0x0a, 0x0f,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x71, 0x5f, 0x70, 0x6f,
- 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,
- 0x63, 0x71, 0x50, 0x6f, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x63,
- 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x10, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74,
- 0x73, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x50, 0x0a, 0x0f,
- 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42,
- 0x0a, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x67,
- 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e,
- 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_grpc_testing_stats_proto_rawDescOnce sync.Once
- file_grpc_testing_stats_proto_rawDescData = file_grpc_testing_stats_proto_rawDesc
-)
-
-func file_grpc_testing_stats_proto_rawDescGZIP() []byte {
- file_grpc_testing_stats_proto_rawDescOnce.Do(func() {
- file_grpc_testing_stats_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_testing_stats_proto_rawDescData)
- })
- return file_grpc_testing_stats_proto_rawDescData
-}
-
-var file_grpc_testing_stats_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_grpc_testing_stats_proto_goTypes = []interface{}{
- (*ServerStats)(nil), // 0: grpc.testing.ServerStats
- (*HistogramParams)(nil), // 1: grpc.testing.HistogramParams
- (*HistogramData)(nil), // 2: grpc.testing.HistogramData
- (*RequestResultCount)(nil), // 3: grpc.testing.RequestResultCount
- (*ClientStats)(nil), // 4: grpc.testing.ClientStats
- (*core.Stats)(nil), // 5: grpc.core.Stats
-}
-var file_grpc_testing_stats_proto_depIdxs = []int32{
- 5, // 0: grpc.testing.ServerStats.core_stats:type_name -> grpc.core.Stats
- 2, // 1: grpc.testing.ClientStats.latencies:type_name -> grpc.testing.HistogramData
- 3, // 2: grpc.testing.ClientStats.request_results:type_name -> grpc.testing.RequestResultCount
- 5, // 3: grpc.testing.ClientStats.core_stats:type_name -> grpc.core.Stats
- 4, // [4:4] is the sub-list for method output_type
- 4, // [4:4] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_stats_proto_init() }
-func file_grpc_testing_stats_proto_init() {
- if File_grpc_testing_stats_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_grpc_testing_stats_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerStats); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_stats_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistogramParams); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_stats_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistogramData); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_stats_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RequestResultCount); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_grpc_testing_stats_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientStats); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_stats_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 5,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_grpc_testing_stats_proto_goTypes,
- DependencyIndexes: file_grpc_testing_stats_proto_depIdxs,
- MessageInfos: file_grpc_testing_stats_proto_msgTypes,
- }.Build()
- File_grpc_testing_stats_proto = out.File
- file_grpc_testing_stats_proto_rawDesc = nil
- file_grpc_testing_stats_proto_goTypes = nil
- file_grpc_testing_stats_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/test.pb.go b/gen/proto/grpc/testing/test.pb.go
deleted file mode 100644
index 1cc7653..0000000
--- a/gen/proto/grpc/testing/test.pb.go
+++ /dev/null
@@ -1,229 +0,0 @@
-// Copyright 2015-2016 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/test.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-var File_grpc_testing_test_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_test_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x74,
- 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e,
- 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x1b, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xcb,
- 0x05, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35,
- 0x0a, 0x09, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x13, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
- 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
- 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x61,
- 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53,
- 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a,
- 0x12, 0x43, 0x61, 0x63, 0x68, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x43,
- 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
- 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c,
- 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75,
- 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75,
- 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53,
- 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61,
- 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x12,
- 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61,
- 0x6c, 0x6c, 0x12, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74,
- 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c, 0x44,
- 0x75, 0x70, 0x6c, 0x65, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69,
- 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70,
- 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01,
- 0x30, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78,
- 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74,
- 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74,
- 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c,
- 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3d, 0x0a,
- 0x11, 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x43, 0x61,
- 0x6c, 0x6c, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x55, 0x0a, 0x14,
- 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x11, 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d,
- 0x65, 0x6e, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63,
- 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d,
- 0x70, 0x74, 0x79, 0x32, 0x89, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72,
- 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
- 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x13, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70,
- 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x32,
- 0x86, 0x02, 0x0a, 0x18, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
- 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x0e,
- 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26,
- 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f,
- 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x84, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41,
- 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
- 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c,
- 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x6d,
- 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x41, 0x63,
- 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0x8b, 0x01, 0x0a, 0x16, 0x58, 0x64, 0x73,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e,
- 0x67, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0d, 0x53,
- 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x12, 0x13, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74,
- 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
- 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x7b, 0x0a, 0x1f, 0x58, 0x64, 0x73, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
- 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65,
- 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x42, 0x4e, 0x0a, 0x1b, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,
- 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68,
- 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_grpc_testing_test_proto_goTypes = []interface{}{
- (*Empty)(nil), // 0: grpc.testing.Empty
- (*SimpleRequest)(nil), // 1: grpc.testing.SimpleRequest
- (*StreamingOutputCallRequest)(nil), // 2: grpc.testing.StreamingOutputCallRequest
- (*StreamingInputCallRequest)(nil), // 3: grpc.testing.StreamingInputCallRequest
- (*ReconnectParams)(nil), // 4: grpc.testing.ReconnectParams
- (*LoadBalancerStatsRequest)(nil), // 5: grpc.testing.LoadBalancerStatsRequest
- (*LoadBalancerAccumulatedStatsRequest)(nil), // 6: grpc.testing.LoadBalancerAccumulatedStatsRequest
- (*ClientConfigureRequest)(nil), // 7: grpc.testing.ClientConfigureRequest
- (*SimpleResponse)(nil), // 8: grpc.testing.SimpleResponse
- (*StreamingOutputCallResponse)(nil), // 9: grpc.testing.StreamingOutputCallResponse
- (*StreamingInputCallResponse)(nil), // 10: grpc.testing.StreamingInputCallResponse
- (*ReconnectInfo)(nil), // 11: grpc.testing.ReconnectInfo
- (*LoadBalancerStatsResponse)(nil), // 12: grpc.testing.LoadBalancerStatsResponse
- (*LoadBalancerAccumulatedStatsResponse)(nil), // 13: grpc.testing.LoadBalancerAccumulatedStatsResponse
- (*ClientConfigureResponse)(nil), // 14: grpc.testing.ClientConfigureResponse
-}
-var file_grpc_testing_test_proto_depIdxs = []int32{
- 0, // 0: grpc.testing.TestService.EmptyCall:input_type -> grpc.testing.Empty
- 1, // 1: grpc.testing.TestService.UnaryCall:input_type -> grpc.testing.SimpleRequest
- 1, // 2: grpc.testing.TestService.CacheableUnaryCall:input_type -> grpc.testing.SimpleRequest
- 2, // 3: grpc.testing.TestService.StreamingOutputCall:input_type -> grpc.testing.StreamingOutputCallRequest
- 3, // 4: grpc.testing.TestService.StreamingInputCall:input_type -> grpc.testing.StreamingInputCallRequest
- 2, // 5: grpc.testing.TestService.FullDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest
- 2, // 6: grpc.testing.TestService.HalfDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest
- 0, // 7: grpc.testing.TestService.UnimplementedCall:input_type -> grpc.testing.Empty
- 0, // 8: grpc.testing.UnimplementedService.UnimplementedCall:input_type -> grpc.testing.Empty
- 4, // 9: grpc.testing.ReconnectService.RoundTripStart:input_type -> grpc.testing.ReconnectParams
- 0, // 10: grpc.testing.ReconnectService.Stop:input_type -> grpc.testing.Empty
- 5, // 11: grpc.testing.LoadBalancerStatsService.GetClientStats:input_type -> grpc.testing.LoadBalancerStatsRequest
- 6, // 12: grpc.testing.LoadBalancerStatsService.GetClientAccumulatedStats:input_type -> grpc.testing.LoadBalancerAccumulatedStatsRequest
- 0, // 13: grpc.testing.XdsUpdateHealthService.SetServing:input_type -> grpc.testing.Empty
- 0, // 14: grpc.testing.XdsUpdateHealthService.SetNotServing:input_type -> grpc.testing.Empty
- 7, // 15: grpc.testing.XdsUpdateClientConfigureService.Configure:input_type -> grpc.testing.ClientConfigureRequest
- 0, // 16: grpc.testing.TestService.EmptyCall:output_type -> grpc.testing.Empty
- 8, // 17: grpc.testing.TestService.UnaryCall:output_type -> grpc.testing.SimpleResponse
- 8, // 18: grpc.testing.TestService.CacheableUnaryCall:output_type -> grpc.testing.SimpleResponse
- 9, // 19: grpc.testing.TestService.StreamingOutputCall:output_type -> grpc.testing.StreamingOutputCallResponse
- 10, // 20: grpc.testing.TestService.StreamingInputCall:output_type -> grpc.testing.StreamingInputCallResponse
- 9, // 21: grpc.testing.TestService.FullDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse
- 9, // 22: grpc.testing.TestService.HalfDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse
- 0, // 23: grpc.testing.TestService.UnimplementedCall:output_type -> grpc.testing.Empty
- 0, // 24: grpc.testing.UnimplementedService.UnimplementedCall:output_type -> grpc.testing.Empty
- 0, // 25: grpc.testing.ReconnectService.RoundTripStart:output_type -> grpc.testing.Empty
- 11, // 26: grpc.testing.ReconnectService.Stop:output_type -> grpc.testing.ReconnectInfo
- 12, // 27: grpc.testing.LoadBalancerStatsService.GetClientStats:output_type -> grpc.testing.LoadBalancerStatsResponse
- 13, // 28: grpc.testing.LoadBalancerStatsService.GetClientAccumulatedStats:output_type -> grpc.testing.LoadBalancerAccumulatedStatsResponse
- 0, // 29: grpc.testing.XdsUpdateHealthService.SetServing:output_type -> grpc.testing.Empty
- 0, // 30: grpc.testing.XdsUpdateHealthService.SetNotServing:output_type -> grpc.testing.Empty
- 14, // 31: grpc.testing.XdsUpdateClientConfigureService.Configure:output_type -> grpc.testing.ClientConfigureResponse
- 16, // [16:32] is the sub-list for method output_type
- 0, // [0:16] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_test_proto_init() }
-func file_grpc_testing_test_proto_init() {
- if File_grpc_testing_test_proto != nil {
- return
- }
- file_grpc_testing_empty_proto_init()
- file_grpc_testing_messages_proto_init()
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_test_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 0,
- NumExtensions: 0,
- NumServices: 6,
- },
- GoTypes: file_grpc_testing_test_proto_goTypes,
- DependencyIndexes: file_grpc_testing_test_proto_depIdxs,
- }.Build()
- File_grpc_testing_test_proto = out.File
- file_grpc_testing_test_proto_rawDesc = nil
- file_grpc_testing_test_proto_goTypes = nil
- file_grpc_testing_test_proto_depIdxs = nil
-}
diff --git a/gen/proto/grpc/testing/worker_service.pb.go b/gen/proto/grpc/testing/worker_service.pb.go
deleted file mode 100644
index 4d6f031..0000000
--- a/gen/proto/grpc/testing/worker_service.pb.go
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: grpc/testing/worker_service.proto
-
-package testing
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-var File_grpc_testing_worker_service_proto protoreflect.FileDescriptor
-
-var file_grpc_testing_worker_service_proto_rawDesc = []byte{
- 0x0a, 0x21, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x77,
- 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x1a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f,
- 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x97, 0x02,
- 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
- 0x45, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x67,
- 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x28, 0x01, 0x30, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x43, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x12, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1a, 0x2e,
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x28, 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a,
- 0x09, 0x43, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x72, 0x70,
- 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x51, 0x75, 0x69, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12,
- 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56,
- 0x6f, 0x69, 0x64, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x67, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x42, 0x58, 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x67, 0x72,
- 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x12, 0x57, 0x6f, 0x72, 0x6b,
- 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73,
- 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_grpc_testing_worker_service_proto_goTypes = []interface{}{
- (*ServerArgs)(nil), // 0: grpc.testing.ServerArgs
- (*ClientArgs)(nil), // 1: grpc.testing.ClientArgs
- (*CoreRequest)(nil), // 2: grpc.testing.CoreRequest
- (*Void)(nil), // 3: grpc.testing.Void
- (*ServerStatus)(nil), // 4: grpc.testing.ServerStatus
- (*ClientStatus)(nil), // 5: grpc.testing.ClientStatus
- (*CoreResponse)(nil), // 6: grpc.testing.CoreResponse
-}
-var file_grpc_testing_worker_service_proto_depIdxs = []int32{
- 0, // 0: grpc.testing.WorkerService.RunServer:input_type -> grpc.testing.ServerArgs
- 1, // 1: grpc.testing.WorkerService.RunClient:input_type -> grpc.testing.ClientArgs
- 2, // 2: grpc.testing.WorkerService.CoreCount:input_type -> grpc.testing.CoreRequest
- 3, // 3: grpc.testing.WorkerService.QuitWorker:input_type -> grpc.testing.Void
- 4, // 4: grpc.testing.WorkerService.RunServer:output_type -> grpc.testing.ServerStatus
- 5, // 5: grpc.testing.WorkerService.RunClient:output_type -> grpc.testing.ClientStatus
- 6, // 6: grpc.testing.WorkerService.CoreCount:output_type -> grpc.testing.CoreResponse
- 3, // 7: grpc.testing.WorkerService.QuitWorker:output_type -> grpc.testing.Void
- 4, // [4:8] is the sub-list for method output_type
- 0, // [0:4] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_grpc_testing_worker_service_proto_init() }
-func file_grpc_testing_worker_service_proto_init() {
- if File_grpc_testing_worker_service_proto != nil {
- return
- }
- file_grpc_testing_control_proto_init()
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_grpc_testing_worker_service_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 0,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_grpc_testing_worker_service_proto_goTypes,
- DependencyIndexes: file_grpc_testing_worker_service_proto_depIdxs,
- }.Build()
- File_grpc_testing_worker_service_proto = out.File
- file_grpc_testing_worker_service_proto_rawDesc = nil
- file_grpc_testing_worker_service_proto_goTypes = nil
- file_grpc_testing_worker_service_proto_depIdxs = nil
-}
diff --git a/gen/proto/istio/v1/auth/ca.pb.go b/gen/proto/istio/v1/auth/ca.pb.go
deleted file mode 100644
index 9ce80b4..0000000
--- a/gen/proto/istio/v1/auth/ca.pb.go
+++ /dev/null
@@ -1,671 +0,0 @@
-// Copyright Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: istio/v1/auth/ca.proto
-
-// Keep this package for backward compatibility.
-
-package auth
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// `NullValue` is a singleton enumeration to represent the null value for the
-// `Value` type union.
-//
-// The JSON representation for `NullValue` is JSON `null`.
-type NullValue int32
-
-const (
- // Null value.
- NullValue_NULL_VALUE NullValue = 0
-)
-
-// Enum value maps for NullValue.
-var (
- NullValue_name = map[int32]string{
- 0: "NULL_VALUE",
- }
- NullValue_value = map[string]int32{
- "NULL_VALUE": 0,
- }
-)
-
-func (x NullValue) Enum() *NullValue {
- p := new(NullValue)
- *p = x
- return p
-}
-
-func (x NullValue) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (NullValue) Descriptor() protoreflect.EnumDescriptor {
- return file_istio_v1_auth_ca_proto_enumTypes[0].Descriptor()
-}
-
-func (NullValue) Type() protoreflect.EnumType {
- return &file_istio_v1_auth_ca_proto_enumTypes[0]
-}
-
-func (x NullValue) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use NullValue.Descriptor instead.
-func (NullValue) EnumDescriptor() ([]byte, []int) {
- return file_istio_v1_auth_ca_proto_rawDescGZIP(), []int{0}
-}
-
-// Certificate request message. The authentication should be based on:
-// 1. Bearer tokens carried in the side channel;
-// 2. Client-side certificate via Mutual TLS handshake.
-// Note: the service implementation is REQUIRED to verify the authenticated caller is authorize to
-// all SANs in the CSR. The server side may overwrite any requested certificate field based on its
-// policies.
-type IstioCertificateRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // PEM-encoded certificate request.
- // The public key in the CSR is used to generate the certificate,
- // and other fields in the generated certificate may be overwritten by the CA.
- Csr string `protobuf:"bytes,1,opt,name=csr,proto3" json:"csr,omitempty"`
- // Optional: requested certificate validity period, in seconds.
- ValidityDuration int64 `protobuf:"varint,3,opt,name=validity_duration,json=validityDuration,proto3" json:"validity_duration,omitempty"`
- // $hide_from_docs
- // Optional: Opaque metadata provided by the XDS node to Istio.
- // Supported metadata: WorkloadName, WorkloadIP, ClusterID
- Metadata *Struct `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
-}
-
-func (x *IstioCertificateRequest) Reset() {
- *x = IstioCertificateRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IstioCertificateRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IstioCertificateRequest) ProtoMessage() {}
-
-func (x *IstioCertificateRequest) ProtoReflect() protoreflect.Message {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IstioCertificateRequest.ProtoReflect.Descriptor instead.
-func (*IstioCertificateRequest) Descriptor() ([]byte, []int) {
- return file_istio_v1_auth_ca_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *IstioCertificateRequest) GetCsr() string {
- if x != nil {
- return x.Csr
- }
- return ""
-}
-
-func (x *IstioCertificateRequest) GetValidityDuration() int64 {
- if x != nil {
- return x.ValidityDuration
- }
- return 0
-}
-
-func (x *IstioCertificateRequest) GetMetadata() *Struct {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-// Certificate response message.
-type IstioCertificateResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // PEM-encoded certificate chain.
- // The leaf cert is the first element, and the root cert is the last element.
- CertChain []string `protobuf:"bytes,1,rep,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"`
-}
-
-func (x *IstioCertificateResponse) Reset() {
- *x = IstioCertificateResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IstioCertificateResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IstioCertificateResponse) ProtoMessage() {}
-
-func (x *IstioCertificateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IstioCertificateResponse.ProtoReflect.Descriptor instead.
-func (*IstioCertificateResponse) Descriptor() ([]byte, []int) {
- return file_istio_v1_auth_ca_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *IstioCertificateResponse) GetCertChain() []string {
- if x != nil {
- return x.CertChain
- }
- return nil
-}
-
-// Duplicated to avoid dependnecy to struct.proto
-// `Struct` represents a structured data value, consisting of fields
-// which map to dynamically typed values. In some languages, `Struct`
-// might be supported by a native representation. For example, in
-// scripting languages like JS a struct is represented as an
-// object. The details of that representation are described together
-// with the proto support for the language.
-//
-// The JSON representation for `Struct` is JSON object.
-type Struct struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Unordered map of dynamically typed values.
- Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Struct) Reset() {
- *x = Struct{}
- if protoimpl.UnsafeEnabled {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Struct) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Struct) ProtoMessage() {}
-
-func (x *Struct) ProtoReflect() protoreflect.Message {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Struct.ProtoReflect.Descriptor instead.
-func (*Struct) Descriptor() ([]byte, []int) {
- return file_istio_v1_auth_ca_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Struct) GetFields() map[string]*Value {
- if x != nil {
- return x.Fields
- }
- return nil
-}
-
-// `Value` represents a dynamically typed value which can be either
-// null, a number, a string, a boolean, a recursive struct value, or a
-// list of values. A producer of value is expected to set one of that
-// variants, absence of any variant indicates an error.
-//
-// The JSON representation for `Value` is JSON value.
-type Value struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The kind of value.
- //
- // Types that are assignable to Kind:
- // *Value_NullValue
- // *Value_NumberValue
- // *Value_StringValue
- // *Value_BoolValue
- // *Value_StructValue
- // *Value_ListValue
- Kind isValue_Kind `protobuf_oneof:"kind"`
-}
-
-func (x *Value) Reset() {
- *x = Value{}
- if protoimpl.UnsafeEnabled {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Value) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Value) ProtoMessage() {}
-
-func (x *Value) ProtoReflect() protoreflect.Message {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Value.ProtoReflect.Descriptor instead.
-func (*Value) Descriptor() ([]byte, []int) {
- return file_istio_v1_auth_ca_proto_rawDescGZIP(), []int{3}
-}
-
-func (m *Value) GetKind() isValue_Kind {
- if m != nil {
- return m.Kind
- }
- return nil
-}
-
-func (x *Value) GetNullValue() NullValue {
- if x, ok := x.GetKind().(*Value_NullValue); ok {
- return x.NullValue
- }
- return NullValue_NULL_VALUE
-}
-
-func (x *Value) GetNumberValue() float64 {
- if x, ok := x.GetKind().(*Value_NumberValue); ok {
- return x.NumberValue
- }
- return 0
-}
-
-func (x *Value) GetStringValue() string {
- if x, ok := x.GetKind().(*Value_StringValue); ok {
- return x.StringValue
- }
- return ""
-}
-
-func (x *Value) GetBoolValue() bool {
- if x, ok := x.GetKind().(*Value_BoolValue); ok {
- return x.BoolValue
- }
- return false
-}
-
-func (x *Value) GetStructValue() *Struct {
- if x, ok := x.GetKind().(*Value_StructValue); ok {
- return x.StructValue
- }
- return nil
-}
-
-func (x *Value) GetListValue() *ListValue {
- if x, ok := x.GetKind().(*Value_ListValue); ok {
- return x.ListValue
- }
- return nil
-}
-
-type isValue_Kind interface {
- isValue_Kind()
-}
-
-type Value_NullValue struct {
- // Represents a null value.
- NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,proto3,enum=istio.v1.auth.NullValue,oneof"`
-}
-
-type Value_NumberValue struct {
- // Represents a double value.
- NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,proto3,oneof"`
-}
-
-type Value_StringValue struct {
- // Represents a string value.
- StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"`
-}
-
-type Value_BoolValue struct {
- // Represents a boolean value.
- BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"`
-}
-
-type Value_StructValue struct {
- // Represents a structured value.
- StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof"`
-}
-
-type Value_ListValue struct {
- // Represents a repeated `Value`.
- ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,proto3,oneof"`
-}
-
-func (*Value_NullValue) isValue_Kind() {}
-
-func (*Value_NumberValue) isValue_Kind() {}
-
-func (*Value_StringValue) isValue_Kind() {}
-
-func (*Value_BoolValue) isValue_Kind() {}
-
-func (*Value_StructValue) isValue_Kind() {}
-
-func (*Value_ListValue) isValue_Kind() {}
-
-// `ListValue` is a wrapper around a repeated field of values.
-//
-// The JSON representation for `ListValue` is JSON array.
-type ListValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Repeated field of dynamically typed values.
- Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
-}
-
-func (x *ListValue) Reset() {
- *x = ListValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListValue) ProtoMessage() {}
-
-func (x *ListValue) ProtoReflect() protoreflect.Message {
- mi := &file_istio_v1_auth_ca_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.
-func (*ListValue) Descriptor() ([]byte, []int) {
- return file_istio_v1_auth_ca_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *ListValue) GetValues() []*Value {
- if x != nil {
- return x.Values
- }
- return nil
-}
-
-var File_istio_v1_auth_ca_proto protoreflect.FileDescriptor
-
-var file_istio_v1_auth_ca_proto_rawDesc = []byte{
- 0x0a, 0x16, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f,
- 0x63, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x76, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x22, 0x8b, 0x01, 0x0a, 0x17, 0x49, 0x73, 0x74, 0x69,
- 0x6f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x73, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x63, 0x73, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74,
- 0x79, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e,
- 0x61, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x39, 0x0a, 0x18, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e,
- 0x22, 0x94, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x74, 0x72, 0x75,
- 0x63, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x4f, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x76,
- 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x02, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x76, 0x31,
- 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48,
- 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c,
- 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e,
- 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f,
- 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x75, 0x63,
- 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x74,
- 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x76, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06,
- 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x39, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x61,
- 0x75, 0x74, 0x68, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x73, 0x2a, 0x1b, 0x0a, 0x09, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e,
- 0x0a, 0x0a, 0x4e, 0x55, 0x4c, 0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x32, 0x81,
- 0x01, 0x0a, 0x17, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x11, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12,
- 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e,
- 0x49, 0x73, 0x74, 0x69, 0x6f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x76, 0x31, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x00, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x75, 0x67, 0x61, 0x74, 0x65, 0x2f, 0x67,
- 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2f, 0x76,
- 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_istio_v1_auth_ca_proto_rawDescOnce sync.Once
- file_istio_v1_auth_ca_proto_rawDescData = file_istio_v1_auth_ca_proto_rawDesc
-)
-
-func file_istio_v1_auth_ca_proto_rawDescGZIP() []byte {
- file_istio_v1_auth_ca_proto_rawDescOnce.Do(func() {
- file_istio_v1_auth_ca_proto_rawDescData = protoimpl.X.CompressGZIP(file_istio_v1_auth_ca_proto_rawDescData)
- })
- return file_istio_v1_auth_ca_proto_rawDescData
-}
-
-var file_istio_v1_auth_ca_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_istio_v1_auth_ca_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_istio_v1_auth_ca_proto_goTypes = []interface{}{
- (NullValue)(0), // 0: istio.v1.auth.NullValue
- (*IstioCertificateRequest)(nil), // 1: istio.v1.auth.IstioCertificateRequest
- (*IstioCertificateResponse)(nil), // 2: istio.v1.auth.IstioCertificateResponse
- (*Struct)(nil), // 3: istio.v1.auth.Struct
- (*Value)(nil), // 4: istio.v1.auth.Value
- (*ListValue)(nil), // 5: istio.v1.auth.ListValue
- nil, // 6: istio.v1.auth.Struct.FieldsEntry
-}
-var file_istio_v1_auth_ca_proto_depIdxs = []int32{
- 3, // 0: istio.v1.auth.IstioCertificateRequest.metadata:type_name -> istio.v1.auth.Struct
- 6, // 1: istio.v1.auth.Struct.fields:type_name -> istio.v1.auth.Struct.FieldsEntry
- 0, // 2: istio.v1.auth.Value.null_value:type_name -> istio.v1.auth.NullValue
- 3, // 3: istio.v1.auth.Value.struct_value:type_name -> istio.v1.auth.Struct
- 5, // 4: istio.v1.auth.Value.list_value:type_name -> istio.v1.auth.ListValue
- 4, // 5: istio.v1.auth.ListValue.values:type_name -> istio.v1.auth.Value
- 4, // 6: istio.v1.auth.Struct.FieldsEntry.value:type_name -> istio.v1.auth.Value
- 1, // 7: istio.v1.auth.IstioCertificateService.CreateCertificate:input_type -> istio.v1.auth.IstioCertificateRequest
- 2, // 8: istio.v1.auth.IstioCertificateService.CreateCertificate:output_type -> istio.v1.auth.IstioCertificateResponse
- 8, // [8:9] is the sub-list for method output_type
- 7, // [7:8] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_istio_v1_auth_ca_proto_init() }
-func file_istio_v1_auth_ca_proto_init() {
- if File_istio_v1_auth_ca_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_istio_v1_auth_ca_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IstioCertificateRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_istio_v1_auth_ca_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IstioCertificateResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_istio_v1_auth_ca_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Struct); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_istio_v1_auth_ca_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Value); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_istio_v1_auth_ca_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_istio_v1_auth_ca_proto_msgTypes[3].OneofWrappers = []interface{}{
- (*Value_NullValue)(nil),
- (*Value_NumberValue)(nil),
- (*Value_StringValue)(nil),
- (*Value_BoolValue)(nil),
- (*Value_StructValue)(nil),
- (*Value_ListValue)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_istio_v1_auth_ca_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_istio_v1_auth_ca_proto_goTypes,
- DependencyIndexes: file_istio_v1_auth_ca_proto_depIdxs,
- EnumInfos: file_istio_v1_auth_ca_proto_enumTypes,
- MessageInfos: file_istio_v1_auth_ca_proto_msgTypes,
- }.Build()
- File_istio_v1_auth_ca_proto = out.File
- file_istio_v1_auth_ca_proto_rawDesc = nil
- file_istio_v1_auth_ca_proto_goTypes = nil
- file_istio_v1_auth_ca_proto_depIdxs = nil
-}
diff --git a/gen/proto/konectivity.pb.go b/gen/proto/konectivity.pb.go
deleted file mode 100644
index 1adc543..0000000
--- a/gen/proto/konectivity.pb.go
+++ /dev/null
@@ -1,865 +0,0 @@
-// Copyright The Kubernetes 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: konectivity.proto
-
-package proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type PacketType int32
-
-const (
- PacketType_DIAL_REQ PacketType = 0
- PacketType_DIAL_RSP PacketType = 1
- PacketType_CLOSE_REQ PacketType = 2
- PacketType_CLOSE_RSP PacketType = 3
- PacketType_DATA PacketType = 4
- PacketType_DIAL_CLS PacketType = 5
-)
-
-// Enum value maps for PacketType.
-var (
- PacketType_name = map[int32]string{
- 0: "DIAL_REQ",
- 1: "DIAL_RSP",
- 2: "CLOSE_REQ",
- 3: "CLOSE_RSP",
- 4: "DATA",
- 5: "DIAL_CLS",
- }
- PacketType_value = map[string]int32{
- "DIAL_REQ": 0,
- "DIAL_RSP": 1,
- "CLOSE_REQ": 2,
- "CLOSE_RSP": 3,
- "DATA": 4,
- "DIAL_CLS": 5,
- }
-)
-
-func (x PacketType) Enum() *PacketType {
- p := new(PacketType)
- *p = x
- return p
-}
-
-func (x PacketType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (PacketType) Descriptor() protoreflect.EnumDescriptor {
- return file_konectivity_proto_enumTypes[0].Descriptor()
-}
-
-func (PacketType) Type() protoreflect.EnumType {
- return &file_konectivity_proto_enumTypes[0]
-}
-
-func (x PacketType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use PacketType.Descriptor instead.
-func (PacketType) EnumDescriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{0}
-}
-
-type Error int32
-
-const (
- Error_EOF Error = 0 // ...
-)
-
-// Enum value maps for Error.
-var (
- Error_name = map[int32]string{
- 0: "EOF",
- }
- Error_value = map[string]int32{
- "EOF": 0,
- }
-)
-
-func (x Error) Enum() *Error {
- p := new(Error)
- *p = x
- return p
-}
-
-func (x Error) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Error) Descriptor() protoreflect.EnumDescriptor {
- return file_konectivity_proto_enumTypes[1].Descriptor()
-}
-
-func (Error) Type() protoreflect.EnumType {
- return &file_konectivity_proto_enumTypes[1]
-}
-
-func (x Error) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Error.Descriptor instead.
-func (Error) EnumDescriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{1}
-}
-
-type Packet struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type PacketType `protobuf:"varint,1,opt,name=type,proto3,enum=PacketType" json:"type,omitempty"`
- // Types that are assignable to Payload:
- // *Packet_DialRequest
- // *Packet_DialResponse
- // *Packet_Data
- // *Packet_CloseRequest
- // *Packet_CloseResponse
- // *Packet_CloseDial
- Payload isPacket_Payload `protobuf_oneof:"payload"`
-}
-
-func (x *Packet) Reset() {
- *x = Packet{}
- if protoimpl.UnsafeEnabled {
- mi := &file_konectivity_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Packet) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Packet) ProtoMessage() {}
-
-func (x *Packet) ProtoReflect() protoreflect.Message {
- mi := &file_konectivity_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Packet.ProtoReflect.Descriptor instead.
-func (*Packet) Descriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Packet) GetType() PacketType {
- if x != nil {
- return x.Type
- }
- return PacketType_DIAL_REQ
-}
-
-func (m *Packet) GetPayload() isPacket_Payload {
- if m != nil {
- return m.Payload
- }
- return nil
-}
-
-func (x *Packet) GetDialRequest() *DialRequest {
- if x, ok := x.GetPayload().(*Packet_DialRequest); ok {
- return x.DialRequest
- }
- return nil
-}
-
-func (x *Packet) GetDialResponse() *DialResponse {
- if x, ok := x.GetPayload().(*Packet_DialResponse); ok {
- return x.DialResponse
- }
- return nil
-}
-
-func (x *Packet) GetData() *Data {
- if x, ok := x.GetPayload().(*Packet_Data); ok {
- return x.Data
- }
- return nil
-}
-
-func (x *Packet) GetCloseRequest() *CloseRequest {
- if x, ok := x.GetPayload().(*Packet_CloseRequest); ok {
- return x.CloseRequest
- }
- return nil
-}
-
-func (x *Packet) GetCloseResponse() *CloseResponse {
- if x, ok := x.GetPayload().(*Packet_CloseResponse); ok {
- return x.CloseResponse
- }
- return nil
-}
-
-func (x *Packet) GetCloseDial() *CloseDial {
- if x, ok := x.GetPayload().(*Packet_CloseDial); ok {
- return x.CloseDial
- }
- return nil
-}
-
-type isPacket_Payload interface {
- isPacket_Payload()
-}
-
-type Packet_DialRequest struct {
- DialRequest *DialRequest `protobuf:"bytes,2,opt,name=dialRequest,proto3,oneof"`
-}
-
-type Packet_DialResponse struct {
- DialResponse *DialResponse `protobuf:"bytes,3,opt,name=dialResponse,proto3,oneof"`
-}
-
-type Packet_Data struct {
- Data *Data `protobuf:"bytes,4,opt,name=data,proto3,oneof"`
-}
-
-type Packet_CloseRequest struct {
- CloseRequest *CloseRequest `protobuf:"bytes,5,opt,name=closeRequest,proto3,oneof"`
-}
-
-type Packet_CloseResponse struct {
- CloseResponse *CloseResponse `protobuf:"bytes,6,opt,name=closeResponse,proto3,oneof"`
-}
-
-type Packet_CloseDial struct {
- CloseDial *CloseDial `protobuf:"bytes,7,opt,name=closeDial,proto3,oneof"`
-}
-
-func (*Packet_DialRequest) isPacket_Payload() {}
-
-func (*Packet_DialResponse) isPacket_Payload() {}
-
-func (*Packet_Data) isPacket_Payload() {}
-
-func (*Packet_CloseRequest) isPacket_Payload() {}
-
-func (*Packet_CloseResponse) isPacket_Payload() {}
-
-func (*Packet_CloseDial) isPacket_Payload() {}
-
-type DialRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // tcp or udp?
- Protocol string `protobuf:"bytes,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
- // node:port
- Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
- // random id for client, maybe should be longer
- Random int64 `protobuf:"varint,3,opt,name=random,proto3" json:"random,omitempty"`
-}
-
-func (x *DialRequest) Reset() {
- *x = DialRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_konectivity_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DialRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DialRequest) ProtoMessage() {}
-
-func (x *DialRequest) ProtoReflect() protoreflect.Message {
- mi := &file_konectivity_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DialRequest.ProtoReflect.Descriptor instead.
-func (*DialRequest) Descriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *DialRequest) GetProtocol() string {
- if x != nil {
- return x.Protocol
- }
- return ""
-}
-
-func (x *DialRequest) GetAddress() string {
- if x != nil {
- return x.Address
- }
- return ""
-}
-
-func (x *DialRequest) GetRandom() int64 {
- if x != nil {
- return x.Random
- }
- return 0
-}
-
-type DialResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // error failed reason; enum?
- Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"`
- // connectID indicates the identifier of the connection
- ConnectID int64 `protobuf:"varint,2,opt,name=connectID,proto3" json:"connectID,omitempty"`
- // random copied from DialRequest
- Random int64 `protobuf:"varint,3,opt,name=random,proto3" json:"random,omitempty"`
-}
-
-func (x *DialResponse) Reset() {
- *x = DialResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_konectivity_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DialResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DialResponse) ProtoMessage() {}
-
-func (x *DialResponse) ProtoReflect() protoreflect.Message {
- mi := &file_konectivity_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DialResponse.ProtoReflect.Descriptor instead.
-func (*DialResponse) Descriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *DialResponse) GetError() string {
- if x != nil {
- return x.Error
- }
- return ""
-}
-
-func (x *DialResponse) GetConnectID() int64 {
- if x != nil {
- return x.ConnectID
- }
- return 0
-}
-
-func (x *DialResponse) GetRandom() int64 {
- if x != nil {
- return x.Random
- }
- return 0
-}
-
-type CloseRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // connectID of the stream to close
- ConnectID int64 `protobuf:"varint,1,opt,name=connectID,proto3" json:"connectID,omitempty"`
-}
-
-func (x *CloseRequest) Reset() {
- *x = CloseRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_konectivity_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CloseRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CloseRequest) ProtoMessage() {}
-
-func (x *CloseRequest) ProtoReflect() protoreflect.Message {
- mi := &file_konectivity_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CloseRequest.ProtoReflect.Descriptor instead.
-func (*CloseRequest) Descriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CloseRequest) GetConnectID() int64 {
- if x != nil {
- return x.ConnectID
- }
- return 0
-}
-
-type CloseResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // error message
- Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"`
- // connectID indicates the identifier of the connection
- ConnectID int64 `protobuf:"varint,2,opt,name=connectID,proto3" json:"connectID,omitempty"`
-}
-
-func (x *CloseResponse) Reset() {
- *x = CloseResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_konectivity_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CloseResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CloseResponse) ProtoMessage() {}
-
-func (x *CloseResponse) ProtoReflect() protoreflect.Message {
- mi := &file_konectivity_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CloseResponse.ProtoReflect.Descriptor instead.
-func (*CloseResponse) Descriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *CloseResponse) GetError() string {
- if x != nil {
- return x.Error
- }
- return ""
-}
-
-func (x *CloseResponse) GetConnectID() int64 {
- if x != nil {
- return x.ConnectID
- }
- return 0
-}
-
-type CloseDial struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // random id of the DialRequest
- Random int64 `protobuf:"varint,1,opt,name=random,proto3" json:"random,omitempty"`
-}
-
-func (x *CloseDial) Reset() {
- *x = CloseDial{}
- if protoimpl.UnsafeEnabled {
- mi := &file_konectivity_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CloseDial) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CloseDial) ProtoMessage() {}
-
-func (x *CloseDial) ProtoReflect() protoreflect.Message {
- mi := &file_konectivity_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CloseDial.ProtoReflect.Descriptor instead.
-func (*CloseDial) Descriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *CloseDial) GetRandom() int64 {
- if x != nil {
- return x.Random
- }
- return 0
-}
-
-type Data struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // connectID to connect to
- ConnectID int64 `protobuf:"varint,1,opt,name=connectID,proto3" json:"connectID,omitempty"`
- // error message if error happens
- Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
- // stream data
- Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *Data) Reset() {
- *x = Data{}
- if protoimpl.UnsafeEnabled {
- mi := &file_konectivity_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Data) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Data) ProtoMessage() {}
-
-func (x *Data) ProtoReflect() protoreflect.Message {
- mi := &file_konectivity_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Data.ProtoReflect.Descriptor instead.
-func (*Data) Descriptor() ([]byte, []int) {
- return file_konectivity_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Data) GetConnectID() int64 {
- if x != nil {
- return x.ConnectID
- }
- return 0
-}
-
-func (x *Data) GetError() string {
- if x != nil {
- return x.Error
- }
- return ""
-}
-
-func (x *Data) GetData() []byte {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-var File_konectivity_proto protoreflect.FileDescriptor
-
-var file_konectivity_proto_rawDesc = []byte{
- 0x0a, 0x11, 0x6b, 0x6f, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x22, 0xd1, 0x02, 0x0a, 0x06, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1f,
- 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x50,
- 0x61, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
- 0x30, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x64, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x69, 0x61, 0x6c, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6c, 0x6f, 0x73,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x6f, 0x73,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x63, 0x6c, 0x6f, 0x73,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x0e, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48,
- 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x2a, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x48,
- 0x00, 0x52, 0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x42, 0x09, 0x0a, 0x07,
- 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x5b, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6c, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06,
- 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x61,
- 0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x5a, 0x0a, 0x0c, 0x44, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f,
- 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63,
- 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64,
- 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d,
- 0x22, 0x2c, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x44, 0x22, 0x43,
- 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
- 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x49, 0x44, 0x22, 0x23, 0x0a, 0x09, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c,
- 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x4e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61,
- 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x14,
- 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65,
- 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x2a, 0x5e, 0x0a, 0x0a, 0x50, 0x61, 0x63, 0x6b,
- 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x41, 0x4c, 0x5f, 0x52,
- 0x45, 0x51, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x41, 0x4c, 0x5f, 0x52, 0x53, 0x50,
- 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x10,
- 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x52, 0x53, 0x50, 0x10, 0x03,
- 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x41, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49,
- 0x41, 0x4c, 0x5f, 0x43, 0x4c, 0x53, 0x10, 0x05, 0x2a, 0x10, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
- 0x72, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4f, 0x46, 0x10, 0x00, 0x32, 0x2f, 0x0a, 0x0c, 0x50, 0x72,
- 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x05, 0x50, 0x72,
- 0x6f, 0x78, 0x79, 0x12, 0x07, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x07, 0x2e, 0x50,
- 0x61, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x32, 0x31, 0x0a, 0x0c, 0x41,
- 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x07, 0x43,
- 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x07, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x1a,
- 0x07, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x24,
- 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73,
- 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x75, 0x67, 0x61, 0x74, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_konectivity_proto_rawDescOnce sync.Once
- file_konectivity_proto_rawDescData = file_konectivity_proto_rawDesc
-)
-
-func file_konectivity_proto_rawDescGZIP() []byte {
- file_konectivity_proto_rawDescOnce.Do(func() {
- file_konectivity_proto_rawDescData = protoimpl.X.CompressGZIP(file_konectivity_proto_rawDescData)
- })
- return file_konectivity_proto_rawDescData
-}
-
-var file_konectivity_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_konectivity_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
-var file_konectivity_proto_goTypes = []interface{}{
- (PacketType)(0), // 0: PacketType
- (Error)(0), // 1: Error
- (*Packet)(nil), // 2: Packet
- (*DialRequest)(nil), // 3: DialRequest
- (*DialResponse)(nil), // 4: DialResponse
- (*CloseRequest)(nil), // 5: CloseRequest
- (*CloseResponse)(nil), // 6: CloseResponse
- (*CloseDial)(nil), // 7: CloseDial
- (*Data)(nil), // 8: Data
-}
-var file_konectivity_proto_depIdxs = []int32{
- 0, // 0: Packet.type:type_name -> PacketType
- 3, // 1: Packet.dialRequest:type_name -> DialRequest
- 4, // 2: Packet.dialResponse:type_name -> DialResponse
- 8, // 3: Packet.data:type_name -> Data
- 5, // 4: Packet.closeRequest:type_name -> CloseRequest
- 6, // 5: Packet.closeResponse:type_name -> CloseResponse
- 7, // 6: Packet.closeDial:type_name -> CloseDial
- 2, // 7: ProxyService.Proxy:input_type -> Packet
- 2, // 8: AgentService.Connect:input_type -> Packet
- 2, // 9: ProxyService.Proxy:output_type -> Packet
- 2, // 10: AgentService.Connect:output_type -> Packet
- 9, // [9:11] is the sub-list for method output_type
- 7, // [7:9] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_konectivity_proto_init() }
-func file_konectivity_proto_init() {
- if File_konectivity_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_konectivity_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Packet); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_konectivity_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DialRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_konectivity_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DialResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_konectivity_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CloseRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_konectivity_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CloseResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_konectivity_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CloseDial); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_konectivity_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Data); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_konectivity_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*Packet_DialRequest)(nil),
- (*Packet_DialResponse)(nil),
- (*Packet_Data)(nil),
- (*Packet_CloseRequest)(nil),
- (*Packet_CloseResponse)(nil),
- (*Packet_CloseDial)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_konectivity_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 7,
- NumExtensions: 0,
- NumServices: 2,
- },
- GoTypes: file_konectivity_proto_goTypes,
- DependencyIndexes: file_konectivity_proto_depIdxs,
- EnumInfos: file_konectivity_proto_enumTypes,
- MessageInfos: file_konectivity_proto_msgTypes,
- }.Build()
- File_konectivity_proto = out.File
- file_konectivity_proto_rawDesc = nil
- file_konectivity_proto_goTypes = nil
- file_konectivity_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/destination_rule.pb.go b/gen/proto/networking/v1beta1/destination_rule.pb.go
deleted file mode 100644
index c1566e7..0000000
--- a/gen/proto/networking/v1beta1/destination_rule.pb.go
+++ /dev/null
@@ -1,2983 +0,0 @@
-// Copyright 2020 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/destination_rule.proto
-
-// $schema: istio.networking.v1beta1.DestinationRule
-// $title: Destination Rule
-// $description: Configuration affecting load balancing, outlier detection, etc.
-// $location: https://istio.io/docs/reference/config/networking/destination-rule.html
-// $aliases: [/docs/reference/config/networking/v1beta1/destination-rule]
-// $mode: none
-
-// `DestinationRule` defines policies that apply to traffic intended for a
-// service after routing has occurred. These rules specify configuration
-// for load balancing, connection pool size from the sidecar, and outlier
-// detection settings to detect and evict unhealthy hosts from the load
-// balancing pool. For example, a simple load balancing policy for the
-// ratings service would look as follows:
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// ```
-// {{}}
-// {{}}
-//
-// Version specific policies can be specified by defining a named
-// `subset` and overriding the settings specified at the service level. The
-// following rule uses a round robin load balancing policy for all traffic
-// going to a subset named testversion that is composed of endpoints (e.g.,
-// pods) with labels (version:v3).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-// **Note:** Policies specified for subsets will not take effect until
-// a route rule explicitly sends traffic to this subset.
-//
-// Traffic policies can be customized to specific ports as well. The
-// following rule uses the least connection load balancing policy for all
-// traffic to port 80, while uses a round robin load balancing setting for
-// traffic to the port 9080.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings-port
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy: # Apply to all ports
-// portLevelSettings:
-// - port:
-// number: 80
-// loadBalancer:
-// simple: LEAST_CONN
-// - port:
-// number: 9080
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings-port
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy: # Apply to all ports
-// portLevelSettings:
-// - port:
-// number: 80
-// loadBalancer:
-// simple: LEAST_CONN
-// - port:
-// number: 9080
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Standard load balancing algorithms that require no tuning.
-type LoadBalancerSettings_SimpleLB int32
-
-const (
- // Round Robin policy. Default
- LoadBalancerSettings_ROUND_ROBIN LoadBalancerSettings_SimpleLB = 0
- // The least request load balancer uses an O(1) algorithm which selects
- // two random healthy hosts and picks the host which has fewer active
- // requests.
- LoadBalancerSettings_LEAST_CONN LoadBalancerSettings_SimpleLB = 1
- // The random load balancer selects a random healthy host. The random
- // load balancer generally performs better than round robin if no health
- // checking policy is configured.
- LoadBalancerSettings_RANDOM LoadBalancerSettings_SimpleLB = 2
- // This option will forward the connection to the original IP address
- // requested by the caller without doing any form of load
- // balancing. This option must be used with care. It is meant for
- // advanced use cases. Refer to Original Destination load balancer in
- // Envoy for further details.
- LoadBalancerSettings_PASSTHROUGH LoadBalancerSettings_SimpleLB = 3
-)
-
-// Enum value maps for LoadBalancerSettings_SimpleLB.
-var (
- LoadBalancerSettings_SimpleLB_name = map[int32]string{
- 0: "ROUND_ROBIN",
- 1: "LEAST_CONN",
- 2: "RANDOM",
- 3: "PASSTHROUGH",
- }
- LoadBalancerSettings_SimpleLB_value = map[string]int32{
- "ROUND_ROBIN": 0,
- "LEAST_CONN": 1,
- "RANDOM": 2,
- "PASSTHROUGH": 3,
- }
-)
-
-func (x LoadBalancerSettings_SimpleLB) Enum() *LoadBalancerSettings_SimpleLB {
- p := new(LoadBalancerSettings_SimpleLB)
- *p = x
- return p
-}
-
-func (x LoadBalancerSettings_SimpleLB) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (LoadBalancerSettings_SimpleLB) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_destination_rule_proto_enumTypes[0].Descriptor()
-}
-
-func (LoadBalancerSettings_SimpleLB) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_destination_rule_proto_enumTypes[0]
-}
-
-func (x LoadBalancerSettings_SimpleLB) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use LoadBalancerSettings_SimpleLB.Descriptor instead.
-func (LoadBalancerSettings_SimpleLB) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{3, 0}
-}
-
-// Policy for upgrading http1.1 connections to http2.
-type ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy int32
-
-const (
- // Use the global default.
- ConnectionPoolSettings_HTTPSettings_DEFAULT ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy = 0
- // Do not upgrade the connection to http2.
- // This opt-out option overrides the default.
- ConnectionPoolSettings_HTTPSettings_DO_NOT_UPGRADE ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy = 1
- // Upgrade the connection to http2.
- // This opt-in option overrides the default.
- ConnectionPoolSettings_HTTPSettings_UPGRADE ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy = 2
-)
-
-// Enum value maps for ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy.
-var (
- ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy_name = map[int32]string{
- 0: "DEFAULT",
- 1: "DO_NOT_UPGRADE",
- 2: "UPGRADE",
- }
- ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy_value = map[string]int32{
- "DEFAULT": 0,
- "DO_NOT_UPGRADE": 1,
- "UPGRADE": 2,
- }
-)
-
-func (x ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy) Enum() *ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy {
- p := new(ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy)
- *p = x
- return p
-}
-
-func (x ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_destination_rule_proto_enumTypes[1].Descriptor()
-}
-
-func (ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_destination_rule_proto_enumTypes[1]
-}
-
-func (x ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy.Descriptor instead.
-func (ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{4, 1, 0}
-}
-
-// TLS connection mode
-type ClientTLSSettings_TLSmode int32
-
-const (
- // Do not setup a TLS connection to the upstream endpoint.
- ClientTLSSettings_DISABLE ClientTLSSettings_TLSmode = 0
- // Originate a TLS connection to the upstream endpoint.
- ClientTLSSettings_SIMPLE ClientTLSSettings_TLSmode = 1
- // Secure connections to the upstream using mutual TLS by presenting
- // client certificates for authentication.
- ClientTLSSettings_MUTUAL ClientTLSSettings_TLSmode = 2
- // Secure connections to the upstream using mutual TLS by presenting
- // client certificates for authentication.
- // Compared to Mutual mode, this mode uses certificates generated
- // automatically by Istio for mTLS authentication. When this mode is
- // used, all other fields in `ClientTLSSettings` should be empty.
- ClientTLSSettings_ISTIO_MUTUAL ClientTLSSettings_TLSmode = 3
-)
-
-// Enum value maps for ClientTLSSettings_TLSmode.
-var (
- ClientTLSSettings_TLSmode_name = map[int32]string{
- 0: "DISABLE",
- 1: "SIMPLE",
- 2: "MUTUAL",
- 3: "ISTIO_MUTUAL",
- }
- ClientTLSSettings_TLSmode_value = map[string]int32{
- "DISABLE": 0,
- "SIMPLE": 1,
- "MUTUAL": 2,
- "ISTIO_MUTUAL": 3,
- }
-)
-
-func (x ClientTLSSettings_TLSmode) Enum() *ClientTLSSettings_TLSmode {
- p := new(ClientTLSSettings_TLSmode)
- *p = x
- return p
-}
-
-func (x ClientTLSSettings_TLSmode) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ClientTLSSettings_TLSmode) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_destination_rule_proto_enumTypes[2].Descriptor()
-}
-
-func (ClientTLSSettings_TLSmode) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_destination_rule_proto_enumTypes[2]
-}
-
-func (x ClientTLSSettings_TLSmode) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ClientTLSSettings_TLSmode.Descriptor instead.
-func (ClientTLSSettings_TLSmode) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{6, 0}
-}
-
-// DestinationRule defines policies that apply to traffic intended for a service
-// after routing has occurred.
-//
-//
-//
-//
-//
-type DestinationRule struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of a service from the service registry. Service
- // names are looked up from the platform's service registry (e.g.,
- // Kubernetes services, Consul services, etc.) and from the hosts
- // declared by [ServiceEntries](https://istio.io/docs/reference/config/networking/service-entry/#ServiceEntry). Rules defined for
- // services that do not exist in the service registry will be ignored.
- //
- // *Note for Kubernetes users*: When short names are used (e.g. "reviews"
- // instead of "reviews.default.svc.cluster.local"), Istio will interpret
- // the short name based on the namespace of the rule, not the service. A
- // rule in the "default" namespace containing a host "reviews" will be
- // interpreted as "reviews.default.svc.cluster.local", irrespective of
- // the actual namespace associated with the reviews service. _To avoid
- // potential misconfigurations, it is recommended to always use fully
- // qualified domain names over short names._
- //
- // Note that the host field applies to both HTTP and TCP services.
- Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
- // Traffic policies to apply (load balancing policy, connection pool
- // sizes, outlier detection).
- TrafficPolicy *TrafficPolicy `protobuf:"bytes,2,opt,name=traffic_policy,json=trafficPolicy,proto3" json:"traffic_policy,omitempty"`
- // One or more named sets that represent individual versions of a
- // service. Traffic policies can be overridden at subset level.
- Subsets []*Subset `protobuf:"bytes,3,rep,name=subsets,proto3" json:"subsets,omitempty"`
- // A list of namespaces to which this destination rule is exported.
- // The resolution of a destination rule to apply to a service occurs in the
- // context of a hierarchy of namespaces. Exporting a destination rule allows
- // it to be included in the resolution hierarchy for services in
- // other namespaces. This feature provides a mechanism for service owners
- // and mesh administrators to control the visibility of destination rules
- // across namespace boundaries.
- //
- // If no namespaces are specified then the destination rule is exported to all
- // namespaces by default.
- //
- // The value "." is reserved and defines an export to the same namespace that
- // the destination rule is declared in. Similarly, the value "*" is reserved and
- // defines an export to all namespaces.
- ExportTo []string `protobuf:"bytes,4,rep,name=export_to,json=exportTo,proto3" json:"export_to,omitempty"`
-}
-
-func (x *DestinationRule) Reset() {
- *x = DestinationRule{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DestinationRule) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DestinationRule) ProtoMessage() {}
-
-func (x *DestinationRule) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DestinationRule.ProtoReflect.Descriptor instead.
-func (*DestinationRule) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *DestinationRule) GetHost() string {
- if x != nil {
- return x.Host
- }
- return ""
-}
-
-func (x *DestinationRule) GetTrafficPolicy() *TrafficPolicy {
- if x != nil {
- return x.TrafficPolicy
- }
- return nil
-}
-
-func (x *DestinationRule) GetSubsets() []*Subset {
- if x != nil {
- return x.Subsets
- }
- return nil
-}
-
-func (x *DestinationRule) GetExportTo() []string {
- if x != nil {
- return x.ExportTo
- }
- return nil
-}
-
-// Traffic policies to apply for a specific destination, across all
-// destination ports. See DestinationRule for examples.
-type TrafficPolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Settings controlling the load balancer algorithms.
- LoadBalancer *LoadBalancerSettings `protobuf:"bytes,1,opt,name=load_balancer,json=loadBalancer,proto3" json:"load_balancer,omitempty"`
- // Settings controlling the volume of connections to an upstream service
- ConnectionPool *ConnectionPoolSettings `protobuf:"bytes,2,opt,name=connection_pool,json=connectionPool,proto3" json:"connection_pool,omitempty"`
- // Settings controlling eviction of unhealthy hosts from the load balancing pool
- OutlierDetection *OutlierDetection `protobuf:"bytes,3,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"`
- // TLS related settings for connections to the upstream service.
- Tls *ClientTLSSettings `protobuf:"bytes,4,opt,name=tls,proto3" json:"tls,omitempty"`
- // Traffic policies specific to individual ports. Note that port level
- // settings will override the destination-level settings. Traffic
- // settings specified at the destination-level will not be inherited when
- // overridden by port-level settings, i.e. default values will be applied
- // to fields omitted in port-level traffic policies.
- PortLevelSettings []*TrafficPolicy_PortTrafficPolicy `protobuf:"bytes,5,rep,name=port_level_settings,json=portLevelSettings,proto3" json:"port_level_settings,omitempty"`
-}
-
-func (x *TrafficPolicy) Reset() {
- *x = TrafficPolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TrafficPolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TrafficPolicy) ProtoMessage() {}
-
-func (x *TrafficPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TrafficPolicy.ProtoReflect.Descriptor instead.
-func (*TrafficPolicy) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *TrafficPolicy) GetLoadBalancer() *LoadBalancerSettings {
- if x != nil {
- return x.LoadBalancer
- }
- return nil
-}
-
-func (x *TrafficPolicy) GetConnectionPool() *ConnectionPoolSettings {
- if x != nil {
- return x.ConnectionPool
- }
- return nil
-}
-
-func (x *TrafficPolicy) GetOutlierDetection() *OutlierDetection {
- if x != nil {
- return x.OutlierDetection
- }
- return nil
-}
-
-func (x *TrafficPolicy) GetTls() *ClientTLSSettings {
- if x != nil {
- return x.Tls
- }
- return nil
-}
-
-func (x *TrafficPolicy) GetPortLevelSettings() []*TrafficPolicy_PortTrafficPolicy {
- if x != nil {
- return x.PortLevelSettings
- }
- return nil
-}
-
-// A subset of endpoints of a service. Subsets can be used for scenarios
-// like A/B testing, or routing to a specific version of a service. Refer
-// to [VirtualService](https://istio.io/docs/reference/config/networking/virtual-service/#VirtualService) documentation for examples of using
-// subsets in these scenarios. In addition, traffic policies defined at the
-// service-level can be overridden at a subset-level. The following rule
-// uses a round robin load balancing policy for all traffic going to a
-// subset named testversion that is composed of endpoints (e.g., pods) with
-// labels (version:v3).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-// **Note:** Policies specified for subsets will not take effect until
-// a route rule explicitly sends traffic to this subset.
-//
-// One or more labels are typically required to identify the subset destination,
-// however, when the corresponding DestinationRule represents a host that
-// supports multiple SNI hosts (e.g., an egress gateway), a subset without labels
-// may be meaningful. In this case a traffic policy with [ClientTLSSettings](#ClientTLSSettings)
-// can be used to identify a specific SNI host corresponding to the named subset.
-type Subset struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Name of the subset. The service name and the subset name can
- // be used for traffic splitting in a route rule.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Labels apply a filter over the endpoints of a service in the
- // service registry. See route rules for examples of usage.
- Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Traffic policies that apply to this subset. Subsets inherit the
- // traffic policies specified at the DestinationRule level. Settings
- // specified at the subset level will override the corresponding settings
- // specified at the DestinationRule level.
- TrafficPolicy *TrafficPolicy `protobuf:"bytes,3,opt,name=traffic_policy,json=trafficPolicy,proto3" json:"traffic_policy,omitempty"`
-}
-
-func (x *Subset) Reset() {
- *x = Subset{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Subset) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Subset) ProtoMessage() {}
-
-func (x *Subset) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Subset.ProtoReflect.Descriptor instead.
-func (*Subset) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Subset) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Subset) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-func (x *Subset) GetTrafficPolicy() *TrafficPolicy {
- if x != nil {
- return x.TrafficPolicy
- }
- return nil
-}
-
-// Load balancing policies to apply for a specific destination. See Envoy's
-// load balancing
-// [documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancing)
-// for more details.
-//
-// For example, the following rule uses a round robin load balancing policy
-// for all traffic going to the ratings service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-// The following example sets up sticky sessions for the ratings service
-// hashing-based load balancer for the same ratings service using the
-// the User cookie as the hash key.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// consistentHash:
-// httpCookie:
-// name: user
-// ttl: 0s
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// consistentHash:
-// httpCookie:
-// name: user
-// ttl: 0s
-// ```
-// {{}}
-// {{}}
-//
-type LoadBalancerSettings struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Upstream load balancing policy.
- //
- // Types that are assignable to LbPolicy:
- // *LoadBalancerSettings_Simple
- // *LoadBalancerSettings_ConsistentHash
- LbPolicy isLoadBalancerSettings_LbPolicy `protobuf_oneof:"lb_policy"`
- // Locality load balancer settings, this will override mesh wide settings in entirety, meaning no merging would be performed
- // between this object and the object one in MeshConfig
- LocalityLbSetting *LocalityLoadBalancerSetting `protobuf:"bytes,3,opt,name=locality_lb_setting,json=localityLbSetting,proto3" json:"locality_lb_setting,omitempty"`
-}
-
-func (x *LoadBalancerSettings) Reset() {
- *x = LoadBalancerSettings{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerSettings) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerSettings) ProtoMessage() {}
-
-func (x *LoadBalancerSettings) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerSettings.ProtoReflect.Descriptor instead.
-func (*LoadBalancerSettings) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{3}
-}
-
-func (m *LoadBalancerSettings) GetLbPolicy() isLoadBalancerSettings_LbPolicy {
- if m != nil {
- return m.LbPolicy
- }
- return nil
-}
-
-func (x *LoadBalancerSettings) GetSimple() LoadBalancerSettings_SimpleLB {
- if x, ok := x.GetLbPolicy().(*LoadBalancerSettings_Simple); ok {
- return x.Simple
- }
- return LoadBalancerSettings_ROUND_ROBIN
-}
-
-func (x *LoadBalancerSettings) GetConsistentHash() *LoadBalancerSettings_ConsistentHashLB {
- if x, ok := x.GetLbPolicy().(*LoadBalancerSettings_ConsistentHash); ok {
- return x.ConsistentHash
- }
- return nil
-}
-
-func (x *LoadBalancerSettings) GetLocalityLbSetting() *LocalityLoadBalancerSetting {
- if x != nil {
- return x.LocalityLbSetting
- }
- return nil
-}
-
-type isLoadBalancerSettings_LbPolicy interface {
- isLoadBalancerSettings_LbPolicy()
-}
-
-type LoadBalancerSettings_Simple struct {
- Simple LoadBalancerSettings_SimpleLB `protobuf:"varint,1,opt,name=simple,proto3,enum=istio.networking.v1beta1.LoadBalancerSettings_SimpleLB,oneof"`
-}
-
-type LoadBalancerSettings_ConsistentHash struct {
- ConsistentHash *LoadBalancerSettings_ConsistentHashLB `protobuf:"bytes,2,opt,name=consistent_hash,json=consistentHash,proto3,oneof"`
-}
-
-func (*LoadBalancerSettings_Simple) isLoadBalancerSettings_LbPolicy() {}
-
-func (*LoadBalancerSettings_ConsistentHash) isLoadBalancerSettings_LbPolicy() {}
-
-// Connection pool settings for an upstream host. The settings apply to
-// each individual host in the upstream service. See Envoy's [circuit
-// breaker](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking)
-// for more details. Connection pool settings can be applied at the TCP
-// level as well as at HTTP level.
-//
-// For example, the following rule sets a limit of 100 connections to redis
-// service called myredissrv with a connect timeout of 30ms
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-redis
-// spec:
-// host: myredissrv.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// connectTimeout: 30ms
-// tcpKeepalive:
-// time: 7200s
-// interval: 75s
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-redis
-// spec:
-// host: myredissrv.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// connectTimeout: 30ms
-// tcpKeepalive:
-// time: 7200s
-// interval: 75s
-// ```
-// {{}}
-// {{}}
-//
-type ConnectionPoolSettings struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Settings common to both HTTP and TCP upstream connections.
- Tcp *ConnectionPoolSettings_TCPSettings `protobuf:"bytes,1,opt,name=tcp,proto3" json:"tcp,omitempty"`
- // HTTP connection pool settings.
- Http *ConnectionPoolSettings_HTTPSettings `protobuf:"bytes,2,opt,name=http,proto3" json:"http,omitempty"`
-}
-
-func (x *ConnectionPoolSettings) Reset() {
- *x = ConnectionPoolSettings{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ConnectionPoolSettings) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConnectionPoolSettings) ProtoMessage() {}
-
-func (x *ConnectionPoolSettings) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConnectionPoolSettings.ProtoReflect.Descriptor instead.
-func (*ConnectionPoolSettings) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *ConnectionPoolSettings) GetTcp() *ConnectionPoolSettings_TCPSettings {
- if x != nil {
- return x.Tcp
- }
- return nil
-}
-
-func (x *ConnectionPoolSettings) GetHttp() *ConnectionPoolSettings_HTTPSettings {
- if x != nil {
- return x.Http
- }
- return nil
-}
-
-// A Circuit breaker implementation that tracks the status of each
-// individual host in the upstream service. Applicable to both HTTP and
-// TCP services. For HTTP services, hosts that continually return 5xx
-// errors for API calls are ejected from the pool for a pre-defined period
-// of time. For TCP services, connection timeouts or connection
-// failures to a given host counts as an error when measuring the
-// consecutive errors metric. See Envoy's [outlier
-// detection](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/outlier)
-// for more details.
-//
-// The following rule sets a connection pool size of 100 HTTP1 connections
-// with no more than 10 req/connection to the "reviews" service. In addition,
-// it sets a limit of 1000 concurrent HTTP2 requests and configures upstream
-// hosts to be scanned every 5 mins so that any host that fails 7 consecutive
-// times with a 502, 503, or 504 error code will be ejected for 15 minutes.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-cb-policy
-// spec:
-// host: reviews.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// http:
-// http2MaxRequests: 1000
-// maxRequestsPerConnection: 10
-// outlierDetection:
-// consecutive5xxErrors: 7
-// interval: 5m
-// baseEjectionTime: 15m
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-cb-policy
-// spec:
-// host: reviews.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// http:
-// http2MaxRequests: 1000
-// maxRequestsPerConnection: 10
-// outlierDetection:
-// consecutive5xxErrors: 7
-// interval: 5m
-// baseEjectionTime: 15m
-// ```
-// {{}}
-// {{}}
-//
-type OutlierDetection struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Number of errors before a host is ejected from the connection
- // pool. Defaults to 5. When the upstream host is accessed over HTTP, a
- // 502, 503, or 504 return code qualifies as an error. When the upstream host
- // is accessed over an opaque TCP connection, connect timeouts and
- // connection error/failure events qualify as an error.
- // $hide_from_docs
- //
- // Deprecated: Do not use.
- ConsecutiveErrors int32 `protobuf:"varint,1,opt,name=consecutive_errors,json=consecutiveErrors,proto3" json:"consecutive_errors,omitempty"`
- // Determines whether to distinguish local origin failures from external errors. If set to true
- // consecutive_local_origin_failure is taken into account for outlier detection calculations.
- // This should be used when you want to derive the outlier detection status based on the errors
- // seen locally such as failure to connect, timeout while connecting etc. rather than the status code
- // retuned by upstream service. This is especially useful when the upstream service explicitly returns
- // a 5xx for some requests and you want to ignore those responses from upstream service while determining
- // the outlier detection status of a host.
- // Defaults to false.
- SplitExternalLocalOriginErrors bool `protobuf:"varint,8,opt,name=split_external_local_origin_errors,json=splitExternalLocalOriginErrors,proto3" json:"split_external_local_origin_errors,omitempty"`
- // The number of consecutive locally originated failures before ejection
- // occurs. Defaults to 5. Parameter takes effect only when split_external_local_origin_errors
- // is set to true.
- ConsecutiveLocalOriginFailures *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=consecutive_local_origin_failures,json=consecutiveLocalOriginFailures,proto3" json:"consecutive_local_origin_failures,omitempty"`
- // Number of gateway errors before a host is ejected from the connection pool.
- // When the upstream host is accessed over HTTP, a 502, 503, or 504 return
- // code qualifies as a gateway error. When the upstream host is accessed over
- // an opaque TCP connection, connect timeouts and connection error/failure
- // events qualify as a gateway error.
- // This feature is disabled by default or when set to the value 0.
- //
- // Note that consecutive_gateway_errors and consecutive_5xx_errors can be
- // used separately or together. Because the errors counted by
- // consecutive_gateway_errors are also included in consecutive_5xx_errors,
- // if the value of consecutive_gateway_errors is greater than or equal to
- // the value of consecutive_5xx_errors, consecutive_gateway_errors will have
- // no effect.
- ConsecutiveGatewayErrors *wrapperspb.UInt32Value `protobuf:"bytes,6,opt,name=consecutive_gateway_errors,json=consecutiveGatewayErrors,proto3" json:"consecutive_gateway_errors,omitempty"`
- // Number of 5xx errors before a host is ejected from the connection pool.
- // When the upstream host is accessed over an opaque TCP connection, connect
- // timeouts, connection error/failure and request failure events qualify as a
- // 5xx error.
- // This feature defaults to 5 but can be disabled by setting the value to 0.
- //
- // Note that consecutive_gateway_errors and consecutive_5xx_errors can be
- // used separately or together. Because the errors counted by
- // consecutive_gateway_errors are also included in consecutive_5xx_errors,
- // if the value of consecutive_gateway_errors is greater than or equal to
- // the value of consecutive_5xx_errors, consecutive_gateway_errors will have
- // no effect.
- Consecutive_5XxErrors *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=consecutive_5xx_errors,json=consecutive5xxErrors,proto3" json:"consecutive_5xx_errors,omitempty"`
- // Time interval between ejection sweep analysis. format:
- // 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.
- Interval *durationpb.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"`
- // Minimum ejection duration. A host will remain ejected for a period
- // equal to the product of minimum ejection duration and the number of
- // times the host has been ejected. This technique allows the system to
- // automatically increase the ejection period for unhealthy upstream
- // servers. format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 30s.
- BaseEjectionTime *durationpb.Duration `protobuf:"bytes,3,opt,name=base_ejection_time,json=baseEjectionTime,proto3" json:"base_ejection_time,omitempty"`
- // Maximum % of hosts in the load balancing pool for the upstream
- // service that can be ejected. Defaults to 10%.
- MaxEjectionPercent int32 `protobuf:"varint,4,opt,name=max_ejection_percent,json=maxEjectionPercent,proto3" json:"max_ejection_percent,omitempty"`
- // Outlier detection will be enabled as long as the associated load balancing
- // pool has at least min_health_percent hosts in healthy mode. When the
- // percentage of healthy hosts in the load balancing pool drops below this
- // threshold, outlier detection will be disabled and the proxy will load balance
- // across all hosts in the pool (healthy and unhealthy). The threshold can be
- // disabled by setting it to 0%. The default is 0% as it's not typically
- // applicable in k8s environments with few pods per service.
- MinHealthPercent int32 `protobuf:"varint,5,opt,name=min_health_percent,json=minHealthPercent,proto3" json:"min_health_percent,omitempty"`
-}
-
-func (x *OutlierDetection) Reset() {
- *x = OutlierDetection{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OutlierDetection) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OutlierDetection) ProtoMessage() {}
-
-func (x *OutlierDetection) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OutlierDetection.ProtoReflect.Descriptor instead.
-func (*OutlierDetection) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{5}
-}
-
-// Deprecated: Do not use.
-func (x *OutlierDetection) GetConsecutiveErrors() int32 {
- if x != nil {
- return x.ConsecutiveErrors
- }
- return 0
-}
-
-func (x *OutlierDetection) GetSplitExternalLocalOriginErrors() bool {
- if x != nil {
- return x.SplitExternalLocalOriginErrors
- }
- return false
-}
-
-func (x *OutlierDetection) GetConsecutiveLocalOriginFailures() *wrapperspb.UInt32Value {
- if x != nil {
- return x.ConsecutiveLocalOriginFailures
- }
- return nil
-}
-
-func (x *OutlierDetection) GetConsecutiveGatewayErrors() *wrapperspb.UInt32Value {
- if x != nil {
- return x.ConsecutiveGatewayErrors
- }
- return nil
-}
-
-func (x *OutlierDetection) GetConsecutive_5XxErrors() *wrapperspb.UInt32Value {
- if x != nil {
- return x.Consecutive_5XxErrors
- }
- return nil
-}
-
-func (x *OutlierDetection) GetInterval() *durationpb.Duration {
- if x != nil {
- return x.Interval
- }
- return nil
-}
-
-func (x *OutlierDetection) GetBaseEjectionTime() *durationpb.Duration {
- if x != nil {
- return x.BaseEjectionTime
- }
- return nil
-}
-
-func (x *OutlierDetection) GetMaxEjectionPercent() int32 {
- if x != nil {
- return x.MaxEjectionPercent
- }
- return 0
-}
-
-func (x *OutlierDetection) GetMinHealthPercent() int32 {
- if x != nil {
- return x.MinHealthPercent
- }
- return 0
-}
-
-// SSL/TLS related settings for upstream connections. See Envoy's [TLS
-// context](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto.html#common-tls-configuration)
-// for more details. These settings are common to both HTTP and TCP upstreams.
-//
-// For example, the following rule configures a client to use mutual TLS
-// for connections to upstream database cluster.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: db-mtls
-// spec:
-// host: mydbserver.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: db-mtls
-// spec:
-// host: mydbserver.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-// {{}}
-//
-// The following rule configures a client to use TLS when talking to a
-// foreign service whose domain matches *.foo.com.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: tls-foo
-// spec:
-// host: "*.foo.com"
-// trafficPolicy:
-// tls:
-// mode: SIMPLE
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: tls-foo
-// spec:
-// host: "*.foo.com"
-// trafficPolicy:
-// tls:
-// mode: SIMPLE
-// ```
-// {{}}
-// {{}}
-//
-// The following rule configures a client to use Istio mutual TLS when talking
-// to rating services.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: ratings-istio-mtls
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: ISTIO_MUTUAL
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: ratings-istio-mtls
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: ISTIO_MUTUAL
-// ```
-// {{}}
-// {{}}
-//
-type ClientTLSSettings struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Indicates whether connections to this port should be secured
- // using TLS. The value of this field determines how TLS is enforced.
- Mode ClientTLSSettings_TLSmode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.networking.v1beta1.ClientTLSSettings_TLSmode" json:"mode,omitempty"`
- // REQUIRED if mode is `MUTUAL`. The path to the file holding the
- // client-side TLS certificate to use.
- // Should be empty if mode is `ISTIO_MUTUAL`.
- ClientCertificate string `protobuf:"bytes,2,opt,name=client_certificate,json=clientCertificate,proto3" json:"client_certificate,omitempty"`
- // REQUIRED if mode is `MUTUAL`. The path to the file holding the
- // client's private key.
- // Should be empty if mode is `ISTIO_MUTUAL`.
- PrivateKey string `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
- // OPTIONAL: The path to the file containing certificate authority
- // certificates to use in verifying a presented server certificate. If
- // omitted, the proxy will not verify the server's certificate.
- // Should be empty if mode is `ISTIO_MUTUAL`.
- CaCertificates string `protobuf:"bytes,4,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"`
- // The name of the secret that holds the TLS certs for the
- // client including the CA certificates. Secret must exist in the
- // same namespace with the proxy using the certificates.
- // The secret (of type `generic`)should contain the
- // following keys and values: `key: `,
- // `cert: `, `cacert: `.
- // Here CACertificate is used to verify the server certificate.
- // Secret of type tls for client certificates along with
- // ca.crt key for CA certificates is also supported.
- // Only one of client certificates and CA certificate
- // or credentialName can be specified.
- //
- // **NOTE:** This field is currently applicable only at gateways.
- // Sidecars will continue to use the certificate paths.
- CredentialName string `protobuf:"bytes,7,opt,name=credential_name,json=credentialName,proto3" json:"credential_name,omitempty"`
- // A list of alternate names to verify the subject identity in the
- // certificate. If specified, the proxy will verify that the server
- // certificate's subject alt name matches one of the specified values.
- // If specified, this list overrides the value of subject_alt_names
- // from the ServiceEntry.
- SubjectAltNames []string `protobuf:"bytes,5,rep,name=subject_alt_names,json=subjectAltNames,proto3" json:"subject_alt_names,omitempty"`
- // SNI string to present to the server during TLS handshake.
- Sni string `protobuf:"bytes,6,opt,name=sni,proto3" json:"sni,omitempty"`
- // InsecureSkipVerify specifies whether the proxy should skip verifying the
- // CA signature and SAN for the server certificate corresponding to the host.
- // This flag should only be set if global CA signature verifcation is
- // enabled, `VerifyCertAtClient` environmental variable is set to `true`,
- // but no verification is desired for a specific host. If enabled with or
- // without `VerifyCertAtClient` enabled, verification of the CA signature and
- // SAN will be skipped.
- //
- // `InsecureSkipVerify` is `false` by default.
- // `VerifyCertAtClient` is `false` by default in Istio version 1.9 but will
- // be `true` by default in a later version where, going forward, it will be
- // enabled by default.
- InsecureSkipVerify *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"`
-}
-
-func (x *ClientTLSSettings) Reset() {
- *x = ClientTLSSettings{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClientTLSSettings) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClientTLSSettings) ProtoMessage() {}
-
-func (x *ClientTLSSettings) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClientTLSSettings.ProtoReflect.Descriptor instead.
-func (*ClientTLSSettings) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *ClientTLSSettings) GetMode() ClientTLSSettings_TLSmode {
- if x != nil {
- return x.Mode
- }
- return ClientTLSSettings_DISABLE
-}
-
-func (x *ClientTLSSettings) GetClientCertificate() string {
- if x != nil {
- return x.ClientCertificate
- }
- return ""
-}
-
-func (x *ClientTLSSettings) GetPrivateKey() string {
- if x != nil {
- return x.PrivateKey
- }
- return ""
-}
-
-func (x *ClientTLSSettings) GetCaCertificates() string {
- if x != nil {
- return x.CaCertificates
- }
- return ""
-}
-
-func (x *ClientTLSSettings) GetCredentialName() string {
- if x != nil {
- return x.CredentialName
- }
- return ""
-}
-
-func (x *ClientTLSSettings) GetSubjectAltNames() []string {
- if x != nil {
- return x.SubjectAltNames
- }
- return nil
-}
-
-func (x *ClientTLSSettings) GetSni() string {
- if x != nil {
- return x.Sni
- }
- return ""
-}
-
-func (x *ClientTLSSettings) GetInsecureSkipVerify() *wrapperspb.BoolValue {
- if x != nil {
- return x.InsecureSkipVerify
- }
- return nil
-}
-
-// Locality-weighted load balancing allows administrators to control the
-// distribution of traffic to endpoints based on the localities of where the
-// traffic originates and where it will terminate. These localities are
-// specified using arbitrary labels that designate a hierarchy of localities in
-// {region}/{zone}/{sub-zone} form. For additional detail refer to
-// [Locality Weight](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/locality_weight)
-// The following example shows how to setup locality weights mesh-wide.
-//
-// Given a mesh with workloads and their service deployed to "us-west/zone1/*"
-// and "us-west/zone2/*". This example specifies that when traffic accessing a
-// service originates from workloads in "us-west/zone1/*", 80% of the traffic
-// will be sent to endpoints in "us-west/zone1/*", i.e the same zone, and the
-// remaining 20% will go to endpoints in "us-west/zone2/*". This setup is
-// intended to favor routing traffic to endpoints in the same locality.
-// A similar setting is specified for traffic originating in "us-west/zone2/*".
-//
-// ```yaml
-// distribute:
-// - from: us-west/zone1/*
-// to:
-// "us-west/zone1/*": 80
-// "us-west/zone2/*": 20
-// - from: us-west/zone2/*
-// to:
-// "us-west/zone1/*": 20
-// "us-west/zone2/*": 80
-// ```
-//
-// If the goal of the operator is not to distribute load across zones and
-// regions but rather to restrict the regionality of failover to meet other
-// operational requirements an operator can set a 'failover' policy instead of
-// a 'distribute' policy.
-//
-// The following example sets up a locality failover policy for regions.
-// Assume a service resides in zones within us-east, us-west & eu-west
-// this example specifies that when endpoints within us-east become unhealthy
-// traffic should failover to endpoints in any zone or sub-zone within eu-west
-// and similarly us-west should failover to us-east.
-//
-// ```yaml
-// failover:
-// - from: us-east
-// to: eu-west
-// - from: us-west
-// to: us-east
-// ```
-// Locality load balancing settings.
-type LocalityLoadBalancerSetting struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional: only one of distribute, failover or failoverPriority can be set.
- // Explicitly specify loadbalancing weight across different zones and geographical locations.
- // Refer to [Locality weighted load balancing](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/locality_weight)
- // If empty, the locality weight is set according to the endpoints number within it.
- Distribute []*LocalityLoadBalancerSetting_Distribute `protobuf:"bytes,1,rep,name=distribute,proto3" json:"distribute,omitempty"`
- // Optional: only one of distribute, failover or failoverPriority can be set.
- // Explicitly specify the region traffic will land on when endpoints in local region becomes unhealthy.
- // Should be used together with OutlierDetection to detect unhealthy endpoints.
- // Note: if no OutlierDetection specified, this will not take effect.
- Failover []*LocalityLoadBalancerSetting_Failover `protobuf:"bytes,2,rep,name=failover,proto3" json:"failover,omitempty"`
- // failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.
- // This is to support traffic failover across different groups of endpoints.
- // Suppose there are total N labels specified:
- //
- // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority.
- // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority.
- // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority.
- // 4. All the other endpoints have priority P(N) i.e. lowest priority.
- //
- // Note: For a label to be considered for match, the previous labels must match, i.e. nth label would be considered matched only if first n-1 labels match.
- //
- // It can be any label specified on both client and server workloads.
- // The following labels which have special semantic meaning are also supported:
- //
- // - `topology.istio.io/network` is used to match the network metadata of an endpoint, which can be specified by pod/namespace label `topology.istio.io/network`, sidecar env `ISTIO_META_NETWORK` or MeshNetworks.
- // - `topology.istio.io/cluster` is used to match the clusterID of an endpoint, which can be specified by pod label `topology.istio.io/cluster` or pod env `ISTIO_META_CLUSTER_ID`.
- // - `topology.kubernetes.io/region` is used to match the region metadata of an endpoint, which maps to Kubernetes node label `topology.kubernetes.io/region` or the deprecated label `failure-domain.beta.kubernetes.io/region`.
- // - `topology.kubernetes.io/zone` is used to match the zone metadata of an endpoint, which maps to Kubernetes node label `topology.kubernetes.io/zone` or the deprecated label `failure-domain.beta.kubernetes.io/zone`.
- // - `topology.istio.io/subzone` is used to match the subzone metadata of an endpoint, which maps to Istio node label `topology.istio.io/subzone`.
- //
- // The below topology config indicates the following priority levels:
- //
- // ```yaml
- // failoverPriority:
- // - "topology.istio.io/network"
- // - "topology.kubernetes.io/region"
- // - "topology.kubernetes.io/zone"
- // - "topology.istio.io/subzone"
- // ```
- //
- // 1. endpoints match same [network, region, zone, subzone] label with the client proxy have the highest priority.
- // 2. endpoints have same [network, region, zone] label but different [subzone] label with the client proxy have the second highest priority.
- // 3. endpoints have same [network, region] label but different [zone] label with the client proxy have the third highest priority.
- // 4. endpoints have same [network] but different [region] labels with the client proxy have the fourth highest priority.
- // 5. all the other endpoints have the same lowest priority.
- //
- // Optional: only one of distribute, failover or failoverPriority can be set.
- // And it should be used together with `OutlierDetection` to detect unhealthy endpoints, otherwise has no effect.
- FailoverPriority []string `protobuf:"bytes,4,rep,name=failover_priority,json=failoverPriority,proto3" json:"failover_priority,omitempty"`
- // enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.
- // e.g. true means that turn on locality load balancing for this DestinationRule no matter what mesh wide settings is.
- Enabled *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
-}
-
-func (x *LocalityLoadBalancerSetting) Reset() {
- *x = LocalityLoadBalancerSetting{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LocalityLoadBalancerSetting) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LocalityLoadBalancerSetting) ProtoMessage() {}
-
-func (x *LocalityLoadBalancerSetting) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LocalityLoadBalancerSetting.ProtoReflect.Descriptor instead.
-func (*LocalityLoadBalancerSetting) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *LocalityLoadBalancerSetting) GetDistribute() []*LocalityLoadBalancerSetting_Distribute {
- if x != nil {
- return x.Distribute
- }
- return nil
-}
-
-func (x *LocalityLoadBalancerSetting) GetFailover() []*LocalityLoadBalancerSetting_Failover {
- if x != nil {
- return x.Failover
- }
- return nil
-}
-
-func (x *LocalityLoadBalancerSetting) GetFailoverPriority() []string {
- if x != nil {
- return x.FailoverPriority
- }
- return nil
-}
-
-func (x *LocalityLoadBalancerSetting) GetEnabled() *wrapperspb.BoolValue {
- if x != nil {
- return x.Enabled
- }
- return nil
-}
-
-// Traffic policies that apply to specific ports of the service
-type TrafficPolicy_PortTrafficPolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Specifies the number of a port on the destination service
- // on which this policy is being applied.
- //
- Port *PortSelector `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"`
- // Settings controlling the load balancer algorithms.
- LoadBalancer *LoadBalancerSettings `protobuf:"bytes,2,opt,name=load_balancer,json=loadBalancer,proto3" json:"load_balancer,omitempty"`
- // Settings controlling the volume of connections to an upstream service
- ConnectionPool *ConnectionPoolSettings `protobuf:"bytes,3,opt,name=connection_pool,json=connectionPool,proto3" json:"connection_pool,omitempty"`
- // Settings controlling eviction of unhealthy hosts from the load balancing pool
- OutlierDetection *OutlierDetection `protobuf:"bytes,4,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"`
- // TLS related settings for connections to the upstream service.
- Tls *ClientTLSSettings `protobuf:"bytes,5,opt,name=tls,proto3" json:"tls,omitempty"`
-}
-
-func (x *TrafficPolicy_PortTrafficPolicy) Reset() {
- *x = TrafficPolicy_PortTrafficPolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TrafficPolicy_PortTrafficPolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TrafficPolicy_PortTrafficPolicy) ProtoMessage() {}
-
-func (x *TrafficPolicy_PortTrafficPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TrafficPolicy_PortTrafficPolicy.ProtoReflect.Descriptor instead.
-func (*TrafficPolicy_PortTrafficPolicy) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{1, 0}
-}
-
-func (x *TrafficPolicy_PortTrafficPolicy) GetPort() *PortSelector {
- if x != nil {
- return x.Port
- }
- return nil
-}
-
-func (x *TrafficPolicy_PortTrafficPolicy) GetLoadBalancer() *LoadBalancerSettings {
- if x != nil {
- return x.LoadBalancer
- }
- return nil
-}
-
-func (x *TrafficPolicy_PortTrafficPolicy) GetConnectionPool() *ConnectionPoolSettings {
- if x != nil {
- return x.ConnectionPool
- }
- return nil
-}
-
-func (x *TrafficPolicy_PortTrafficPolicy) GetOutlierDetection() *OutlierDetection {
- if x != nil {
- return x.OutlierDetection
- }
- return nil
-}
-
-func (x *TrafficPolicy_PortTrafficPolicy) GetTls() *ClientTLSSettings {
- if x != nil {
- return x.Tls
- }
- return nil
-}
-
-// Consistent Hash-based load balancing can be used to provide soft
-// session affinity based on HTTP headers, cookies or other
-// properties. The affinity to a particular destination host will be
-// lost when one or more hosts are added/removed from the destination
-// service.
-type LoadBalancerSettings_ConsistentHashLB struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The hash key to use.
- //
- // Types that are assignable to HashKey:
- // *LoadBalancerSettings_ConsistentHashLB_HttpHeaderName
- // *LoadBalancerSettings_ConsistentHashLB_HttpCookie
- // *LoadBalancerSettings_ConsistentHashLB_UseSourceIp
- // *LoadBalancerSettings_ConsistentHashLB_HttpQueryParameterName
- HashKey isLoadBalancerSettings_ConsistentHashLB_HashKey `protobuf_oneof:"hash_key"`
- // The minimum number of virtual nodes to use for the hash
- // ring. Defaults to 1024. Larger ring sizes result in more granular
- // load distributions. If the number of hosts in the load balancing
- // pool is larger than the ring size, each host will be assigned a
- // single virtual node.
- MinimumRingSize uint64 `protobuf:"varint,4,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"`
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) Reset() {
- *x = LoadBalancerSettings_ConsistentHashLB{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerSettings_ConsistentHashLB) ProtoMessage() {}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerSettings_ConsistentHashLB.ProtoReflect.Descriptor instead.
-func (*LoadBalancerSettings_ConsistentHashLB) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{3, 0}
-}
-
-func (m *LoadBalancerSettings_ConsistentHashLB) GetHashKey() isLoadBalancerSettings_ConsistentHashLB_HashKey {
- if m != nil {
- return m.HashKey
- }
- return nil
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) GetHttpHeaderName() string {
- if x, ok := x.GetHashKey().(*LoadBalancerSettings_ConsistentHashLB_HttpHeaderName); ok {
- return x.HttpHeaderName
- }
- return ""
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) GetHttpCookie() *LoadBalancerSettings_ConsistentHashLB_HTTPCookie {
- if x, ok := x.GetHashKey().(*LoadBalancerSettings_ConsistentHashLB_HttpCookie); ok {
- return x.HttpCookie
- }
- return nil
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) GetUseSourceIp() bool {
- if x, ok := x.GetHashKey().(*LoadBalancerSettings_ConsistentHashLB_UseSourceIp); ok {
- return x.UseSourceIp
- }
- return false
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) GetHttpQueryParameterName() string {
- if x, ok := x.GetHashKey().(*LoadBalancerSettings_ConsistentHashLB_HttpQueryParameterName); ok {
- return x.HttpQueryParameterName
- }
- return ""
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB) GetMinimumRingSize() uint64 {
- if x != nil {
- return x.MinimumRingSize
- }
- return 0
-}
-
-type isLoadBalancerSettings_ConsistentHashLB_HashKey interface {
- isLoadBalancerSettings_ConsistentHashLB_HashKey()
-}
-
-type LoadBalancerSettings_ConsistentHashLB_HttpHeaderName struct {
- // Hash based on a specific HTTP header.
- HttpHeaderName string `protobuf:"bytes,1,opt,name=http_header_name,json=httpHeaderName,proto3,oneof"`
-}
-
-type LoadBalancerSettings_ConsistentHashLB_HttpCookie struct {
- // Hash based on HTTP cookie.
- HttpCookie *LoadBalancerSettings_ConsistentHashLB_HTTPCookie `protobuf:"bytes,2,opt,name=http_cookie,json=httpCookie,proto3,oneof"`
-}
-
-type LoadBalancerSettings_ConsistentHashLB_UseSourceIp struct {
- // Hash based on the source IP address.
- // This is applicable for both TCP and HTTP connections.
- UseSourceIp bool `protobuf:"varint,3,opt,name=use_source_ip,json=useSourceIp,proto3,oneof"`
-}
-
-type LoadBalancerSettings_ConsistentHashLB_HttpQueryParameterName struct {
- // Hash based on a specific HTTP query parameter.
- HttpQueryParameterName string `protobuf:"bytes,5,opt,name=http_query_parameter_name,json=httpQueryParameterName,proto3,oneof"`
-}
-
-func (*LoadBalancerSettings_ConsistentHashLB_HttpHeaderName) isLoadBalancerSettings_ConsistentHashLB_HashKey() {
-}
-
-func (*LoadBalancerSettings_ConsistentHashLB_HttpCookie) isLoadBalancerSettings_ConsistentHashLB_HashKey() {
-}
-
-func (*LoadBalancerSettings_ConsistentHashLB_UseSourceIp) isLoadBalancerSettings_ConsistentHashLB_HashKey() {
-}
-
-func (*LoadBalancerSettings_ConsistentHashLB_HttpQueryParameterName) isLoadBalancerSettings_ConsistentHashLB_HashKey() {
-}
-
-// Describes a HTTP cookie that will be used as the hash key for the
-// Consistent Hash load balancer. If the cookie is not present, it will
-// be generated.
-type LoadBalancerSettings_ConsistentHashLB_HTTPCookie struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Name of the cookie.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Path to set for the cookie.
- Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
- // Lifetime of the cookie.
- Ttl *durationpb.Duration `protobuf:"bytes,3,opt,name=ttl,proto3" json:"ttl,omitempty"`
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Reset() {
- *x = LoadBalancerSettings_ConsistentHashLB_HTTPCookie{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LoadBalancerSettings_ConsistentHashLB_HTTPCookie) ProtoMessage() {}
-
-func (x *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LoadBalancerSettings_ConsistentHashLB_HTTPCookie.ProtoReflect.Descriptor instead.
-func (*LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{3, 0, 0}
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) GetPath() string {
- if x != nil {
- return x.Path
- }
- return ""
-}
-
-func (x *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) GetTtl() *durationpb.Duration {
- if x != nil {
- return x.Ttl
- }
- return nil
-}
-
-// Settings common to both HTTP and TCP upstream connections.
-type ConnectionPoolSettings_TCPSettings struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Maximum number of HTTP1 /TCP connections to a destination host. Default 2^32-1.
- MaxConnections int32 `protobuf:"varint,1,opt,name=max_connections,json=maxConnections,proto3" json:"max_connections,omitempty"`
- // TCP connection timeout. format:
- // 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.
- ConnectTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"`
- // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
- TcpKeepalive *ConnectionPoolSettings_TCPSettings_TcpKeepalive `protobuf:"bytes,3,opt,name=tcp_keepalive,json=tcpKeepalive,proto3" json:"tcp_keepalive,omitempty"`
-}
-
-func (x *ConnectionPoolSettings_TCPSettings) Reset() {
- *x = ConnectionPoolSettings_TCPSettings{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ConnectionPoolSettings_TCPSettings) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConnectionPoolSettings_TCPSettings) ProtoMessage() {}
-
-func (x *ConnectionPoolSettings_TCPSettings) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConnectionPoolSettings_TCPSettings.ProtoReflect.Descriptor instead.
-func (*ConnectionPoolSettings_TCPSettings) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{4, 0}
-}
-
-func (x *ConnectionPoolSettings_TCPSettings) GetMaxConnections() int32 {
- if x != nil {
- return x.MaxConnections
- }
- return 0
-}
-
-func (x *ConnectionPoolSettings_TCPSettings) GetConnectTimeout() *durationpb.Duration {
- if x != nil {
- return x.ConnectTimeout
- }
- return nil
-}
-
-func (x *ConnectionPoolSettings_TCPSettings) GetTcpKeepalive() *ConnectionPoolSettings_TCPSettings_TcpKeepalive {
- if x != nil {
- return x.TcpKeepalive
- }
- return nil
-}
-
-// Settings applicable to HTTP1.1/HTTP2/GRPC connections.
-type ConnectionPoolSettings_HTTPSettings struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Maximum number of pending HTTP requests to a destination. Default 2^32-1.
- Http1MaxPendingRequests int32 `protobuf:"varint,1,opt,name=http1_max_pending_requests,json=http1MaxPendingRequests,proto3" json:"http1_max_pending_requests,omitempty"`
- // Maximum number of requests to a backend. Default 2^32-1.
- Http2MaxRequests int32 `protobuf:"varint,2,opt,name=http2_max_requests,json=http2MaxRequests,proto3" json:"http2_max_requests,omitempty"`
- // Maximum number of requests per connection to a backend. Setting this
- // parameter to 1 disables keep alive. Default 0, meaning "unlimited",
- // up to 2^29.
- MaxRequestsPerConnection int32 `protobuf:"varint,3,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"`
- // Maximum number of retries that can be outstanding to all hosts in a
- // cluster at a given time. Defaults to 2^32-1.
- MaxRetries int32 `protobuf:"varint,4,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"`
- // The idle timeout for upstream connection pool connections. The idle timeout
- // is defined as the period in which there are no active requests.
- // If not set, the default is 1 hour. When the idle timeout is reached,
- // the connection will be closed. If the connection is an HTTP/2
- // connection a drain sequence will occur prior to closing the connection.
- // Note that request based timeouts mean that HTTP/2 PINGs will not
- // keep the connection alive. Applies to both HTTP1.1 and HTTP2 connections.
- IdleTimeout *durationpb.Duration `protobuf:"bytes,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
- // Specify if http1.1 connection should be upgraded to http2 for the associated destination.
- H2UpgradePolicy ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy `protobuf:"varint,6,opt,name=h2_upgrade_policy,json=h2UpgradePolicy,proto3,enum=istio.networking.v1beta1.ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy" json:"h2_upgrade_policy,omitempty"`
- // If set to true, client protocol will be preserved while initiating connection to backend.
- // Note that when this is set to true, h2_upgrade_policy will be ineffective i.e. the client
- // connections will not be upgraded to http2.
- UseClientProtocol bool `protobuf:"varint,7,opt,name=use_client_protocol,json=useClientProtocol,proto3" json:"use_client_protocol,omitempty"`
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) Reset() {
- *x = ConnectionPoolSettings_HTTPSettings{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConnectionPoolSettings_HTTPSettings) ProtoMessage() {}
-
-func (x *ConnectionPoolSettings_HTTPSettings) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConnectionPoolSettings_HTTPSettings.ProtoReflect.Descriptor instead.
-func (*ConnectionPoolSettings_HTTPSettings) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{4, 1}
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) GetHttp1MaxPendingRequests() int32 {
- if x != nil {
- return x.Http1MaxPendingRequests
- }
- return 0
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) GetHttp2MaxRequests() int32 {
- if x != nil {
- return x.Http2MaxRequests
- }
- return 0
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) GetMaxRequestsPerConnection() int32 {
- if x != nil {
- return x.MaxRequestsPerConnection
- }
- return 0
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) GetMaxRetries() int32 {
- if x != nil {
- return x.MaxRetries
- }
- return 0
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) GetIdleTimeout() *durationpb.Duration {
- if x != nil {
- return x.IdleTimeout
- }
- return nil
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) GetH2UpgradePolicy() ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy {
- if x != nil {
- return x.H2UpgradePolicy
- }
- return ConnectionPoolSettings_HTTPSettings_DEFAULT
-}
-
-func (x *ConnectionPoolSettings_HTTPSettings) GetUseClientProtocol() bool {
- if x != nil {
- return x.UseClientProtocol
- }
- return false
-}
-
-// TCP keepalive.
-type ConnectionPoolSettings_TCPSettings_TcpKeepalive struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Maximum number of keepalive probes to send without response before
- // deciding the connection is dead. Default is to use the OS level configuration
- // (unless overridden, Linux defaults to 9.)
- Probes uint32 `protobuf:"varint,1,opt,name=probes,proto3" json:"probes,omitempty"`
- // The time duration a connection needs to be idle before keep-alive
- // probes start being sent. Default is to use the OS level configuration
- // (unless overridden, Linux defaults to 7200s (ie 2 hours.)
- Time *durationpb.Duration `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
- // The time duration between keep-alive probes.
- // Default is to use the OS level configuration
- // (unless overridden, Linux defaults to 75s.)
- Interval *durationpb.Duration `protobuf:"bytes,3,opt,name=interval,proto3" json:"interval,omitempty"`
-}
-
-func (x *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Reset() {
- *x = ConnectionPoolSettings_TCPSettings_TcpKeepalive{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ConnectionPoolSettings_TCPSettings_TcpKeepalive) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConnectionPoolSettings_TCPSettings_TcpKeepalive) ProtoMessage() {}
-
-func (x *ConnectionPoolSettings_TCPSettings_TcpKeepalive) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConnectionPoolSettings_TCPSettings_TcpKeepalive.ProtoReflect.Descriptor instead.
-func (*ConnectionPoolSettings_TCPSettings_TcpKeepalive) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{4, 0, 0}
-}
-
-func (x *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetProbes() uint32 {
- if x != nil {
- return x.Probes
- }
- return 0
-}
-
-func (x *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetTime() *durationpb.Duration {
- if x != nil {
- return x.Time
- }
- return nil
-}
-
-func (x *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetInterval() *durationpb.Duration {
- if x != nil {
- return x.Interval
- }
- return nil
-}
-
-// Describes how traffic originating in the 'from' zone or sub-zone is
-// distributed over a set of 'to' zones. Syntax for specifying a zone is
-// {region}/{zone}/{sub-zone} and terminal wildcards are allowed on any
-// segment of the specification. Examples:
-//
-// `*` - matches all localities
-//
-// `us-west/*` - all zones and sub-zones within the us-west region
-//
-// `us-west/zone-1/*` - all sub-zones within us-west/zone-1
-type LocalityLoadBalancerSetting_Distribute struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Originating locality, '/' separated, e.g. 'region/zone/sub_zone'.
- From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
- // Map of upstream localities to traffic distribution weights. The sum of
- // all weights should be 100. Any locality not present will
- // receive no traffic.
- To map[string]uint32 `protobuf:"bytes,2,rep,name=to,proto3" json:"to,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-}
-
-func (x *LocalityLoadBalancerSetting_Distribute) Reset() {
- *x = LocalityLoadBalancerSetting_Distribute{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LocalityLoadBalancerSetting_Distribute) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LocalityLoadBalancerSetting_Distribute) ProtoMessage() {}
-
-func (x *LocalityLoadBalancerSetting_Distribute) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LocalityLoadBalancerSetting_Distribute.ProtoReflect.Descriptor instead.
-func (*LocalityLoadBalancerSetting_Distribute) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{7, 0}
-}
-
-func (x *LocalityLoadBalancerSetting_Distribute) GetFrom() string {
- if x != nil {
- return x.From
- }
- return ""
-}
-
-func (x *LocalityLoadBalancerSetting_Distribute) GetTo() map[string]uint32 {
- if x != nil {
- return x.To
- }
- return nil
-}
-
-// Specify the traffic failover policy across regions. Since zone and sub-zone
-// failover is supported by default this only needs to be specified for
-// regions when the operator needs to constrain traffic failover so that
-// the default behavior of failing over to any endpoint globally does not
-// apply. This is useful when failing over traffic across regions would not
-// improve service health or may need to be restricted for other reasons
-// like regulatory controls.
-type LocalityLoadBalancerSetting_Failover struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Originating region.
- From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
- // Destination region the traffic will fail over to when endpoints in
- // the 'from' region becomes unhealthy.
- To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
-}
-
-func (x *LocalityLoadBalancerSetting_Failover) Reset() {
- *x = LocalityLoadBalancerSetting_Failover{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LocalityLoadBalancerSetting_Failover) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LocalityLoadBalancerSetting_Failover) ProtoMessage() {}
-
-func (x *LocalityLoadBalancerSetting_Failover) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_destination_rule_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LocalityLoadBalancerSetting_Failover.ProtoReflect.Descriptor instead.
-func (*LocalityLoadBalancerSetting_Failover) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_destination_rule_proto_rawDescGZIP(), []int{7, 1}
-}
-
-func (x *LocalityLoadBalancerSetting_Failover) GetFrom() string {
- if x != nil {
- return x.From
- }
- return ""
-}
-
-func (x *LocalityLoadBalancerSetting_Failover) GetTo() string {
- if x != nil {
- return x.To
- }
- return ""
-}
-
-var File_networking_v1beta1_destination_rule_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_destination_rule_proto_rawDesc = []byte{
- 0x0a, 0x29, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74,
- 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
- 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75,
- 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x22, 0xd4, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x4e,
- 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a,
- 0x0a, 0x07, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x20, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65,
- 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78,
- 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65,
- 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x22, 0xdc, 0x06, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x66,
- 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x0d, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
- 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
- 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x59,
- 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6f,
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f,
- 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x57, 0x0a, 0x11, 0x6f, 0x75, 0x74,
- 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e,
- 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c,
- 0x73, 0x12, 0x69, 0x0a, 0x13, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f,
- 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69,
- 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66,
- 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x97, 0x03, 0x0a,
- 0x11, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74,
- 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x53,
- 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74,
- 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
- 0x63, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69,
- 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e,
- 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x57,
- 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65,
- 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
- 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x22, 0xf3, 0x01, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x73, 0x65,
- 0x74, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c,
- 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
- 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x06, 0x0a,
- 0x14, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74,
- 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74,
- 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x42, 0x48, 0x00,
- 0x52, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x6a, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73,
- 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61,
- 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
- 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68,
- 0x4c, 0x42, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
- 0x48, 0x61, 0x73, 0x68, 0x12, 0x65, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79,
- 0x5f, 0x6c, 0x62, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63,
- 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
- 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
- 0x74, 0x79, 0x4c, 0x62, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0xb7, 0x03, 0x0a, 0x10,
- 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x42,
- 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x68, 0x74,
- 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6d, 0x0a, 0x0b,
- 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x4a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x61,
- 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
- 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68,
- 0x4c, 0x42, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52,
- 0x0a, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x75,
- 0x73, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49,
- 0x70, 0x12, 0x3b, 0x0a, 0x19, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f,
- 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x16, 0x68, 0x74, 0x74, 0x70, 0x51, 0x75, 0x65, 0x72,
- 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a,
- 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73,
- 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d,
- 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6d, 0x0a, 0x0a, 0x48, 0x54,
- 0x54, 0x50, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x31, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x02, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x68, 0x61, 0x73,
- 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x48, 0x0a, 0x08, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c,
- 0x42, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e,
- 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e,
- 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x0f,
- 0x0a, 0x0b, 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x42,
- 0x0b, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xbd, 0x08, 0x0a,
- 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53,
- 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65,
- 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
- 0x67, 0x73, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x51, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53,
- 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x74, 0x74,
- 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x1a, 0xf9, 0x02, 0x0a, 0x0b, 0x54,
- 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61,
- 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
- 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6e, 0x0a, 0x0d, 0x74, 0x63, 0x70, 0x5f, 0x6b,
- 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
- 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x63, 0x70,
- 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x4b, 0x65,
- 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x54, 0x63, 0x70, 0x4b,
- 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x62,
- 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73,
- 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12,
- 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e,
- 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x83, 0x04, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x53,
- 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x31,
- 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x68, 0x74, 0x74,
- 0x70, 0x31, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x6d, 0x61,
- 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x10, 0x68, 0x74, 0x74, 0x70, 0x32, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69,
- 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f,
- 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
- 0x12, 0x79, 0x0a, 0x11, 0x68, 0x32, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4d, 0x2e, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x54,
- 0x54, 0x50, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x32, 0x55, 0x70, 0x67,
- 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x68, 0x32, 0x55, 0x70,
- 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x75,
- 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x69,
- 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3f, 0x0a, 0x0f, 0x48,
- 0x32, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0b,
- 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44,
- 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x01, 0x12,
- 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x02, 0x22, 0x8a, 0x05, 0x0a,
- 0x10, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65,
- 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18,
- 0x01, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x45, 0x72,
- 0x72, 0x6f, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x65, 0x78,
- 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69,
- 0x67, 0x69, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x1e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c,
- 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73,
- 0x12, 0x67, 0x0a, 0x21, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f,
- 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x69,
- 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49,
- 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1e, 0x63, 0x6f, 0x6e, 0x73, 0x65,
- 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69,
- 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x1a, 0x63, 0x6f, 0x6e,
- 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
- 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x63, 0x6f, 0x6e,
- 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45,
- 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75,
- 0x74, 0x69, 0x76, 0x65, 0x5f, 0x35, 0x78, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65,
- 0x35, 0x78, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74,
- 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
- 0x12, 0x47, 0x0a, 0x12, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6a, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x61, 0x78,
- 0x5f, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x45, 0x6a, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6d,
- 0x69, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x48, 0x65, 0x61, 0x6c,
- 0x74, 0x68, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0xd2, 0x03, 0x0a, 0x11, 0x43, 0x6c,
- 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12,
- 0x4d, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54,
- 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x6d, 0x6f,
- 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d,
- 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65,
- 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a,
- 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27,
- 0x0a, 0x0f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03,
- 0x73, 0x6e, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6e, 0x69, 0x12, 0x4c,
- 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f,
- 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
- 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0x40, 0x0a, 0x07,
- 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, 0x42,
- 0x4c, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01,
- 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c,
- 0x49, 0x53, 0x54, 0x49, 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x03, 0x22, 0xa2,
- 0x04, 0x0a, 0x1b, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42,
- 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x60,
- 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f,
- 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69,
- 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
- 0x12, 0x5a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f,
- 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76,
- 0x65, 0x72, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11,
- 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65,
- 0x72, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f,
- 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a,
- 0xb1, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x12,
- 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72,
- 0x6f, 0x6d, 0x12, 0x58, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
- 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x65,
- 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
- 0x2e, 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x74, 0x6f, 0x1a, 0x35, 0x0a, 0x07,
- 0x54, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12,
- 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66,
- 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x74, 0x6f, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_destination_rule_proto_rawDescOnce sync.Once
- file_networking_v1beta1_destination_rule_proto_rawDescData = file_networking_v1beta1_destination_rule_proto_rawDesc
-)
-
-func file_networking_v1beta1_destination_rule_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_destination_rule_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_destination_rule_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_destination_rule_proto_rawDescData)
- })
- return file_networking_v1beta1_destination_rule_proto_rawDescData
-}
-
-var file_networking_v1beta1_destination_rule_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_networking_v1beta1_destination_rule_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
-var file_networking_v1beta1_destination_rule_proto_goTypes = []interface{}{
- (LoadBalancerSettings_SimpleLB)(0), // 0: istio.networking.v1beta1.LoadBalancerSettings.SimpleLB
- (ConnectionPoolSettings_HTTPSettings_H2UpgradePolicy)(0), // 1: istio.networking.v1beta1.ConnectionPoolSettings.HTTPSettings.H2UpgradePolicy
- (ClientTLSSettings_TLSmode)(0), // 2: istio.networking.v1beta1.ClientTLSSettings.TLSmode
- (*DestinationRule)(nil), // 3: istio.networking.v1beta1.DestinationRule
- (*TrafficPolicy)(nil), // 4: istio.networking.v1beta1.TrafficPolicy
- (*Subset)(nil), // 5: istio.networking.v1beta1.Subset
- (*LoadBalancerSettings)(nil), // 6: istio.networking.v1beta1.LoadBalancerSettings
- (*ConnectionPoolSettings)(nil), // 7: istio.networking.v1beta1.ConnectionPoolSettings
- (*OutlierDetection)(nil), // 8: istio.networking.v1beta1.OutlierDetection
- (*ClientTLSSettings)(nil), // 9: istio.networking.v1beta1.ClientTLSSettings
- (*LocalityLoadBalancerSetting)(nil), // 10: istio.networking.v1beta1.LocalityLoadBalancerSetting
- (*TrafficPolicy_PortTrafficPolicy)(nil), // 11: istio.networking.v1beta1.TrafficPolicy.PortTrafficPolicy
- nil, // 12: istio.networking.v1beta1.Subset.LabelsEntry
- (*LoadBalancerSettings_ConsistentHashLB)(nil), // 13: istio.networking.v1beta1.LoadBalancerSettings.ConsistentHashLB
- (*LoadBalancerSettings_ConsistentHashLB_HTTPCookie)(nil), // 14: istio.networking.v1beta1.LoadBalancerSettings.ConsistentHashLB.HTTPCookie
- (*ConnectionPoolSettings_TCPSettings)(nil), // 15: istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings
- (*ConnectionPoolSettings_HTTPSettings)(nil), // 16: istio.networking.v1beta1.ConnectionPoolSettings.HTTPSettings
- (*ConnectionPoolSettings_TCPSettings_TcpKeepalive)(nil), // 17: istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings.TcpKeepalive
- (*LocalityLoadBalancerSetting_Distribute)(nil), // 18: istio.networking.v1beta1.LocalityLoadBalancerSetting.Distribute
- (*LocalityLoadBalancerSetting_Failover)(nil), // 19: istio.networking.v1beta1.LocalityLoadBalancerSetting.Failover
- nil, // 20: istio.networking.v1beta1.LocalityLoadBalancerSetting.Distribute.ToEntry
- (*wrapperspb.UInt32Value)(nil), // 21: google.protobuf.UInt32Value
- (*durationpb.Duration)(nil), // 22: google.protobuf.Duration
- (*wrapperspb.BoolValue)(nil), // 23: google.protobuf.BoolValue
- (*PortSelector)(nil), // 24: istio.networking.v1beta1.PortSelector
-}
-var file_networking_v1beta1_destination_rule_proto_depIdxs = []int32{
- 4, // 0: istio.networking.v1beta1.DestinationRule.traffic_policy:type_name -> istio.networking.v1beta1.TrafficPolicy
- 5, // 1: istio.networking.v1beta1.DestinationRule.subsets:type_name -> istio.networking.v1beta1.Subset
- 6, // 2: istio.networking.v1beta1.TrafficPolicy.load_balancer:type_name -> istio.networking.v1beta1.LoadBalancerSettings
- 7, // 3: istio.networking.v1beta1.TrafficPolicy.connection_pool:type_name -> istio.networking.v1beta1.ConnectionPoolSettings
- 8, // 4: istio.networking.v1beta1.TrafficPolicy.outlier_detection:type_name -> istio.networking.v1beta1.OutlierDetection
- 9, // 5: istio.networking.v1beta1.TrafficPolicy.tls:type_name -> istio.networking.v1beta1.ClientTLSSettings
- 11, // 6: istio.networking.v1beta1.TrafficPolicy.port_level_settings:type_name -> istio.networking.v1beta1.TrafficPolicy.PortTrafficPolicy
- 12, // 7: istio.networking.v1beta1.Subset.labels:type_name -> istio.networking.v1beta1.Subset.LabelsEntry
- 4, // 8: istio.networking.v1beta1.Subset.traffic_policy:type_name -> istio.networking.v1beta1.TrafficPolicy
- 0, // 9: istio.networking.v1beta1.LoadBalancerSettings.simple:type_name -> istio.networking.v1beta1.LoadBalancerSettings.SimpleLB
- 13, // 10: istio.networking.v1beta1.LoadBalancerSettings.consistent_hash:type_name -> istio.networking.v1beta1.LoadBalancerSettings.ConsistentHashLB
- 10, // 11: istio.networking.v1beta1.LoadBalancerSettings.locality_lb_setting:type_name -> istio.networking.v1beta1.LocalityLoadBalancerSetting
- 15, // 12: istio.networking.v1beta1.ConnectionPoolSettings.tcp:type_name -> istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings
- 16, // 13: istio.networking.v1beta1.ConnectionPoolSettings.http:type_name -> istio.networking.v1beta1.ConnectionPoolSettings.HTTPSettings
- 21, // 14: istio.networking.v1beta1.OutlierDetection.consecutive_local_origin_failures:type_name -> google.protobuf.UInt32Value
- 21, // 15: istio.networking.v1beta1.OutlierDetection.consecutive_gateway_errors:type_name -> google.protobuf.UInt32Value
- 21, // 16: istio.networking.v1beta1.OutlierDetection.consecutive_5xx_errors:type_name -> google.protobuf.UInt32Value
- 22, // 17: istio.networking.v1beta1.OutlierDetection.interval:type_name -> google.protobuf.Duration
- 22, // 18: istio.networking.v1beta1.OutlierDetection.base_ejection_time:type_name -> google.protobuf.Duration
- 2, // 19: istio.networking.v1beta1.ClientTLSSettings.mode:type_name -> istio.networking.v1beta1.ClientTLSSettings.TLSmode
- 23, // 20: istio.networking.v1beta1.ClientTLSSettings.insecure_skip_verify:type_name -> google.protobuf.BoolValue
- 18, // 21: istio.networking.v1beta1.LocalityLoadBalancerSetting.distribute:type_name -> istio.networking.v1beta1.LocalityLoadBalancerSetting.Distribute
- 19, // 22: istio.networking.v1beta1.LocalityLoadBalancerSetting.failover:type_name -> istio.networking.v1beta1.LocalityLoadBalancerSetting.Failover
- 23, // 23: istio.networking.v1beta1.LocalityLoadBalancerSetting.enabled:type_name -> google.protobuf.BoolValue
- 24, // 24: istio.networking.v1beta1.TrafficPolicy.PortTrafficPolicy.port:type_name -> istio.networking.v1beta1.PortSelector
- 6, // 25: istio.networking.v1beta1.TrafficPolicy.PortTrafficPolicy.load_balancer:type_name -> istio.networking.v1beta1.LoadBalancerSettings
- 7, // 26: istio.networking.v1beta1.TrafficPolicy.PortTrafficPolicy.connection_pool:type_name -> istio.networking.v1beta1.ConnectionPoolSettings
- 8, // 27: istio.networking.v1beta1.TrafficPolicy.PortTrafficPolicy.outlier_detection:type_name -> istio.networking.v1beta1.OutlierDetection
- 9, // 28: istio.networking.v1beta1.TrafficPolicy.PortTrafficPolicy.tls:type_name -> istio.networking.v1beta1.ClientTLSSettings
- 14, // 29: istio.networking.v1beta1.LoadBalancerSettings.ConsistentHashLB.http_cookie:type_name -> istio.networking.v1beta1.LoadBalancerSettings.ConsistentHashLB.HTTPCookie
- 22, // 30: istio.networking.v1beta1.LoadBalancerSettings.ConsistentHashLB.HTTPCookie.ttl:type_name -> google.protobuf.Duration
- 22, // 31: istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings.connect_timeout:type_name -> google.protobuf.Duration
- 17, // 32: istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings.tcp_keepalive:type_name -> istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings.TcpKeepalive
- 22, // 33: istio.networking.v1beta1.ConnectionPoolSettings.HTTPSettings.idle_timeout:type_name -> google.protobuf.Duration
- 1, // 34: istio.networking.v1beta1.ConnectionPoolSettings.HTTPSettings.h2_upgrade_policy:type_name -> istio.networking.v1beta1.ConnectionPoolSettings.HTTPSettings.H2UpgradePolicy
- 22, // 35: istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings.TcpKeepalive.time:type_name -> google.protobuf.Duration
- 22, // 36: istio.networking.v1beta1.ConnectionPoolSettings.TCPSettings.TcpKeepalive.interval:type_name -> google.protobuf.Duration
- 20, // 37: istio.networking.v1beta1.LocalityLoadBalancerSetting.Distribute.to:type_name -> istio.networking.v1beta1.LocalityLoadBalancerSetting.Distribute.ToEntry
- 38, // [38:38] is the sub-list for method output_type
- 38, // [38:38] is the sub-list for method input_type
- 38, // [38:38] is the sub-list for extension type_name
- 38, // [38:38] is the sub-list for extension extendee
- 0, // [0:38] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_destination_rule_proto_init() }
-func file_networking_v1beta1_destination_rule_proto_init() {
- if File_networking_v1beta1_destination_rule_proto != nil {
- return
- }
- file_networking_v1beta1_virtual_service_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_destination_rule_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DestinationRule); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TrafficPolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Subset); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerSettings); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConnectionPoolSettings); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OutlierDetection); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClientTLSSettings); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LocalityLoadBalancerSetting); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TrafficPolicy_PortTrafficPolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerSettings_ConsistentHashLB); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LoadBalancerSettings_ConsistentHashLB_HTTPCookie); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConnectionPoolSettings_TCPSettings); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConnectionPoolSettings_HTTPSettings); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConnectionPoolSettings_TCPSettings_TcpKeepalive); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LocalityLoadBalancerSetting_Distribute); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LocalityLoadBalancerSetting_Failover); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[3].OneofWrappers = []interface{}{
- (*LoadBalancerSettings_Simple)(nil),
- (*LoadBalancerSettings_ConsistentHash)(nil),
- }
- file_networking_v1beta1_destination_rule_proto_msgTypes[10].OneofWrappers = []interface{}{
- (*LoadBalancerSettings_ConsistentHashLB_HttpHeaderName)(nil),
- (*LoadBalancerSettings_ConsistentHashLB_HttpCookie)(nil),
- (*LoadBalancerSettings_ConsistentHashLB_UseSourceIp)(nil),
- (*LoadBalancerSettings_ConsistentHashLB_HttpQueryParameterName)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_destination_rule_proto_rawDesc,
- NumEnums: 3,
- NumMessages: 18,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_destination_rule_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_destination_rule_proto_depIdxs,
- EnumInfos: file_networking_v1beta1_destination_rule_proto_enumTypes,
- MessageInfos: file_networking_v1beta1_destination_rule_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_destination_rule_proto = out.File
- file_networking_v1beta1_destination_rule_proto_rawDesc = nil
- file_networking_v1beta1_destination_rule_proto_goTypes = nil
- file_networking_v1beta1_destination_rule_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/gateway.pb.go b/gen/proto/networking/v1beta1/gateway.pb.go
deleted file mode 100644
index 805ae48..0000000
--- a/gen/proto/networking/v1beta1/gateway.pb.go
+++ /dev/null
@@ -1,1345 +0,0 @@
-// Copyright 2020 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/gateway.proto
-
-// $schema: istio.networking.v1beta1.Gateway
-// $title: Gateway
-// $description: Configuration affecting edge load balancer.
-// $location: https://istio.io/docs/reference/config/networking/gateway.html
-// $aliases: [/docs/reference/config/networking/v1beta1/gateway]
-// $mode: none
-
-// `Gateway` describes a load balancer operating at the edge of the mesh
-// receiving incoming or outgoing HTTP/TCP connections. The specification
-// describes a set of ports that should be exposed, the type of protocol to
-// use, SNI configuration for the load balancer, etc.
-//
-// For example, the following Gateway configuration sets up a proxy to act
-// as a load balancer exposing port 80 and 9080 (http), 443 (https),
-// 9443(https) and port 2379 (TCP) for ingress. The gateway will be
-// applied to the proxy running on a pod with labels `app:
-// my-gateway-controller`. While Istio will configure the proxy to listen
-// on these ports, it is the responsibility of the user to ensure that
-// external traffic to these ports are allowed into the mesh.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// httpsRedirect: true # sends 301 redirect for http requests
-// - port:
-// number: 443
-// name: https-443
-// protocol: HTTPS
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// serverCertificate: /etc/certs/servercert.pem
-// privateKey: /etc/certs/privatekey.pem
-// - port:
-// number: 9443
-// name: https-9443
-// protocol: HTTPS
-// hosts:
-// - "bookinfo-namespace/*.bookinfo.com"
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
-// - port:
-// number: 9080
-// name: http-wildcard
-// protocol: HTTP
-// hosts:
-// - "*"
-// - port:
-// number: 2379 # to expose internal service via external port 2379
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// httpsRedirect: true # sends 301 redirect for http requests
-// - port:
-// number: 443
-// name: https-443
-// protocol: HTTPS
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// serverCertificate: /etc/certs/servercert.pem
-// privateKey: /etc/certs/privatekey.pem
-// - port:
-// number: 9443
-// name: https-9443
-// protocol: HTTPS
-// hosts:
-// - "bookinfo-namespace/*.bookinfo.com"
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
-// - port:
-// number: 9080
-// name: http-wildcard
-// protocol: HTTP
-// hosts:
-// - "*"
-// - port:
-// number: 2379 # to expose internal service via external port 2379
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// The Gateway specification above describes the L4-L6 properties of a load
-// balancer. A `VirtualService` can then be bound to a gateway to control
-// the forwarding of traffic arriving at a particular host or gateway port.
-//
-// For example, the following VirtualService splits traffic for
-// `https://uk.bookinfo.com/reviews`, `https://eu.bookinfo.com/reviews`,
-// `http://uk.bookinfo.com:9080/reviews`,
-// `http://eu.bookinfo.com:9080/reviews` into two versions (prod and qa) of
-// an internal reviews service on port 9080. In addition, requests
-// containing the cookie "user: dev-123" will be sent to special port 7777
-// in the qa version. The same rule is also applicable inside the mesh for
-// requests to the "reviews.prod.svc.cluster.local" service. This rule is
-// applicable across ports 443, 9080. Note that `http://uk.bookinfo.com`
-// gets redirected to `https://uk.bookinfo.com` (i.e. 80 redirects to 443).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-rule
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// gateways:
-// - some-config-namespace/my-gateway
-// - mesh # applies to all the sidecars in the mesh
-// http:
-// - match:
-// - headers:
-// cookie:
-// exact: "user=dev-123"
-// route:
-// - destination:
-// port:
-// number: 7777
-// host: reviews.qa.svc.cluster.local
-// - match:
-// - uri:
-// prefix: /reviews/
-// route:
-// - destination:
-// port:
-// number: 9080 # can be omitted if it's the only port for reviews
-// host: reviews.prod.svc.cluster.local
-// weight: 80
-// - destination:
-// host: reviews.qa.svc.cluster.local
-// weight: 20
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-rule
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// gateways:
-// - some-config-namespace/my-gateway
-// - mesh # applies to all the sidecars in the mesh
-// http:
-// - match:
-// - headers:
-// cookie:
-// exact: "user=dev-123"
-// route:
-// - destination:
-// port:
-// number: 7777
-// host: reviews.qa.svc.cluster.local
-// - match:
-// - uri:
-// prefix: /reviews/
-// route:
-// - destination:
-// port:
-// number: 9080 # can be omitted if it's the only port for reviews
-// host: reviews.prod.svc.cluster.local
-// weight: 80
-// - destination:
-// host: reviews.qa.svc.cluster.local
-// weight: 20
-// ```
-// {{}}
-// {{}}
-//
-// The following VirtualService forwards traffic arriving at (external)
-// port 27017 to internal Mongo server on port 5555. This rule is not
-// applicable internally in the mesh as the gateway list omits the
-// reserved name `mesh`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
-// gateways:
-// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same namespace as virtual service.
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.prod.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
-// gateways:
-// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same namespace as virtual service.
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.prod.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-// {{}}
-//
-// It is possible to restrict the set of virtual services that can bind to
-// a gateway server using the namespace/hostname syntax in the hosts field.
-// For example, the following Gateway allows any virtual service in the ns1
-// namespace to bind to it, while restricting only the virtual service with
-// foo.bar.com host in the ns2 namespace to bind to it.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "ns1/*"
-// - "ns2/foo.bar.com"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "ns1/*"
-// - "ns2/foo.bar.com"
-// ```
-// {{}}
-// {{}}
-//
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// TLS modes enforced by the proxy
-type ServerTLSSettings_TLSmode int32
-
-const (
- // The SNI string presented by the client will be used as the
- // match criterion in a VirtualService TLS route to determine
- // the destination service from the service registry.
- ServerTLSSettings_PASSTHROUGH ServerTLSSettings_TLSmode = 0
- // Secure connections with standard TLS semantics.
- ServerTLSSettings_SIMPLE ServerTLSSettings_TLSmode = 1
- // Secure connections to the downstream using mutual TLS by
- // presenting server certificates for authentication.
- ServerTLSSettings_MUTUAL ServerTLSSettings_TLSmode = 2
- // Similar to the passthrough mode, except servers with this TLS
- // mode do not require an associated VirtualService to map from
- // the SNI value to service in the registry. The destination
- // details such as the service/subset/port are encoded in the
- // SNI value. The proxy will forward to the upstream (Envoy)
- // cluster (a group of endpoints) specified by the SNI
- // value. This server is typically used to provide connectivity
- // between services in disparate L3 networks that otherwise do
- // not have direct connectivity between their respective
- // endpoints. Use of this mode assumes that both the source and
- // the destination are using Istio mTLS to secure traffic.
- ServerTLSSettings_AUTO_PASSTHROUGH ServerTLSSettings_TLSmode = 3
- // Secure connections from the downstream using mutual TLS by
- // presenting server certificates for authentication. Compared
- // to Mutual mode, this mode uses certificates, representing
- // gateway workload identity, generated automatically by Istio
- // for mTLS authentication. When this mode is used, all other
- // fields in `TLSOptions` should be empty.
- ServerTLSSettings_ISTIO_MUTUAL ServerTLSSettings_TLSmode = 4
-)
-
-// Enum value maps for ServerTLSSettings_TLSmode.
-var (
- ServerTLSSettings_TLSmode_name = map[int32]string{
- 0: "PASSTHROUGH",
- 1: "SIMPLE",
- 2: "MUTUAL",
- 3: "AUTO_PASSTHROUGH",
- 4: "ISTIO_MUTUAL",
- }
- ServerTLSSettings_TLSmode_value = map[string]int32{
- "PASSTHROUGH": 0,
- "SIMPLE": 1,
- "MUTUAL": 2,
- "AUTO_PASSTHROUGH": 3,
- "ISTIO_MUTUAL": 4,
- }
-)
-
-func (x ServerTLSSettings_TLSmode) Enum() *ServerTLSSettings_TLSmode {
- p := new(ServerTLSSettings_TLSmode)
- *p = x
- return p
-}
-
-func (x ServerTLSSettings_TLSmode) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ServerTLSSettings_TLSmode) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_gateway_proto_enumTypes[0].Descriptor()
-}
-
-func (ServerTLSSettings_TLSmode) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_gateway_proto_enumTypes[0]
-}
-
-func (x ServerTLSSettings_TLSmode) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ServerTLSSettings_TLSmode.Descriptor instead.
-func (ServerTLSSettings_TLSmode) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_gateway_proto_rawDescGZIP(), []int{3, 0}
-}
-
-// TLS protocol versions.
-type ServerTLSSettings_TLSProtocol int32
-
-const (
- // Automatically choose the optimal TLS version.
- ServerTLSSettings_TLS_AUTO ServerTLSSettings_TLSProtocol = 0
- // TLS version 1.0
- ServerTLSSettings_TLSV1_0 ServerTLSSettings_TLSProtocol = 1
- // TLS version 1.1
- ServerTLSSettings_TLSV1_1 ServerTLSSettings_TLSProtocol = 2
- // TLS version 1.2
- ServerTLSSettings_TLSV1_2 ServerTLSSettings_TLSProtocol = 3
- // TLS version 1.3
- ServerTLSSettings_TLSV1_3 ServerTLSSettings_TLSProtocol = 4
-)
-
-// Enum value maps for ServerTLSSettings_TLSProtocol.
-var (
- ServerTLSSettings_TLSProtocol_name = map[int32]string{
- 0: "TLS_AUTO",
- 1: "TLSV1_0",
- 2: "TLSV1_1",
- 3: "TLSV1_2",
- 4: "TLSV1_3",
- }
- ServerTLSSettings_TLSProtocol_value = map[string]int32{
- "TLS_AUTO": 0,
- "TLSV1_0": 1,
- "TLSV1_1": 2,
- "TLSV1_2": 3,
- "TLSV1_3": 4,
- }
-)
-
-func (x ServerTLSSettings_TLSProtocol) Enum() *ServerTLSSettings_TLSProtocol {
- p := new(ServerTLSSettings_TLSProtocol)
- *p = x
- return p
-}
-
-func (x ServerTLSSettings_TLSProtocol) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ServerTLSSettings_TLSProtocol) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_gateway_proto_enumTypes[1].Descriptor()
-}
-
-func (ServerTLSSettings_TLSProtocol) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_gateway_proto_enumTypes[1]
-}
-
-func (x ServerTLSSettings_TLSProtocol) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ServerTLSSettings_TLSProtocol.Descriptor instead.
-func (ServerTLSSettings_TLSProtocol) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_gateway_proto_rawDescGZIP(), []int{3, 1}
-}
-
-// Gateway describes a load balancer operating at the edge of the mesh
-// receiving incoming or outgoing HTTP/TCP connections.
-//
-//
-//
-//
-//
-type Gateway struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A list of server specifications.
- Servers []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
- // One or more labels that indicate a specific set of pods/VMs
- // on which this gateway configuration should be applied.
- // By default workloads are searched across all namespaces based on label selectors.
- // This implies that a gateway resource in the namespace "foo" can select pods in
- // the namespace "bar" based on labels.
- // This behavior can be controlled via the `PILOT_SCOPE_GATEWAY_TO_NAMESPACE`
- // environment variable in istiod. If this variable is set
- // to true, the scope of label search is restricted to the configuration
- // namespace in which the the resource is present. In other words, the Gateway
- // resource must reside in the same namespace as the gateway workload
- // instance.
- // If selector is nil, the Gateway will be applied to all workloads.
- Selector map[string]string `protobuf:"bytes,2,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Gateway) Reset() {
- *x = Gateway{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Gateway) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Gateway) ProtoMessage() {}
-
-func (x *Gateway) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Gateway.ProtoReflect.Descriptor instead.
-func (*Gateway) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_gateway_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Gateway) GetServers() []*Server {
- if x != nil {
- return x.Servers
- }
- return nil
-}
-
-func (x *Gateway) GetSelector() map[string]string {
- if x != nil {
- return x.Selector
- }
- return nil
-}
-
-// `Server` describes the properties of the proxy on a given load balancer
-// port. For example,
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-ingress
-// spec:
-// selector:
-// app: my-ingressgateway
-// servers:
-// - port:
-// number: 80
-// name: http2
-// protocol: HTTP2
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-ingress
-// spec:
-// selector:
-// app: my-ingressgateway
-// servers:
-// - port:
-// number: 80
-// name: http2
-// protocol: HTTP2
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// Another example
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tcp-ingress
-// spec:
-// selector:
-// app: my-tcp-ingressgateway
-// servers:
-// - port:
-// number: 27018
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-tcp-ingress
-// spec:
-// selector:
-// app: my-tcp-ingressgateway
-// servers:
-// - port:
-// number: 27018
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// The following is an example of TLS configuration for port 443
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tls-ingress
-// spec:
-// selector:
-// app: my-tls-ingressgateway
-// servers:
-// - port:
-// number: 443
-// name: https
-// protocol: HTTPS
-// hosts:
-// - "*"
-// tls:
-// mode: SIMPLE
-// credentialName: tls-cert
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-tls-ingress
-// spec:
-// selector:
-// app: my-tls-ingressgateway
-// servers:
-// - port:
-// number: 443
-// name: https
-// protocol: HTTPS
-// hosts:
-// - "*"
-// tls:
-// mode: SIMPLE
-// credentialName: tls-cert
-// ```
-// {{}}
-// {{}}
-//
-type Server struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The Port on which the proxy should listen for incoming
- // connections.
- Port *Port `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"`
- // The ip or the Unix domain socket to which the listener should be bound
- // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar`
- // (Linux abstract namespace). When using Unix domain sockets, the port
- // number should be 0.
- // This can be used to restrict the reachability of this server to be gateway internal only.
- // This is typically used when a gateway needs to communicate to another mesh service
- // e.g. publishing metrics. In such case, the server created with the
- // specified bind will not be available to external gateway clients.
- Bind string `protobuf:"bytes,4,opt,name=bind,proto3" json:"bind,omitempty"`
- // One or more hosts exposed by this gateway.
- // While typically applicable to
- // HTTP services, it can also be used for TCP services using TLS with SNI.
- // A host is specified as a `dnsName` with an optional `namespace/` prefix.
- // The `dnsName` should be specified using FQDN format, optionally including
- // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
- // Set the `dnsName` to `*` to select all `VirtualService` hosts from the
- // specified namespace (e.g.,`prod/*`).
- //
- // The `namespace` can be set to `*` or `.`, representing any or the current
- // namespace, respectively. For example, `*/foo.example.com` selects the
- // service from any available namespace while `./foo.example.com` only selects
- // the service from the namespace of the sidecar. The default, if no `namespace/`
- // is specified, is `*/`, that is, select services from any namespace.
- // Any associated `DestinationRule` in the selected namespace will also be used.
- //
- // A `VirtualService` must be bound to the gateway and must have one or
- // more hosts that match the hosts specified in a server. The match
- // could be an exact match or a suffix match with the server's hosts. For
- // example, if the server's hosts specifies `*.example.com`, a
- // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will
- // match. However, a `VirtualService` with host `example.com` or
- // `newexample.com` will not match.
- //
- // NOTE: Only virtual services exported to the gateway's namespace
- // (e.g., `exportTo` value of `*`) can be referenced.
- // Private configurations (e.g., `exportTo` set to `.`) will not be
- // available. Refer to the `exportTo` setting in `VirtualService`,
- // `DestinationRule`, and `ServiceEntry` configurations for details.
- Hosts []string `protobuf:"bytes,2,rep,name=hosts,proto3" json:"hosts,omitempty"`
- // Set of TLS related options that govern the server's behavior. Use
- // these options to control if all http requests should be redirected to
- // https, and the TLS modes to use.
- Tls *ServerTLSSettings `protobuf:"bytes,3,opt,name=tls,proto3" json:"tls,omitempty"`
- // The loopback IP endpoint or Unix domain socket to which traffic should
- // be forwarded to by default. Format should be `127.0.0.1:PORT` or
- // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace).
- // NOT IMPLEMENTED.
- // $hide_from_docs
- DefaultEndpoint string `protobuf:"bytes,5,opt,name=default_endpoint,json=defaultEndpoint,proto3" json:"default_endpoint,omitempty"`
- // An optional name of the server, when set must be unique across all servers.
- // This will be used for variety of purposes like prefixing stats generated with
- // this name etc.
- Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *Server) Reset() {
- *x = Server{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Server) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Server) ProtoMessage() {}
-
-func (x *Server) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Server.ProtoReflect.Descriptor instead.
-func (*Server) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_gateway_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Server) GetPort() *Port {
- if x != nil {
- return x.Port
- }
- return nil
-}
-
-func (x *Server) GetBind() string {
- if x != nil {
- return x.Bind
- }
- return ""
-}
-
-func (x *Server) GetHosts() []string {
- if x != nil {
- return x.Hosts
- }
- return nil
-}
-
-func (x *Server) GetTls() *ServerTLSSettings {
- if x != nil {
- return x.Tls
- }
- return nil
-}
-
-func (x *Server) GetDefaultEndpoint() string {
- if x != nil {
- return x.DefaultEndpoint
- }
- return ""
-}
-
-func (x *Server) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-// Port describes the properties of a specific port of a service.
-type Port struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A valid non-negative integer port number.
- Number uint32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
- // The protocol exposed on the port.
- // MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS.
- // TLS implies the connection will be routed based on the SNI header to
- // the destination without terminating the TLS connection.
- Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"`
- // Label assigned to the port.
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- // The port number on the endpoint where the traffic will be
- // received. Applicable only when used with ServiceEntries.
- TargetPort uint32 `protobuf:"varint,4,opt,name=target_port,json=targetPort,proto3" json:"target_port,omitempty"`
-}
-
-func (x *Port) Reset() {
- *x = Port{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Port) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Port) ProtoMessage() {}
-
-func (x *Port) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Port.ProtoReflect.Descriptor instead.
-func (*Port) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_gateway_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Port) GetNumber() uint32 {
- if x != nil {
- return x.Number
- }
- return 0
-}
-
-func (x *Port) GetProtocol() string {
- if x != nil {
- return x.Protocol
- }
- return ""
-}
-
-func (x *Port) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Port) GetTargetPort() uint32 {
- if x != nil {
- return x.TargetPort
- }
- return 0
-}
-
-type ServerTLSSettings struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // If set to true, the load balancer will send a 301 redirect for
- // all http connections, asking the clients to use HTTPS.
- HttpsRedirect bool `protobuf:"varint,1,opt,name=https_redirect,json=httpsRedirect,proto3" json:"https_redirect,omitempty"`
- // Optional: Indicates whether connections to this port should be
- // secured using TLS. The value of this field determines how TLS is
- // enforced.
- Mode ServerTLSSettings_TLSmode `protobuf:"varint,2,opt,name=mode,proto3,enum=istio.networking.v1beta1.ServerTLSSettings_TLSmode" json:"mode,omitempty"`
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server-side TLS certificate to use.
- ServerCertificate string `protobuf:"bytes,3,opt,name=server_certificate,json=serverCertificate,proto3" json:"server_certificate,omitempty"`
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server's private key.
- PrivateKey string `protobuf:"bytes,4,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
- // REQUIRED if mode is `MUTUAL`. The path to a file containing
- // certificate authority certificates to use in verifying a presented
- // client side certificate.
- CaCertificates string `protobuf:"bytes,5,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"`
- // For gateways running on Kubernetes, the name of the secret that
- // holds the TLS certs including the CA certificates. Applicable
- // only on Kubernetes. The secret (of type `generic`) should
- // contain the following keys and values: `key:
- // ` and `cert: `. For mutual TLS,
- // `cacert: ` can be provided in the same secret or
- // a separate secret named `-cacert`.
- // Secret of type tls for server certificates along with
- // ca.crt key for CA certificates is also supported.
- // Only one of server certificates and CA certificate
- // or credentialName can be specified.
- CredentialName string `protobuf:"bytes,10,opt,name=credential_name,json=credentialName,proto3" json:"credential_name,omitempty"`
- // A list of alternate names to verify the subject identity in the
- // certificate presented by the client.
- SubjectAltNames []string `protobuf:"bytes,6,rep,name=subject_alt_names,json=subjectAltNames,proto3" json:"subject_alt_names,omitempty"`
- // An optional list of base64-encoded SHA-256 hashes of the SKPIs of
- // authorized client certificates.
- // Note: When both verify_certificate_hash and verify_certificate_spki
- // are specified, a hash matching either value will result in the
- // certificate being accepted.
- VerifyCertificateSpki []string `protobuf:"bytes,11,rep,name=verify_certificate_spki,json=verifyCertificateSpki,proto3" json:"verify_certificate_spki,omitempty"`
- // An optional list of hex-encoded SHA-256 hashes of the
- // authorized client certificates. Both simple and colon separated
- // formats are acceptable.
- // Note: When both verify_certificate_hash and verify_certificate_spki
- // are specified, a hash matching either value will result in the
- // certificate being accepted.
- VerifyCertificateHash []string `protobuf:"bytes,12,rep,name=verify_certificate_hash,json=verifyCertificateHash,proto3" json:"verify_certificate_hash,omitempty"`
- // Optional: Minimum TLS protocol version.
- MinProtocolVersion ServerTLSSettings_TLSProtocol `protobuf:"varint,7,opt,name=min_protocol_version,json=minProtocolVersion,proto3,enum=istio.networking.v1beta1.ServerTLSSettings_TLSProtocol" json:"min_protocol_version,omitempty"`
- // Optional: Maximum TLS protocol version.
- MaxProtocolVersion ServerTLSSettings_TLSProtocol `protobuf:"varint,8,opt,name=max_protocol_version,json=maxProtocolVersion,proto3,enum=istio.networking.v1beta1.ServerTLSSettings_TLSProtocol" json:"max_protocol_version,omitempty"`
- // Optional: If specified, only support the specified cipher list.
- // Otherwise default to the default cipher list supported by Envoy.
- CipherSuites []string `protobuf:"bytes,9,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"`
-}
-
-func (x *ServerTLSSettings) Reset() {
- *x = ServerTLSSettings{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServerTLSSettings) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServerTLSSettings) ProtoMessage() {}
-
-func (x *ServerTLSSettings) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_gateway_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServerTLSSettings.ProtoReflect.Descriptor instead.
-func (*ServerTLSSettings) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_gateway_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ServerTLSSettings) GetHttpsRedirect() bool {
- if x != nil {
- return x.HttpsRedirect
- }
- return false
-}
-
-func (x *ServerTLSSettings) GetMode() ServerTLSSettings_TLSmode {
- if x != nil {
- return x.Mode
- }
- return ServerTLSSettings_PASSTHROUGH
-}
-
-func (x *ServerTLSSettings) GetServerCertificate() string {
- if x != nil {
- return x.ServerCertificate
- }
- return ""
-}
-
-func (x *ServerTLSSettings) GetPrivateKey() string {
- if x != nil {
- return x.PrivateKey
- }
- return ""
-}
-
-func (x *ServerTLSSettings) GetCaCertificates() string {
- if x != nil {
- return x.CaCertificates
- }
- return ""
-}
-
-func (x *ServerTLSSettings) GetCredentialName() string {
- if x != nil {
- return x.CredentialName
- }
- return ""
-}
-
-func (x *ServerTLSSettings) GetSubjectAltNames() []string {
- if x != nil {
- return x.SubjectAltNames
- }
- return nil
-}
-
-func (x *ServerTLSSettings) GetVerifyCertificateSpki() []string {
- if x != nil {
- return x.VerifyCertificateSpki
- }
- return nil
-}
-
-func (x *ServerTLSSettings) GetVerifyCertificateHash() []string {
- if x != nil {
- return x.VerifyCertificateHash
- }
- return nil
-}
-
-func (x *ServerTLSSettings) GetMinProtocolVersion() ServerTLSSettings_TLSProtocol {
- if x != nil {
- return x.MinProtocolVersion
- }
- return ServerTLSSettings_TLS_AUTO
-}
-
-func (x *ServerTLSSettings) GetMaxProtocolVersion() ServerTLSSettings_TLSProtocol {
- if x != nil {
- return x.MaxProtocolVersion
- }
- return ServerTLSSettings_TLS_AUTO
-}
-
-func (x *ServerTLSSettings) GetCipherSuites() []string {
- if x != nil {
- return x.CipherSuites
- }
- return nil
-}
-
-var File_networking_v1beta1_gateway_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_gateway_proto_rawDesc = []byte{
- 0x0a, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62,
- 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x01,
- 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x73, 0x74,
- 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x02, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
- 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04,
- 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x3b,
- 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf0, 0x01, 0x0a, 0x06,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x50, 0x6f, 0x72, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74,
- 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x62, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73,
- 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54,
- 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12,
- 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75,
- 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x81,
- 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65,
- 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x6e,
- 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f,
- 0x72, 0x74, 0x22, 0xe9, 0x06, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53,
- 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70,
- 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12,
- 0x47, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54,
- 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x6d, 0x6f,
- 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61,
- 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x5f, 0x63,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0e, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,
- 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c,
- 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
- 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x6b,
- 0x69, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x70, 0x6b, 0x69, 0x12, 0x36,
- 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x15, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x69, 0x0a, 0x14, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
- 0x73, 0x2e, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, 0x6d,
- 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x12, 0x69, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x54, 0x4c, 0x53,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d,
- 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65,
- 0x73, 0x22, 0x5a, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b,
- 0x50, 0x41, 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x00, 0x12, 0x0a, 0x0a,
- 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x55, 0x54,
- 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x50, 0x41,
- 0x53, 0x53, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x49,
- 0x53, 0x54, 0x49, 0x4f, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x04, 0x22, 0x4f, 0x0a,
- 0x0b, 0x54, 0x4c, 0x53, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0c, 0x0a, 0x08,
- 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c,
- 0x53, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31,
- 0x5f, 0x31, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x32, 0x10,
- 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x56, 0x31, 0x5f, 0x33, 0x10, 0x04, 0x42, 0x21,
- 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_gateway_proto_rawDescOnce sync.Once
- file_networking_v1beta1_gateway_proto_rawDescData = file_networking_v1beta1_gateway_proto_rawDesc
-)
-
-func file_networking_v1beta1_gateway_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_gateway_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_gateway_proto_rawDescData)
- })
- return file_networking_v1beta1_gateway_proto_rawDescData
-}
-
-var file_networking_v1beta1_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_networking_v1beta1_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_networking_v1beta1_gateway_proto_goTypes = []interface{}{
- (ServerTLSSettings_TLSmode)(0), // 0: istio.networking.v1beta1.ServerTLSSettings.TLSmode
- (ServerTLSSettings_TLSProtocol)(0), // 1: istio.networking.v1beta1.ServerTLSSettings.TLSProtocol
- (*Gateway)(nil), // 2: istio.networking.v1beta1.Gateway
- (*Server)(nil), // 3: istio.networking.v1beta1.Server
- (*Port)(nil), // 4: istio.networking.v1beta1.Port
- (*ServerTLSSettings)(nil), // 5: istio.networking.v1beta1.ServerTLSSettings
- nil, // 6: istio.networking.v1beta1.Gateway.SelectorEntry
-}
-var file_networking_v1beta1_gateway_proto_depIdxs = []int32{
- 3, // 0: istio.networking.v1beta1.Gateway.servers:type_name -> istio.networking.v1beta1.Server
- 6, // 1: istio.networking.v1beta1.Gateway.selector:type_name -> istio.networking.v1beta1.Gateway.SelectorEntry
- 4, // 2: istio.networking.v1beta1.Server.port:type_name -> istio.networking.v1beta1.Port
- 5, // 3: istio.networking.v1beta1.Server.tls:type_name -> istio.networking.v1beta1.ServerTLSSettings
- 0, // 4: istio.networking.v1beta1.ServerTLSSettings.mode:type_name -> istio.networking.v1beta1.ServerTLSSettings.TLSmode
- 1, // 5: istio.networking.v1beta1.ServerTLSSettings.min_protocol_version:type_name -> istio.networking.v1beta1.ServerTLSSettings.TLSProtocol
- 1, // 6: istio.networking.v1beta1.ServerTLSSettings.max_protocol_version:type_name -> istio.networking.v1beta1.ServerTLSSettings.TLSProtocol
- 7, // [7:7] is the sub-list for method output_type
- 7, // [7:7] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_gateway_proto_init() }
-func file_networking_v1beta1_gateway_proto_init() {
- if File_networking_v1beta1_gateway_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_gateway_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Gateway); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_gateway_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Server); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_gateway_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Port); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_gateway_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServerTLSSettings); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_gateway_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 5,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_gateway_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_gateway_proto_depIdxs,
- EnumInfos: file_networking_v1beta1_gateway_proto_enumTypes,
- MessageInfos: file_networking_v1beta1_gateway_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_gateway_proto = out.File
- file_networking_v1beta1_gateway_proto_rawDesc = nil
- file_networking_v1beta1_gateway_proto_goTypes = nil
- file_networking_v1beta1_gateway_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/proxy_config.pb.go b/gen/proto/networking/v1beta1/proxy_config.pb.go
deleted file mode 100644
index 828022b..0000000
--- a/gen/proto/networking/v1beta1/proxy_config.pb.go
+++ /dev/null
@@ -1,386 +0,0 @@
-// Copyright 2021 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/proxy_config.proto
-
-// $schema: istio.networking.v1beta1.ProxyConfig
-// $title: ProxyConfig
-// $description: Provides configuration for individual workloads.
-// $location: https://istio.io/docs/reference/config/networking/proxy-config.html
-// $aliases: [/docs/reference/config/networking/v1beta1/proxy-config]
-// $mode: file
-
-// `ProxyConfig` exposes proxy level configuration options. `ProxyConfig` can be configured on a per-workload basis,
-// a per-namespace basis, or mesh-wide. `ProxyConfig` is not a required resource; there are default values in place, which are documented
-// inline with each field.
-//
-// **NOTE**: fields in ProxyConfig are not dynamically configured - changes will require restart of workloads to take effect.
-//
-// For any namespace, including the root configuration namespace, it is only valid
-// to have a single workload selector-less `ProxyConfig` resource.
-//
-// For resources with a workload selector, it is only valid to have one resource selecting
-// any given workload.
-//
-// For mesh level configuration, put the resource in the root configuration namespace for
-// your Istio installation *without* a workload selector:
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ProxyConfig
-// metadata:
-// name: my-proxyconfig
-// namespace: istio-system
-// spec:
-// concurrency: 0
-// image:
-// type: distroless
-// ```
-//
-// For namespace level configuration, put the resource in the desired namespace without a workload selector:
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ProxyConfig
-// metadata:
-// name: my-ns-proxyconfig
-// namespace: user-namespace
-// spec:
-// concurrency: 0
-// ```
-//
-// For workload level configuration, set the `selector` field on the `ProxyConfig` resource:
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ProxyConfig
-// metadata:
-// name: per-workload-proxyconfig
-// namespace: example
-// spec:
-// selector:
-// labels:
-// app: ratings
-// concurrency: 0
-// image:
-// type: debug
-// ```
-//
-// If a `ProxyConfig` CR is defined that matches a workload it will merge with its `proxy.istio.io/config` annotation if present,
-// with the CR taking precedence over the annotation for overlapping fields. Similarly, if a mesh wide `ProxyConfig` CR is defined and
-// `meshConfig.DefaultConfig` is set, the two resources will be merged with the CR taking precedence for overlapping fields.
-//
-
-package v1beta1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
- v1beta1 "istio.io/api/type/v1beta1"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// `ProxyConfig` exposes proxy level configuration options.
-//
-//
-//
-//
-type ProxyConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional. Selectors specify the set of pods/VMs on which this `ProxyConfig` resource should be applied.
- // If not set, the `ProxyConfig` resource will be applied to all workloads in the namespace where this resource is defined.
- Selector *v1beta1.WorkloadSelector `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
- // The number of worker threads to run.
- // If unset, defaults to 2. If set to 0, this will be configured to use all cores on the machine using
- // CPU requests and limits to choose a value, with limits taking precedence over requests.
- Concurrency *wrapperspb.Int32Value `protobuf:"bytes,2,opt,name=concurrency,proto3" json:"concurrency,omitempty"`
- // Additional environment variables for the proxy.
- // Names starting with `ISTIO_META_` will be included in the generated bootstrap configuration and sent to the XDS server.
- EnvironmentVariables map[string]string `protobuf:"bytes,3,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Specifies the details of the proxy image.
- Image *ProxyImage `protobuf:"bytes,4,opt,name=image,proto3" json:"image,omitempty"`
-}
-
-func (x *ProxyConfig) Reset() {
- *x = ProxyConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_proxy_config_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ProxyConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProxyConfig) ProtoMessage() {}
-
-func (x *ProxyConfig) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_proxy_config_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProxyConfig.ProtoReflect.Descriptor instead.
-func (*ProxyConfig) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_proxy_config_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ProxyConfig) GetSelector() *v1beta1.WorkloadSelector {
- if x != nil {
- return x.Selector
- }
- return nil
-}
-
-func (x *ProxyConfig) GetConcurrency() *wrapperspb.Int32Value {
- if x != nil {
- return x.Concurrency
- }
- return nil
-}
-
-func (x *ProxyConfig) GetEnvironmentVariables() map[string]string {
- if x != nil {
- return x.EnvironmentVariables
- }
- return nil
-}
-
-func (x *ProxyConfig) GetImage() *ProxyImage {
- if x != nil {
- return x.Image
- }
- return nil
-}
-
-// The following values are used to construct proxy image url.
-// $hub/$image_name/$tag-$image_type
-// example: docker.io/istio/proxyv2:1.11.1 or docker.io/istio/proxyv2:1.11.1-distroless
-// This information was previously part of the Values API.
-type ProxyImage struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The image type of the image.
- // Istio publishes default, debug, and distroless images.
- // Other values are allowed if those image types (example: centos) are published to the specified hub.
- // supported values: default, debug, distroless.
- ImageType string `protobuf:"bytes,1,opt,name=image_type,json=imageType,proto3" json:"image_type,omitempty"`
-}
-
-func (x *ProxyImage) Reset() {
- *x = ProxyImage{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_proxy_config_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ProxyImage) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ProxyImage) ProtoMessage() {}
-
-func (x *ProxyImage) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_proxy_config_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ProxyImage.ProtoReflect.Descriptor instead.
-func (*ProxyImage) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_proxy_config_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ProxyImage) GetImageType() string {
- if x != nil {
- return x.ImageType
- }
- return ""
-}
-
-var File_networking_v1beta1_proxy_config_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_proxy_config_proto_rawDesc = []byte{
- 0x0a, 0x25, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x1b, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
- 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89,
- 0x03, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40,
- 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12,
- 0x74, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76,
- 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
- 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69,
- 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x50, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67,
- 0x65, 0x1a, 0x47, 0x0a, 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
- 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2b, 0x0a, 0x0a, 0x50, 0x72,
- 0x6f, 0x78, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67,
- 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_proxy_config_proto_rawDescOnce sync.Once
- file_networking_v1beta1_proxy_config_proto_rawDescData = file_networking_v1beta1_proxy_config_proto_rawDesc
-)
-
-func file_networking_v1beta1_proxy_config_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_proxy_config_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_proxy_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_proxy_config_proto_rawDescData)
- })
- return file_networking_v1beta1_proxy_config_proto_rawDescData
-}
-
-var file_networking_v1beta1_proxy_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_networking_v1beta1_proxy_config_proto_goTypes = []interface{}{
- (*ProxyConfig)(nil), // 0: istio.networking.v1beta1.ProxyConfig
- (*ProxyImage)(nil), // 1: istio.networking.v1beta1.ProxyImage
- nil, // 2: istio.networking.v1beta1.ProxyConfig.EnvironmentVariablesEntry
- (*v1beta1.WorkloadSelector)(nil), // 3: istio.type.v1beta1.WorkloadSelector
- (*wrapperspb.Int32Value)(nil), // 4: google.protobuf.Int32Value
-}
-var file_networking_v1beta1_proxy_config_proto_depIdxs = []int32{
- 3, // 0: istio.networking.v1beta1.ProxyConfig.selector:type_name -> istio.type.v1beta1.WorkloadSelector
- 4, // 1: istio.networking.v1beta1.ProxyConfig.concurrency:type_name -> google.protobuf.Int32Value
- 2, // 2: istio.networking.v1beta1.ProxyConfig.environment_variables:type_name -> istio.networking.v1beta1.ProxyConfig.EnvironmentVariablesEntry
- 1, // 3: istio.networking.v1beta1.ProxyConfig.image:type_name -> istio.networking.v1beta1.ProxyImage
- 4, // [4:4] is the sub-list for method output_type
- 4, // [4:4] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_proxy_config_proto_init() }
-func file_networking_v1beta1_proxy_config_proto_init() {
- if File_networking_v1beta1_proxy_config_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_proxy_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProxyConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_proxy_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProxyImage); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_proxy_config_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_proxy_config_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_proxy_config_proto_depIdxs,
- MessageInfos: file_networking_v1beta1_proxy_config_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_proxy_config_proto = out.File
- file_networking_v1beta1_proxy_config_proto_rawDesc = nil
- file_networking_v1beta1_proxy_config_proto_goTypes = nil
- file_networking_v1beta1_proxy_config_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/service_entry.pb.go b/gen/proto/networking/v1beta1/service_entry.pb.go
deleted file mode 100644
index d7d43c1..0000000
--- a/gen/proto/networking/v1beta1/service_entry.pb.go
+++ /dev/null
@@ -1,1295 +0,0 @@
-// Copyright 2020 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/service_entry.proto
-
-// $schema: istio.networking.v1beta1.ServiceEntry
-// $title: Service Entry
-// $description: Configuration affecting service registry.
-// $location: https://istio.io/docs/reference/config/networking/service-entry.html
-// $aliases: [/docs/reference/config/networking/v1beta1/service-entry]
-// $mode: none
-
-// `ServiceEntry` enables adding additional entries into Istio's
-// internal service registry, so that auto-discovered services in the
-// mesh can access/route to these manually specified services. A
-// service entry describes the properties of a service (DNS name,
-// VIPs, ports, protocols, endpoints). These services could be
-// external to the mesh (e.g., web APIs) or mesh-internal services
-// that are not part of the platform's service registry (e.g., a set
-// of VMs talking to services in Kubernetes). In addition, the
-// endpoints of a service entry can also be dynamically selected by
-// using the `workloadSelector` field. These endpoints can be VM
-// workloads declared using the `WorkloadEntry` object or Kubernetes
-// pods. The ability to select both pods and VMs under a single
-// service allows for migration of services from VMs to Kubernetes
-// without having to change the existing DNS names associated with the
-// services.
-//
-// The following example declares a few external APIs accessed by internal
-// applications over HTTPS. The sidecar inspects the SNI value in the
-// ClientHello message to route to the appropriate external service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-https
-// spec:
-// hosts:
-// - api.dropboxapi.com
-// - www.googleapis.com
-// - api.facebook.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: DNS
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-https
-// spec:
-// hosts:
-// - api.dropboxapi.com
-// - www.googleapis.com
-// - api.facebook.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: DNS
-// ```
-// {{}}
-// {{}}
-//
-// The following configuration adds a set of MongoDB instances running on
-// unmanaged VMs to Istio's registry, so that these services can be treated
-// as any other service in the mesh. The associated DestinationRule is used
-// to initiate mTLS connections to the database instances.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mongocluster
-// spec:
-// hosts:
-// - mymongodb.somedomain # not used
-// addresses:
-// - 192.192.192.192/24 # VIPs
-// ports:
-// - number: 27018
-// name: mongodb
-// protocol: MONGO
-// location: MESH_INTERNAL
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mongocluster
-// spec:
-// hosts:
-// - mymongodb.somedomain # not used
-// addresses:
-// - 192.192.192.192/24 # VIPs
-// ports:
-// - number: 27018
-// name: mongodb
-// protocol: MONGO
-// location: MESH_INTERNAL
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// ```
-// {{}}
-// {{}}
-//
-// and the associated DestinationRule
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: mtls-mongocluster
-// spec:
-// host: mymongodb.somedomain
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: mtls-mongocluster
-// spec:
-// host: mymongodb.somedomain
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-// {{}}
-//
-// The following example uses a combination of service entry and TLS
-// routing in a virtual service to steer traffic based on the SNI value to
-// an internal egress firewall.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-redirect
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: NONE
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-redirect
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: NONE
-// ```
-// {{}}
-// {{}}
-//
-// And the associated VirtualService to route based on the SNI value.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: tls-routing
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// tls:
-// - match:
-// - sniHosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// route:
-// - destination:
-// host: internal-egress-firewall.ns1.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: tls-routing
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// tls:
-// - match:
-// - sniHosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// route:
-// - destination:
-// host: internal-egress-firewall.ns1.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-//
-// The virtual service with TLS match serves to override the default SNI
-// match. In the absence of a virtual service, traffic will be forwarded to
-// the wikipedia domains.
-//
-// The following example demonstrates the use of a dedicated egress gateway
-// through which all external service traffic is forwarded.
-// The 'exportTo' field allows for control over the visibility of a service
-// declaration to other namespaces in the mesh. By default, a service is exported
-// to all namespaces. The following example restricts the visibility to the
-// current namespace, represented by ".", so that it cannot be used by other
-// namespaces.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-httpbin
-// namespace : egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "."
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-httpbin
-// namespace : egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "."
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// ```
-// {{}}
-// {{}}
-//
-// Define a gateway to handle all egress traffic.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: istio-egressgateway
-// namespace: istio-system
-// spec:
-// selector:
-// istio: egressgateway
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: istio-egressgateway
-// namespace: istio-system
-// spec:
-// selector:
-// istio: egressgateway
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// And the associated `VirtualService` to route from the sidecar to the
-// gateway service (`istio-egressgateway.istio-system.svc.cluster.local`), as
-// well as route from the gateway to the external service. Note that the
-// virtual service is exported to all namespaces enabling them to route traffic
-// through the gateway to the external service. Forcing traffic to go through
-// a managed middle proxy like this is a common practice.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: gateway-routing
-// namespace: egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "*"
-// gateways:
-// - mesh
-// - istio-egressgateway
-// http:
-// - match:
-// - port: 80
-// gateways:
-// - mesh
-// route:
-// - destination:
-// host: istio-egressgateway.istio-system.svc.cluster.local
-// - match:
-// - port: 80
-// gateways:
-// - istio-egressgateway
-// route:
-// - destination:
-// host: example.com
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: gateway-routing
-// namespace: egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "*"
-// gateways:
-// - mesh
-// - istio-egressgateway
-// http:
-// - match:
-// - port: 80
-// gateways:
-// - mesh
-// route:
-// - destination:
-// host: istio-egressgateway.istio-system.svc.cluster.local
-// - match:
-// - port: 80
-// gateways:
-// - istio-egressgateway
-// route:
-// - destination:
-// host: example.com
-// ```
-// {{}}
-// {{}}
-//
-// The following example demonstrates the use of wildcards in the hosts for
-// external services. If the connection has to be routed to the IP address
-// requested by the application (i.e. application resolves DNS and attempts
-// to connect to a specific IP), the discovery mode must be set to `NONE`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wildcard-example
-// spec:
-// hosts:
-// - "*.bar.com"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: NONE
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wildcard-example
-// spec:
-// hosts:
-// - "*.bar.com"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: NONE
-// ```
-// {{}}
-// {{}}
-//
-// The following example demonstrates a service that is available via a
-// Unix Domain Socket on the host of the client. The resolution must be
-// set to STATIC to use Unix address endpoints.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: unix-domain-socket-example
-// spec:
-// hosts:
-// - "example.unix.local"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: unix:///var/run/example/socket
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: unix-domain-socket-example
-// spec:
-// hosts:
-// - "example.unix.local"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: unix:///var/run/example/socket
-// ```
-// {{}}
-// {{}}
-//
-// For HTTP-based services, it is possible to create a `VirtualService`
-// backed by multiple DNS addressable endpoints. In such a scenario, the
-// application can use the `HTTP_PROXY` environment variable to transparently
-// reroute API calls for the `VirtualService` to a chosen backend. For
-// example, the following configuration creates a non-existent external
-// service called foo.bar.com backed by three domains: us.foo.bar.com:8080,
-// uk.foo.bar.com:9080, and in.foo.bar.com:7080
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-dns
-// spec:
-// hosts:
-// - foo.bar.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// endpoints:
-// - address: us.foo.bar.com
-// ports:
-// http: 8080
-// - address: uk.foo.bar.com
-// ports:
-// http: 9080
-// - address: in.foo.bar.com
-// ports:
-// http: 7080
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-dns
-// spec:
-// hosts:
-// - foo.bar.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// endpoints:
-// - address: us.foo.bar.com
-// ports:
-// http: 8080
-// - address: uk.foo.bar.com
-// ports:
-// http: 9080
-// - address: in.foo.bar.com
-// ports:
-// http: 7080
-// ```
-// {{}}
-// {{}}
-//
-// With `HTTP_PROXY=http://localhost/`, calls from the application to
-// `http://foo.bar.com` will be load balanced across the three domains
-// specified above. In other words, a call to `http://foo.bar.com/baz` would
-// be translated to `http://uk.foo.bar.com/baz`.
-//
-// The following example illustrates the usage of a `ServiceEntry`
-// containing a subject alternate name
-// whose format conforms to the [SPIFFE standard](https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md):
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: httpbin
-// namespace : httpbin-ns
-// spec:
-// hosts:
-// - example.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// subjectAltNames:
-// - "spiffe://cluster.local/ns/httpbin-ns/sa/httpbin-service-account"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: httpbin
-// namespace : httpbin-ns
-// spec:
-// hosts:
-// - example.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// subjectAltNames:
-// - "spiffe://cluster.local/ns/httpbin-ns/sa/httpbin-service-account"
-// ```
-// {{}}
-// {{}}
-//
-// The following example demonstrates the use of `ServiceEntry` with a
-// `workloadSelector` to handle the migration of a service
-// `details.bookinfo.com` from VMs to Kubernetes. The service has two
-// VM-based instances with sidecars as well as a set of Kubernetes
-// pods managed by a standard deployment object. Consumers of this
-// service in the mesh will be automatically load balanced across the
-// VMs and Kubernetes. VM for the `details.bookinfo.com`
-// service. This VM has sidecar installed and bootstrapped using the
-// `details-legacy` service account. The sidecar receives HTTP traffic
-// on port 80 (wrapped in istio mutual TLS) and forwards it to the
-// application on the localhost on the same port.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-1
-// spec:
-// serviceAccount: details
-// address: 2.2.2.2
-// labels:
-// app: details
-// instance-id: vm1
-// ---
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-2
-// spec:
-// serviceAccount: details
-// address: 3.3.3.3
-// labels:
-// app: details
-// instance-id: vm2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-1
-// spec:
-// serviceAccount: details
-// address: 2.2.2.2
-// labels:
-// app: details
-// instance-id: vm1
-// ---
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-2
-// spec:
-// serviceAccount: details
-// address: 3.3.3.3
-// labels:
-// app: details
-// instance-id: vm2
-// ```
-// {{}}
-// {{}}
-//
-// Assuming there is also a Kubernetes deployment with pod labels
-// `app: details` using the same service account `details`, the
-// following service entry declares a service spanning both VMs and
-// Kubernetes:
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details
-// ```
-// {{}}
-// {{}}
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Location specifies whether the service is part of Istio mesh or
-// outside the mesh. Location determines the behavior of several
-// features, such as service-to-service mTLS authentication, policy
-// enforcement, etc. When communicating with services outside the mesh,
-// Istio's mTLS authentication is disabled, and policy enforcement is
-// performed on the client-side as opposed to server-side.
-type ServiceEntry_Location int32
-
-const (
- // Signifies that the service is external to the mesh. Typically used
- // to indicate external services consumed through APIs.
- ServiceEntry_MESH_EXTERNAL ServiceEntry_Location = 0
- // Signifies that the service is part of the mesh. Typically used to
- // indicate services added explicitly as part of expanding the service
- // mesh to include unmanaged infrastructure (e.g., VMs added to a
- // Kubernetes based service mesh).
- ServiceEntry_MESH_INTERNAL ServiceEntry_Location = 1
-)
-
-// Enum value maps for ServiceEntry_Location.
-var (
- ServiceEntry_Location_name = map[int32]string{
- 0: "MESH_EXTERNAL",
- 1: "MESH_INTERNAL",
- }
- ServiceEntry_Location_value = map[string]int32{
- "MESH_EXTERNAL": 0,
- "MESH_INTERNAL": 1,
- }
-)
-
-func (x ServiceEntry_Location) Enum() *ServiceEntry_Location {
- p := new(ServiceEntry_Location)
- *p = x
- return p
-}
-
-func (x ServiceEntry_Location) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ServiceEntry_Location) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_service_entry_proto_enumTypes[0].Descriptor()
-}
-
-func (ServiceEntry_Location) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_service_entry_proto_enumTypes[0]
-}
-
-func (x ServiceEntry_Location) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ServiceEntry_Location.Descriptor instead.
-func (ServiceEntry_Location) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_service_entry_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// Resolution determines how the proxy will resolve the IP addresses of
-// the network endpoints associated with the service, so that it can
-// route to one of them. The resolution mode specified here has no impact
-// on how the application resolves the IP address associated with the
-// service. The application may still have to use DNS to resolve the
-// service to an IP so that the outbound traffic can be captured by the
-// Proxy. Alternatively, for HTTP services, the application could
-// directly communicate with the proxy (e.g., by setting HTTP_PROXY) to
-// talk to these services.
-type ServiceEntry_Resolution int32
-
-const (
- // Assume that incoming connections have already been resolved (to a
- // specific destination IP address). Such connections are typically
- // routed via the proxy using mechanisms such as IP table REDIRECT/
- // eBPF. After performing any routing related transformations, the
- // proxy will forward the connection to the IP address to which the
- // connection was bound.
- ServiceEntry_NONE ServiceEntry_Resolution = 0
- // Use the static IP addresses specified in endpoints (see below) as the
- // backing instances associated with the service.
- ServiceEntry_STATIC ServiceEntry_Resolution = 1
- // Attempt to resolve the IP address by querying the ambient DNS,
- // asynchronously. If no endpoints are specified, the proxy
- // will resolve the DNS address specified in the hosts field, if
- // wildcards are not used. If endpoints are specified, the DNS
- // addresses specified in the endpoints will be resolved to determine
- // the destination IP address. DNS resolution cannot be used with Unix
- // domain socket endpoints.
- ServiceEntry_DNS ServiceEntry_Resolution = 2
- // Attempt to resolve the IP address by querying the ambient DNS,
- // asynchronously. Unlike DNS, DNS_ROUND_ROBIN only uses the
- // first IP address returned when a new connection needs to be initiated
- // without relying on complete results of DNS resolution and connections
- // made to hosts will be retained even if DNS records change frequently
- // eliminating draining connection pools and connection cycling.
- // This is best suited for large web scale services that
- // must be accessed via DNS. The proxy will resolve the DNS address
- // specified in the hosts field, if wildcards are not used. DNS resolution
- // cannot be used with Unix domain socket endpoints.
- ServiceEntry_DNS_ROUND_ROBIN ServiceEntry_Resolution = 3
-)
-
-// Enum value maps for ServiceEntry_Resolution.
-var (
- ServiceEntry_Resolution_name = map[int32]string{
- 0: "NONE",
- 1: "STATIC",
- 2: "DNS",
- 3: "DNS_ROUND_ROBIN",
- }
- ServiceEntry_Resolution_value = map[string]int32{
- "NONE": 0,
- "STATIC": 1,
- "DNS": 2,
- "DNS_ROUND_ROBIN": 3,
- }
-)
-
-func (x ServiceEntry_Resolution) Enum() *ServiceEntry_Resolution {
- p := new(ServiceEntry_Resolution)
- *p = x
- return p
-}
-
-func (x ServiceEntry_Resolution) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ServiceEntry_Resolution) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_service_entry_proto_enumTypes[1].Descriptor()
-}
-
-func (ServiceEntry_Resolution) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_service_entry_proto_enumTypes[1]
-}
-
-func (x ServiceEntry_Resolution) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ServiceEntry_Resolution.Descriptor instead.
-func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_service_entry_proto_rawDescGZIP(), []int{0, 1}
-}
-
-// ServiceEntry enables adding additional entries into Istio's internal
-// service registry.
-//
-//
-//
-//
-//
-type ServiceEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The hosts associated with the ServiceEntry. Could be a DNS
- // name with wildcard prefix.
- //
- // 1. The hosts field is used to select matching hosts in VirtualServices and DestinationRules.
- // 2. For HTTP traffic the HTTP Host/Authority header will be matched against the hosts field.
- // 3. For HTTPs or TLS traffic containing Server Name Indication (SNI), the SNI value
- // will be matched against the hosts field.
- //
- // **NOTE 1:** When resolution is set to type DNS and no endpoints
- // are specified, the host field will be used as the DNS name of the
- // endpoint to route traffic to.
- //
- // **NOTE 2:** If the hostname matches with the name of a service
- // from another service registry such as Kubernetes that also
- // supplies its own set of endpoints, the ServiceEntry will be
- // treated as a decorator of the existing Kubernetes
- // service. Properties in the service entry will be added to the
- // Kubernetes service if applicable. Currently, the only the
- // following additional properties will be considered by `istiod`:
- //
- // 1. subjectAltNames: In addition to verifying the SANs of the
- // service accounts associated with the pods of the service, the
- // SANs specified here will also be verified.
- //
- Hosts []string `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"`
- // The virtual IP addresses associated with the service. Could be CIDR
- // prefix. For HTTP traffic, generated route configurations will include http route
- // domains for both the `addresses` and `hosts` field values and the destination will
- // be identified based on the HTTP Host/Authority header.
- // If one or more IP addresses are specified,
- // the incoming traffic will be identified as belonging to this service
- // if the destination IP matches the IP/CIDRs specified in the addresses
- // field. If the Addresses field is empty, traffic will be identified
- // solely based on the destination port. In such scenarios, the port on
- // which the service is being accessed must not be shared by any other
- // service in the mesh. In other words, the sidecar will behave as a
- // simple TCP proxy, forwarding incoming traffic on a specified port to
- // the specified destination endpoint IP/host. Unix domain socket
- // addresses are not supported in this field.
- Addresses []string `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"`
- // The ports associated with the external service. If the
- // Endpoints are Unix domain socket addresses, there must be exactly one
- // port.
- Ports []*Port `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"`
- // Specify whether the service should be considered external to the mesh
- // or part of the mesh.
- Location ServiceEntry_Location `protobuf:"varint,4,opt,name=location,proto3,enum=istio.networking.v1beta1.ServiceEntry_Location" json:"location,omitempty"`
- // Service discovery mode for the hosts. Care must be taken
- // when setting the resolution mode to NONE for a TCP port without
- // accompanying IP addresses. In such cases, traffic to any IP on
- // said port will be allowed (i.e. `0.0.0.0:`).
- Resolution ServiceEntry_Resolution `protobuf:"varint,5,opt,name=resolution,proto3,enum=istio.networking.v1beta1.ServiceEntry_Resolution" json:"resolution,omitempty"`
- // One or more endpoints associated with the service. Only one of
- // `endpoints` or `workloadSelector` can be specified.
- Endpoints []*WorkloadEntry `protobuf:"bytes,6,rep,name=endpoints,proto3" json:"endpoints,omitempty"`
- // Applicable only for MESH_INTERNAL services. Only one of
- // `endpoints` or `workloadSelector` can be specified. Selects one
- // or more Kubernetes pods or VM workloads (specified using
- // `WorkloadEntry`) based on their labels. The `WorkloadEntry` object
- // representing the VMs should be defined in the same namespace as
- // the ServiceEntry.
- WorkloadSelector *WorkloadSelector `protobuf:"bytes,9,opt,name=workload_selector,json=workloadSelector,proto3" json:"workload_selector,omitempty"`
- // A list of namespaces to which this service is exported. Exporting a service
- // allows it to be used by sidecars, gateways and virtual services defined in
- // other namespaces. This feature provides a mechanism for service owners
- // and mesh administrators to control the visibility of services across
- // namespace boundaries.
- //
- // If no namespaces are specified then the service is exported to all
- // namespaces by default.
- //
- // The value "." is reserved and defines an export to the same namespace that
- // the service is declared in. Similarly the value "*" is reserved and
- // defines an export to all namespaces.
- //
- // For a Kubernetes Service, the equivalent effect can be achieved by setting
- // the annotation "networking.istio.io/exportTo" to a comma-separated list
- // of namespace names.
- ExportTo []string `protobuf:"bytes,7,rep,name=export_to,json=exportTo,proto3" json:"export_to,omitempty"`
- // If specified, the proxy will verify that the server certificate's
- // subject alternate name matches one of the specified values.
- //
- // NOTE: When using the workloadEntry with workloadSelectors, the
- // service account specified in the workloadEntry will also be used
- // to derive the additional subject alternate names that should be
- // verified.
- SubjectAltNames []string `protobuf:"bytes,8,rep,name=subject_alt_names,json=subjectAltNames,proto3" json:"subject_alt_names,omitempty"`
-}
-
-func (x *ServiceEntry) Reset() {
- *x = ServiceEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_service_entry_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ServiceEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServiceEntry) ProtoMessage() {}
-
-func (x *ServiceEntry) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_service_entry_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServiceEntry.ProtoReflect.Descriptor instead.
-func (*ServiceEntry) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_service_entry_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ServiceEntry) GetHosts() []string {
- if x != nil {
- return x.Hosts
- }
- return nil
-}
-
-func (x *ServiceEntry) GetAddresses() []string {
- if x != nil {
- return x.Addresses
- }
- return nil
-}
-
-func (x *ServiceEntry) GetPorts() []*Port {
- if x != nil {
- return x.Ports
- }
- return nil
-}
-
-func (x *ServiceEntry) GetLocation() ServiceEntry_Location {
- if x != nil {
- return x.Location
- }
- return ServiceEntry_MESH_EXTERNAL
-}
-
-func (x *ServiceEntry) GetResolution() ServiceEntry_Resolution {
- if x != nil {
- return x.Resolution
- }
- return ServiceEntry_NONE
-}
-
-func (x *ServiceEntry) GetEndpoints() []*WorkloadEntry {
- if x != nil {
- return x.Endpoints
- }
- return nil
-}
-
-func (x *ServiceEntry) GetWorkloadSelector() *WorkloadSelector {
- if x != nil {
- return x.WorkloadSelector
- }
- return nil
-}
-
-func (x *ServiceEntry) GetExportTo() []string {
- if x != nil {
- return x.ExportTo
- }
- return nil
-}
-
-func (x *ServiceEntry) GetSubjectAltNames() []string {
- if x != nil {
- return x.SubjectAltNames
- }
- return nil
-}
-
-var File_networking_v1beta1_service_entry_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_service_entry_proto_rawDesc = []byte{
- 0x0a, 0x26, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x74,
- 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61,
- 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x22, 0x87, 0x05, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x1a, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a,
- 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x70,
- 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74,
- 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02,
- 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x02, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a,
- 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a,
- 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x75,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,
- 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c,
- 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x30, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52,
- 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x53, 0x48, 0x5f, 0x49, 0x4e,
- 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x22, 0x40, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x6f,
- 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,
- 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
- 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x4e, 0x53, 0x5f, 0x52, 0x4f, 0x55,
- 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x03, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_service_entry_proto_rawDescOnce sync.Once
- file_networking_v1beta1_service_entry_proto_rawDescData = file_networking_v1beta1_service_entry_proto_rawDesc
-)
-
-func file_networking_v1beta1_service_entry_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_service_entry_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_service_entry_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_service_entry_proto_rawDescData)
- })
- return file_networking_v1beta1_service_entry_proto_rawDescData
-}
-
-var file_networking_v1beta1_service_entry_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_networking_v1beta1_service_entry_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_networking_v1beta1_service_entry_proto_goTypes = []interface{}{
- (ServiceEntry_Location)(0), // 0: istio.networking.v1beta1.ServiceEntry.Location
- (ServiceEntry_Resolution)(0), // 1: istio.networking.v1beta1.ServiceEntry.Resolution
- (*ServiceEntry)(nil), // 2: istio.networking.v1beta1.ServiceEntry
- (*Port)(nil), // 3: istio.networking.v1beta1.Port
- (*WorkloadEntry)(nil), // 4: istio.networking.v1beta1.WorkloadEntry
- (*WorkloadSelector)(nil), // 5: istio.networking.v1beta1.WorkloadSelector
-}
-var file_networking_v1beta1_service_entry_proto_depIdxs = []int32{
- 3, // 0: istio.networking.v1beta1.ServiceEntry.ports:type_name -> istio.networking.v1beta1.Port
- 0, // 1: istio.networking.v1beta1.ServiceEntry.location:type_name -> istio.networking.v1beta1.ServiceEntry.Location
- 1, // 2: istio.networking.v1beta1.ServiceEntry.resolution:type_name -> istio.networking.v1beta1.ServiceEntry.Resolution
- 4, // 3: istio.networking.v1beta1.ServiceEntry.endpoints:type_name -> istio.networking.v1beta1.WorkloadEntry
- 5, // 4: istio.networking.v1beta1.ServiceEntry.workload_selector:type_name -> istio.networking.v1beta1.WorkloadSelector
- 5, // [5:5] is the sub-list for method output_type
- 5, // [5:5] is the sub-list for method input_type
- 5, // [5:5] is the sub-list for extension type_name
- 5, // [5:5] is the sub-list for extension extendee
- 0, // [0:5] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_service_entry_proto_init() }
-func file_networking_v1beta1_service_entry_proto_init() {
- if File_networking_v1beta1_service_entry_proto != nil {
- return
- }
- file_networking_v1beta1_gateway_proto_init()
- file_networking_v1beta1_sidecar_proto_init()
- file_networking_v1beta1_workload_entry_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_service_entry_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ServiceEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_service_entry_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_service_entry_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_service_entry_proto_depIdxs,
- EnumInfos: file_networking_v1beta1_service_entry_proto_enumTypes,
- MessageInfos: file_networking_v1beta1_service_entry_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_service_entry_proto = out.File
- file_networking_v1beta1_service_entry_proto_rawDesc = nil
- file_networking_v1beta1_service_entry_proto_goTypes = nil
- file_networking_v1beta1_service_entry_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/sidecar.pb.go b/gen/proto/networking/v1beta1/sidecar.pb.go
deleted file mode 100644
index f034ba4..0000000
--- a/gen/proto/networking/v1beta1/sidecar.pb.go
+++ /dev/null
@@ -1,1242 +0,0 @@
-// Copyright 2020 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/sidecar.proto
-
-// $schema: istio.networking.v1beta1.Sidecar
-// $title: Sidecar
-// $description: Configuration affecting network reachability of a sidecar.
-// $location: https://istio.io/docs/reference/config/networking/sidecar.html
-// $aliases: [/docs/reference/config/networking/v1beta1/sidecar]
-// $mode: none
-
-// `Sidecar` describes the configuration of the sidecar proxy that mediates
-// inbound and outbound communication to the workload instance it is attached to. By
-// default, Istio will program all sidecar proxies in the mesh with the
-// necessary configuration required to reach every workload instance in the mesh, as
-// well as accept traffic on all the ports associated with the
-// workload. The `Sidecar` configuration provides a way to fine tune the set of
-// ports, protocols that the proxy will accept when forwarding traffic to
-// and from the workload. In addition, it is possible to restrict the set
-// of services that the proxy can reach when forwarding outbound traffic
-// from workload instances.
-//
-// Services and configuration in a mesh are organized into one or more
-// namespaces (e.g., a Kubernetes namespace or a CF org/space). A `Sidecar`
-// configuration in a namespace will apply to one or more workload instances in the same
-// namespace, selected using the `workloadSelector` field. In the absence of a
-// `workloadSelector`, it will apply to all workload instances in the same
-// namespace. When determining the `Sidecar` configuration to be applied to a
-// workload instance, preference will be given to the resource with a
-// `workloadSelector` that selects this workload instance, over a `Sidecar` configuration
-// without any `workloadSelector`.
-//
-// **NOTE 1**: *_Each namespace can have only one `Sidecar`
-// configuration without any `workloadSelector`_ that specifies the
-// default for all pods in that namespace*. It is recommended to use
-// the name `default` for the namespace-wide sidecar. The behavior of
-// the system is undefined if more than one selector-less `Sidecar`
-// configurations exist in a given namespace. The behavior of the
-// system is undefined if two or more `Sidecar` configurations with a
-// `workloadSelector` select the same workload instance.
-//
-// **NOTE 2**: *_A `Sidecar` configuration in the `MeshConfig`
-// [root namespace](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig)
-// will be applied by default to all namespaces without a `Sidecar`
-// configuration_*. This global default `Sidecar` configuration should not have
-// any `workloadSelector`.
-//
-// The example below declares a global default `Sidecar` configuration
-// in the root namespace called `istio-config`, that configures
-// sidecars in all namespaces to allow egress traffic only to other
-// workloads in the same namespace as well as to services in the
-// `istio-system` namespace.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: istio-config
-// spec:
-// egress:
-// - hosts:
-// - "./*"
-// - "istio-system/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: istio-config
-// spec:
-// egress:
-// - hosts:
-// - "./*"
-// - "istio-system/*"
-// ```
-// {{}}
-// {{}}
-//
-// The example below declares a `Sidecar` configuration in the
-// `prod-us1` namespace that overrides the global default defined
-// above, and configures the sidecars in the namespace to allow egress
-// traffic to public services in the `prod-us1`, `prod-apis`, and the
-// `istio-system` namespaces.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: prod-us1
-// spec:
-// egress:
-// - hosts:
-// - "prod-us1/*"
-// - "prod-apis/*"
-// - "istio-system/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: prod-us1
-// spec:
-// egress:
-// - hosts:
-// - "prod-us1/*"
-// - "prod-apis/*"
-// - "istio-system/*"
-// ```
-// {{}}
-// {{}}
-//
-// The following example declares a `Sidecar` configuration in the
-// `prod-us1` namespace for all pods with labels `app: ratings`
-// belonging to the `ratings.prod-us1` service. The workload accepts
-// inbound HTTP traffic on port 9080. The traffic is then forwarded to
-// the attached workload instance listening on a Unix domain
-// socket. In the egress direction, in addition to the `istio-system`
-// namespace, the sidecar proxies only HTTP traffic bound for port
-// 9080 for services in the `prod-us1` namespace.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: ratings
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: ratings
-// ingress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: unix:///var/run/someuds.sock
-// egress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: egresshttp
-// hosts:
-// - "prod-us1/*"
-// - hosts:
-// - "istio-system/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: ratings
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: ratings
-// ingress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: unix:///var/run/someuds.sock
-// egress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: egresshttp
-// hosts:
-// - "prod-us1/*"
-// - hosts:
-// - "istio-system/*"
-// ```
-// {{}}
-// {{}}
-//
-// If the workload is deployed without IPTables-based traffic capture,
-// the `Sidecar` configuration is the only way to configure the ports
-// on the proxy attached to the workload instance. The following
-// example declares a `Sidecar` configuration in the `prod-us1`
-// namespace for all pods with labels `app: productpage` belonging to
-// the `productpage.prod-us1` service. Assuming that these pods are
-// deployed without IPtable rules (i.e. the `istio-init` container)
-// and the proxy metadata `ISTIO_META_INTERCEPTION_MODE` is set to
-// `NONE`, the specification, below, allows such pods to receive HTTP
-// traffic on port 9080 (wrapped inside Istio mutual TLS) and forward
-// it to the application listening on `127.0.0.1:8080`. It also allows
-// the application to communicate with a backing MySQL database on
-// `127.0.0.1:3306`, that then gets proxied to the externally hosted
-// MySQL service at `mysql.foo.com:3306`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: no-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - port:
-// number: 9080 # binds to proxy_instance_ip:9080 (0.0.0.0:9080, if no unicast IP is available for the instance)
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// egress:
-// - port:
-// number: 3306
-// protocol: MYSQL
-// name: egressmysql
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// bind: 127.0.0.1
-// hosts:
-// - "*/mysql.foo.com"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: no-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - port:
-// number: 9080 # binds to proxy_instance_ip:9080 (0.0.0.0:9080, if no unicast IP is available for the instance)
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// egress:
-// - port:
-// number: 3306
-// protocol: MYSQL
-// name: egressmysql
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// bind: 127.0.0.1
-// hosts:
-// - "*/mysql.foo.com"
-// ```
-// {{}}
-// {{}}
-//
-// And the associated service entry for routing to `mysql.foo.com:3306`
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mysql
-// namespace: ns1
-// spec:
-// hosts:
-// - mysql.foo.com
-// ports:
-// - number: 3306
-// name: mysql
-// protocol: MYSQL
-// location: MESH_EXTERNAL
-// resolution: DNS
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mysql
-// namespace: ns1
-// spec:
-// hosts:
-// - mysql.foo.com
-// ports:
-// - number: 3306
-// name: mysql
-// protocol: MYSQL
-// location: MESH_EXTERNAL
-// resolution: DNS
-// ```
-// {{}}
-// {{}}
-//
-// It is also possible to mix and match traffic capture modes in a single
-// proxy. For example, consider a setup where internal services are on the
-// `192.168.0.0/16` subnet. So, IP tables are setup on the VM to capture all
-// outbound traffic on `192.168.0.0/16` subnet. Assume that the VM has an
-// additional network interface on `172.16.0.0/16` subnet for inbound
-// traffic. The following `Sidecar` configuration allows the VM to expose a
-// listener on `172.16.1.32:80` (the VM's IP) for traffic arriving from the
-// `172.16.0.0/16` subnet.
-//
-// **NOTE**: The `ISTIO_META_INTERCEPTION_MODE` metadata on the
-// proxy in the VM should contain `REDIRECT` or `TPROXY` as its value,
-// implying that IP tables based traffic capture is active.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: partial-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - bind: 172.16.1.32
-// port:
-// number: 80 # binds to 172.16.1.32:80
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE
-// egress:
-// # use the system detected defaults
-// # sets up configuration to handle outbound traffic to services
-// # in 192.168.0.0/16 subnet, based on information provided by the
-// # service registry
-// - captureMode: IPTABLES
-// hosts:
-// - "*/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: partial-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - bind: 172.16.1.32
-// port:
-// number: 80 # binds to 172.16.1.32:80
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE
-// egress:
-// # use the system detected defaults
-// # sets up configuration to handle outbound traffic to services
-// # in 192.168.0.0/16 subnet, based on information provided by the
-// # service registry
-// - captureMode: IPTABLES
-// hosts:
-// - "*/*"
-// ```
-// {{}}
-// {{}}
-//
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// `CaptureMode` describes how traffic to a listener is expected to be
-// captured. Applicable only when the listener is bound to an IP.
-type CaptureMode int32
-
-const (
- // The default capture mode defined by the environment.
- CaptureMode_DEFAULT CaptureMode = 0
- // Capture traffic using IPtables redirection.
- CaptureMode_IPTABLES CaptureMode = 1
- // No traffic capture. When used in an egress listener, the application is
- // expected to explicitly communicate with the listener port or Unix
- // domain socket. When used in an ingress listener, care needs to be taken
- // to ensure that the listener port is not in use by other processes on
- // the host.
- CaptureMode_NONE CaptureMode = 2
-)
-
-// Enum value maps for CaptureMode.
-var (
- CaptureMode_name = map[int32]string{
- 0: "DEFAULT",
- 1: "IPTABLES",
- 2: "NONE",
- }
- CaptureMode_value = map[string]int32{
- "DEFAULT": 0,
- "IPTABLES": 1,
- "NONE": 2,
- }
-)
-
-func (x CaptureMode) Enum() *CaptureMode {
- p := new(CaptureMode)
- *p = x
- return p
-}
-
-func (x CaptureMode) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CaptureMode) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_sidecar_proto_enumTypes[0].Descriptor()
-}
-
-func (CaptureMode) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_sidecar_proto_enumTypes[0]
-}
-
-func (x CaptureMode) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CaptureMode.Descriptor instead.
-func (CaptureMode) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_sidecar_proto_rawDescGZIP(), []int{0}
-}
-
-type OutboundTrafficPolicy_Mode int32
-
-const (
- // Outbound traffic will be restricted to services defined in the
- // service registry as well as those defined through `ServiceEntry` configurations.
- OutboundTrafficPolicy_REGISTRY_ONLY OutboundTrafficPolicy_Mode = 0
- // Outbound traffic to unknown destinations will be allowed, in case
- // there are no services or `ServiceEntry` configurations for the destination port.
- OutboundTrafficPolicy_ALLOW_ANY OutboundTrafficPolicy_Mode = 1
-)
-
-// Enum value maps for OutboundTrafficPolicy_Mode.
-var (
- OutboundTrafficPolicy_Mode_name = map[int32]string{
- 0: "REGISTRY_ONLY",
- 1: "ALLOW_ANY",
- }
- OutboundTrafficPolicy_Mode_value = map[string]int32{
- "REGISTRY_ONLY": 0,
- "ALLOW_ANY": 1,
- }
-)
-
-func (x OutboundTrafficPolicy_Mode) Enum() *OutboundTrafficPolicy_Mode {
- p := new(OutboundTrafficPolicy_Mode)
- *p = x
- return p
-}
-
-func (x OutboundTrafficPolicy_Mode) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (OutboundTrafficPolicy_Mode) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_sidecar_proto_enumTypes[1].Descriptor()
-}
-
-func (OutboundTrafficPolicy_Mode) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_sidecar_proto_enumTypes[1]
-}
-
-func (x OutboundTrafficPolicy_Mode) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use OutboundTrafficPolicy_Mode.Descriptor instead.
-func (OutboundTrafficPolicy_Mode) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_sidecar_proto_rawDescGZIP(), []int{4, 0}
-}
-
-// `Sidecar` describes the configuration of the sidecar proxy that mediates
-// inbound and outbound communication of the workload instance to which it is
-// attached.
-//
-//
-//
-//
-//
-type Sidecar struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Criteria used to select the specific set of pods/VMs on which this
- // `Sidecar` configuration should be applied. If omitted, the `Sidecar`
- // configuration will be applied to all workload instances in the same namespace.
- WorkloadSelector *WorkloadSelector `protobuf:"bytes,1,opt,name=workload_selector,json=workloadSelector,proto3" json:"workload_selector,omitempty"`
- // Ingress specifies the configuration of the sidecar for processing
- // inbound traffic to the attached workload instance. If omitted, Istio will
- // automatically configure the sidecar based on the information about the workload
- // obtained from the orchestration platform (e.g., exposed ports, services,
- // etc.). If specified, inbound ports are configured if and only if the
- // workload instance is associated with a service.
- Ingress []*IstioIngressListener `protobuf:"bytes,2,rep,name=ingress,proto3" json:"ingress,omitempty"`
- // Egress specifies the configuration of the sidecar for processing
- // outbound traffic from the attached workload instance to other
- // services in the mesh. If not specified, inherits the system
- // detected defaults from the namespace-wide or the global default Sidecar.
- Egress []*IstioEgressListener `protobuf:"bytes,3,rep,name=egress,proto3" json:"egress,omitempty"`
- // Configuration for the outbound traffic policy. If your
- // application uses one or more external services that are not known
- // apriori, setting the policy to `ALLOW_ANY` will cause the
- // sidecars to route any unknown traffic originating from the
- // application to its requested destination. If not specified,
- // inherits the system detected defaults from the namespace-wide or
- // the global default Sidecar.
- OutboundTrafficPolicy *OutboundTrafficPolicy `protobuf:"bytes,4,opt,name=outbound_traffic_policy,json=outboundTrafficPolicy,proto3" json:"outbound_traffic_policy,omitempty"`
-}
-
-func (x *Sidecar) Reset() {
- *x = Sidecar{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Sidecar) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sidecar) ProtoMessage() {}
-
-func (x *Sidecar) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sidecar.ProtoReflect.Descriptor instead.
-func (*Sidecar) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_sidecar_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Sidecar) GetWorkloadSelector() *WorkloadSelector {
- if x != nil {
- return x.WorkloadSelector
- }
- return nil
-}
-
-func (x *Sidecar) GetIngress() []*IstioIngressListener {
- if x != nil {
- return x.Ingress
- }
- return nil
-}
-
-func (x *Sidecar) GetEgress() []*IstioEgressListener {
- if x != nil {
- return x.Egress
- }
- return nil
-}
-
-func (x *Sidecar) GetOutboundTrafficPolicy() *OutboundTrafficPolicy {
- if x != nil {
- return x.OutboundTrafficPolicy
- }
- return nil
-}
-
-// `IstioIngressListener` specifies the properties of an inbound
-// traffic listener on the sidecar proxy attached to a workload instance.
-type IstioIngressListener struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The port associated with the listener.
- Port *Port `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"`
- // The IP to which the listener should be bound. Must be in the
- // format `x.x.x.x`. Unix domain socket addresses are not allowed in
- // the bind field for ingress listeners. If omitted, Istio will
- // automatically configure the defaults based on imported services
- // and the workload instances to which this configuration is applied
- // to.
- Bind string `protobuf:"bytes,2,opt,name=bind,proto3" json:"bind,omitempty"`
- // The captureMode option dictates how traffic to the listener is
- // expected to be captured (or not).
- CaptureMode CaptureMode `protobuf:"varint,3,opt,name=capture_mode,json=captureMode,proto3,enum=istio.networking.v1beta1.CaptureMode" json:"capture_mode,omitempty"`
- // The IP endpoint or Unix domain socket to which
- // traffic should be forwarded to. This configuration can be used to
- // redirect traffic arriving at the bind `IP:Port` on the sidecar to a `localhost:port`
- // or Unix domain socket where the application workload instance is listening for
- // connections. Arbitrary IPs are not supported. Format should be one of `127.0.0.1:PORT`, `0.0.0.0:PORT`
- // (which will forward to the instance IP), or `unix:///path/to/socket`
- DefaultEndpoint string `protobuf:"bytes,4,opt,name=default_endpoint,json=defaultEndpoint,proto3" json:"default_endpoint,omitempty"`
- // Set of TLS related options that will enable TLS termination on the
- // sidecar for requests originating from outside the mesh.
- // Currently supports only SIMPLE and MUTUAL TLS modes.
- // $hide_from_docs
- Tls *ServerTLSSettings `protobuf:"bytes,7,opt,name=tls,proto3" json:"tls,omitempty"`
-}
-
-func (x *IstioIngressListener) Reset() {
- *x = IstioIngressListener{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IstioIngressListener) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IstioIngressListener) ProtoMessage() {}
-
-func (x *IstioIngressListener) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IstioIngressListener.ProtoReflect.Descriptor instead.
-func (*IstioIngressListener) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_sidecar_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *IstioIngressListener) GetPort() *Port {
- if x != nil {
- return x.Port
- }
- return nil
-}
-
-func (x *IstioIngressListener) GetBind() string {
- if x != nil {
- return x.Bind
- }
- return ""
-}
-
-func (x *IstioIngressListener) GetCaptureMode() CaptureMode {
- if x != nil {
- return x.CaptureMode
- }
- return CaptureMode_DEFAULT
-}
-
-func (x *IstioIngressListener) GetDefaultEndpoint() string {
- if x != nil {
- return x.DefaultEndpoint
- }
- return ""
-}
-
-func (x *IstioIngressListener) GetTls() *ServerTLSSettings {
- if x != nil {
- return x.Tls
- }
- return nil
-}
-
-// `IstioEgressListener` specifies the properties of an outbound traffic
-// listener on the sidecar proxy attached to a workload instance.
-type IstioEgressListener struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The port associated with the listener. If using Unix domain socket,
- // use 0 as the port number, with a valid protocol. The port if
- // specified, will be used as the default destination port associated
- // with the imported hosts. If the port is omitted, Istio will infer the
- // listener ports based on the imported hosts. Note that when multiple
- // egress listeners are specified, where one or more listeners have
- // specific ports while others have no port, the hosts exposed on a
- // listener port will be based on the listener with the most specific
- // port.
- Port *Port `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"`
- // The IP or the Unix domain socket to which the listener should be bound
- // to. Port MUST be specified if bind is not empty. Format: `x.x.x.x` or
- // `unix:///path/to/uds` or `unix://@foobar` (Linux abstract namespace). If
- // omitted, Istio will automatically configure the defaults based on imported
- // services, the workload instances to which this configuration is applied to and
- // the captureMode. If captureMode is `NONE`, bind will default to
- // 127.0.0.1.
- Bind string `protobuf:"bytes,2,opt,name=bind,proto3" json:"bind,omitempty"`
- // When the bind address is an IP, the captureMode option dictates
- // how traffic to the listener is expected to be captured (or not).
- // captureMode must be DEFAULT or `NONE` for Unix domain socket binds.
- CaptureMode CaptureMode `protobuf:"varint,3,opt,name=capture_mode,json=captureMode,proto3,enum=istio.networking.v1beta1.CaptureMode" json:"capture_mode,omitempty"`
- // One or more service hosts exposed by the listener
- // in `namespace/dnsName` format. Services in the specified namespace
- // matching `dnsName` will be exposed.
- // The corresponding service can be a service in the service registry
- // (e.g., a Kubernetes or cloud foundry service) or a service specified
- // using a `ServiceEntry` or `VirtualService` configuration. Any
- // associated `DestinationRule` in the same namespace will also be used.
- //
- // The `dnsName` should be specified using FQDN format, optionally including
- // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
- // Set the `dnsName` to `*` to select all services from the specified namespace
- // (e.g., `prod/*`).
- //
- // The `namespace` can be set to `*`, `.`, or `~`, representing any, the current,
- // or no namespace, respectively. For example, `*/foo.example.com` selects the
- // service from any available namespace while `./foo.example.com` only selects
- // the service from the namespace of the sidecar. If a host is set to `*/*`,
- // Istio will configure the sidecar to be able to reach every service in the
- // mesh that is exported to the sidecar's namespace. The value `~/*` can be used
- // to completely trim the configuration for sidecars that simply receive traffic
- // and respond, but make no outbound connections of their own.
- //
- // NOTE: Only services and configuration artifacts exported to the sidecar's
- // namespace (e.g., `exportTo` value of `*`) can be referenced.
- // Private configurations (e.g., `exportTo` set to `.`) will
- // not be available. Refer to the `exportTo` setting in `VirtualService`,
- // `DestinationRule`, and `ServiceEntry` configurations for details.
- Hosts []string `protobuf:"bytes,4,rep,name=hosts,proto3" json:"hosts,omitempty"`
-}
-
-func (x *IstioEgressListener) Reset() {
- *x = IstioEgressListener{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IstioEgressListener) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IstioEgressListener) ProtoMessage() {}
-
-func (x *IstioEgressListener) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IstioEgressListener.ProtoReflect.Descriptor instead.
-func (*IstioEgressListener) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_sidecar_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *IstioEgressListener) GetPort() *Port {
- if x != nil {
- return x.Port
- }
- return nil
-}
-
-func (x *IstioEgressListener) GetBind() string {
- if x != nil {
- return x.Bind
- }
- return ""
-}
-
-func (x *IstioEgressListener) GetCaptureMode() CaptureMode {
- if x != nil {
- return x.CaptureMode
- }
- return CaptureMode_DEFAULT
-}
-
-func (x *IstioEgressListener) GetHosts() []string {
- if x != nil {
- return x.Hosts
- }
- return nil
-}
-
-// `WorkloadSelector` specifies the criteria used to determine if the
-// `Gateway`, `Sidecar`, `EnvoyFilter`, or `ServiceEntry`
-// configuration can be applied to a proxy. The matching criteria
-// includes the metadata associated with a proxy, workload instance
-// info such as labels attached to the pod/VM, or any other info that
-// the proxy provides to Istio during the initial handshake. If
-// multiple conditions are specified, all conditions need to match in
-// order for the workload instance to be selected. Currently, only
-// label based selection mechanism is supported.
-type WorkloadSelector struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // One or more labels that indicate a specific set of pods/VMs
- // on which the configuration should be applied. The scope of
- // label search is restricted to the configuration namespace in which the
- // the resource is present.
- Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *WorkloadSelector) Reset() {
- *x = WorkloadSelector{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WorkloadSelector) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WorkloadSelector) ProtoMessage() {}
-
-func (x *WorkloadSelector) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WorkloadSelector.ProtoReflect.Descriptor instead.
-func (*WorkloadSelector) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_sidecar_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *WorkloadSelector) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-// `OutboundTrafficPolicy` sets the default behavior of the sidecar for
-// handling outbound traffic from the application.
-// If your application uses one or more external
-// services that are not known apriori, setting the policy to `ALLOW_ANY`
-// will cause the sidecars to route any unknown traffic originating from
-// the application to its requested destination. Users are strongly
-// encouraged to use `ServiceEntry` configurations to explicitly declare any external
-// dependencies, instead of using `ALLOW_ANY`, so that traffic to these
-// services can be monitored.
-type OutboundTrafficPolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Mode OutboundTrafficPolicy_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.networking.v1beta1.OutboundTrafficPolicy_Mode" json:"mode,omitempty"`
- // Specifies the details of the egress proxy to which unknown
- // traffic should be forwarded to from the sidecar. Valid only if
- // the mode is set to ALLOW_ANY. If not specified when the mode is
- // ALLOW_ANY, the sidecar will send the unknown traffic directly to
- // the IP requested by the application.
- //
- // ** NOTE 1**: The specified egress host must be imported in the
- // egress section for the traffic forwarding to work.
- //
- // ** NOTE 2**: An Envoy based egress gateway is unlikely to be able
- // to handle plain text TCP connections forwarded from the sidecar.
- // Envoy's dynamic forward proxy can handle only HTTP and TLS
- // connections.
- // $hide_from_docs
- EgressProxy *Destination `protobuf:"bytes,2,opt,name=egress_proxy,json=egressProxy,proto3" json:"egress_proxy,omitempty"`
-}
-
-func (x *OutboundTrafficPolicy) Reset() {
- *x = OutboundTrafficPolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *OutboundTrafficPolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OutboundTrafficPolicy) ProtoMessage() {}
-
-func (x *OutboundTrafficPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_sidecar_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use OutboundTrafficPolicy.ProtoReflect.Descriptor instead.
-func (*OutboundTrafficPolicy) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_sidecar_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *OutboundTrafficPolicy) GetMode() OutboundTrafficPolicy_Mode {
- if x != nil {
- return x.Mode
- }
- return OutboundTrafficPolicy_REGISTRY_ONLY
-}
-
-func (x *OutboundTrafficPolicy) GetEgressProxy() *Destination {
- if x != nil {
- return x.EgressProxy
- }
- return nil
-}
-
-var File_networking_v1beta1_sidecar_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_sidecar_proto_rawDesc = []byte{
- 0x0a, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62,
- 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x28, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x02, 0x0a, 0x07, 0x53, 0x69,
- 0x64, 0x65, 0x63, 0x61, 0x72, 0x12, 0x57, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x77, 0x6f,
- 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x48,
- 0x0a, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x73, 0x74, 0x69, 0x6f,
- 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52,
- 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x65, 0x67, 0x72, 0x65,
- 0x73, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c,
- 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x06, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12,
- 0x67, 0x0a, 0x17, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x66,
- 0x66, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x62,
- 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x15, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66,
- 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04,
- 0x08, 0x06, 0x10, 0x07, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x22,
- 0xc0, 0x02, 0x0a, 0x14, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
- 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f,
- 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72,
- 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x69,
- 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d,
- 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65,
- 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02,
- 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x03, 0x74, 0x6c, 0x73,
- 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, 0x6c, 0x6f,
- 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74,
- 0x6c, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x45, 0x67, 0x72, 0x65,
- 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x70, 0x6f,
- 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12,
- 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x69,
- 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f,
- 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52,
- 0x0b, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x05,
- 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x02, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04,
- 0x08, 0x06, 0x10, 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x10, 0x57,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12,
- 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x36, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x6c,
- 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0xd5, 0x01, 0x0a, 0x15, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61,
- 0x66, 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x6f,
- 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x66,
- 0x66, 0x69, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04,
- 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70,
- 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74,
- 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x0b, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x28,
- 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54,
- 0x52, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x4c,
- 0x4f, 0x57, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x2a, 0x32, 0x0a, 0x0b, 0x43, 0x61, 0x70, 0x74,
- 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55,
- 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x50, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53,
- 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x42, 0x21, 0x5a, 0x1f,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62,
- 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_sidecar_proto_rawDescOnce sync.Once
- file_networking_v1beta1_sidecar_proto_rawDescData = file_networking_v1beta1_sidecar_proto_rawDesc
-)
-
-func file_networking_v1beta1_sidecar_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_sidecar_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_sidecar_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_sidecar_proto_rawDescData)
- })
- return file_networking_v1beta1_sidecar_proto_rawDescData
-}
-
-var file_networking_v1beta1_sidecar_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_networking_v1beta1_sidecar_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_networking_v1beta1_sidecar_proto_goTypes = []interface{}{
- (CaptureMode)(0), // 0: istio.networking.v1beta1.CaptureMode
- (OutboundTrafficPolicy_Mode)(0), // 1: istio.networking.v1beta1.OutboundTrafficPolicy.Mode
- (*Sidecar)(nil), // 2: istio.networking.v1beta1.Sidecar
- (*IstioIngressListener)(nil), // 3: istio.networking.v1beta1.IstioIngressListener
- (*IstioEgressListener)(nil), // 4: istio.networking.v1beta1.IstioEgressListener
- (*WorkloadSelector)(nil), // 5: istio.networking.v1beta1.WorkloadSelector
- (*OutboundTrafficPolicy)(nil), // 6: istio.networking.v1beta1.OutboundTrafficPolicy
- nil, // 7: istio.networking.v1beta1.WorkloadSelector.LabelsEntry
- (*Port)(nil), // 8: istio.networking.v1beta1.Port
- (*ServerTLSSettings)(nil), // 9: istio.networking.v1beta1.ServerTLSSettings
- (*Destination)(nil), // 10: istio.networking.v1beta1.Destination
-}
-var file_networking_v1beta1_sidecar_proto_depIdxs = []int32{
- 5, // 0: istio.networking.v1beta1.Sidecar.workload_selector:type_name -> istio.networking.v1beta1.WorkloadSelector
- 3, // 1: istio.networking.v1beta1.Sidecar.ingress:type_name -> istio.networking.v1beta1.IstioIngressListener
- 4, // 2: istio.networking.v1beta1.Sidecar.egress:type_name -> istio.networking.v1beta1.IstioEgressListener
- 6, // 3: istio.networking.v1beta1.Sidecar.outbound_traffic_policy:type_name -> istio.networking.v1beta1.OutboundTrafficPolicy
- 8, // 4: istio.networking.v1beta1.IstioIngressListener.port:type_name -> istio.networking.v1beta1.Port
- 0, // 5: istio.networking.v1beta1.IstioIngressListener.capture_mode:type_name -> istio.networking.v1beta1.CaptureMode
- 9, // 6: istio.networking.v1beta1.IstioIngressListener.tls:type_name -> istio.networking.v1beta1.ServerTLSSettings
- 8, // 7: istio.networking.v1beta1.IstioEgressListener.port:type_name -> istio.networking.v1beta1.Port
- 0, // 8: istio.networking.v1beta1.IstioEgressListener.capture_mode:type_name -> istio.networking.v1beta1.CaptureMode
- 7, // 9: istio.networking.v1beta1.WorkloadSelector.labels:type_name -> istio.networking.v1beta1.WorkloadSelector.LabelsEntry
- 1, // 10: istio.networking.v1beta1.OutboundTrafficPolicy.mode:type_name -> istio.networking.v1beta1.OutboundTrafficPolicy.Mode
- 10, // 11: istio.networking.v1beta1.OutboundTrafficPolicy.egress_proxy:type_name -> istio.networking.v1beta1.Destination
- 12, // [12:12] is the sub-list for method output_type
- 12, // [12:12] is the sub-list for method input_type
- 12, // [12:12] is the sub-list for extension type_name
- 12, // [12:12] is the sub-list for extension extendee
- 0, // [0:12] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_sidecar_proto_init() }
-func file_networking_v1beta1_sidecar_proto_init() {
- if File_networking_v1beta1_sidecar_proto != nil {
- return
- }
- file_networking_v1beta1_gateway_proto_init()
- file_networking_v1beta1_virtual_service_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_sidecar_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Sidecar); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_sidecar_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IstioIngressListener); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_sidecar_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IstioEgressListener); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_sidecar_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadSelector); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_sidecar_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OutboundTrafficPolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_sidecar_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_sidecar_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_sidecar_proto_depIdxs,
- EnumInfos: file_networking_v1beta1_sidecar_proto_enumTypes,
- MessageInfos: file_networking_v1beta1_sidecar_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_sidecar_proto = out.File
- file_networking_v1beta1_sidecar_proto_rawDesc = nil
- file_networking_v1beta1_sidecar_proto_goTypes = nil
- file_networking_v1beta1_sidecar_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/virtual_service.pb.go b/gen/proto/networking/v1beta1/virtual_service.pb.go
deleted file mode 100644
index 84dbe2b..0000000
--- a/gen/proto/networking/v1beta1/virtual_service.pb.go
+++ /dev/null
@@ -1,4321 +0,0 @@
-// Copyright 2020 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/virtual_service.proto
-
-// $schema: istio.networking.v1beta1.VirtualService
-// $title: Virtual Service
-// $description: Configuration affecting label/content routing, sni routing, etc.
-// $location: https://istio.io/docs/reference/config/networking/virtual-service.html
-// $aliases: [/docs/reference/config/networking/v1beta1/virtual-service]
-// $mode: none
-
-// Configuration affecting traffic routing. Here are a few terms useful to define
-// in the context of traffic routing.
-//
-// `Service` a unit of application behavior bound to a unique name in a
-// service registry. Services consist of multiple network *endpoints*
-// implemented by workload instances running on pods, containers, VMs etc.
-//
-// `Service versions (a.k.a. subsets)` - In a continuous deployment
-// scenario, for a given service, there can be distinct subsets of
-// instances running different variants of the application binary. These
-// variants are not necessarily different API versions. They could be
-// iterative changes to the same service, deployed in different
-// environments (prod, staging, dev, etc.). Common scenarios where this
-// occurs include A/B testing, canary rollouts, etc. The choice of a
-// particular version can be decided based on various criterion (headers,
-// url, etc.) and/or by weights assigned to each version. Each service has
-// a default version consisting of all its instances.
-//
-// `Source` - A downstream client calling a service.
-//
-// `Host` - The address used by a client when attempting to connect to a
-// service.
-//
-// `Access model` - Applications address only the destination service
-// (Host) without knowledge of individual service versions (subsets). The
-// actual choice of the version is determined by the proxy/sidecar, enabling the
-// application code to decouple itself from the evolution of dependent
-// services.
-//
-// A `VirtualService` defines a set of traffic routing rules to apply when a host is
-// addressed. Each routing rule defines matching criteria for traffic of a specific
-// protocol. If the traffic is matched, then it is sent to a named destination service
-// (or subset/version of it) defined in the registry.
-//
-// The source of traffic can also be matched in a routing rule. This allows routing
-// to be customized for specific client contexts.
-//
-// The following example on Kubernetes, routes all HTTP traffic by default to
-// pods of the reviews service with label "version: v1". In addition,
-// HTTP requests with path starting with /wpcatalog/ or /consumercatalog/ will
-// be rewritten to /newcatalog and sent to pods with label "version: v2".
-//
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - name: "reviews-v2-routes"
-// match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// - name: "reviews-v1-route"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - name: "reviews-v2-routes"
-// match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// - name: "reviews-v1-route"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-// {{}}
-//
-// A subset/version of a route destination is identified with a reference
-// to a named service subset which must be declared in a corresponding
-// `DestinationRule`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-// {{}}
-//
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type HTTPRedirect_RedirectPortSelection int32
-
-const (
- HTTPRedirect_FROM_PROTOCOL_DEFAULT HTTPRedirect_RedirectPortSelection = 0
- HTTPRedirect_FROM_REQUEST_PORT HTTPRedirect_RedirectPortSelection = 1
-)
-
-// Enum value maps for HTTPRedirect_RedirectPortSelection.
-var (
- HTTPRedirect_RedirectPortSelection_name = map[int32]string{
- 0: "FROM_PROTOCOL_DEFAULT",
- 1: "FROM_REQUEST_PORT",
- }
- HTTPRedirect_RedirectPortSelection_value = map[string]int32{
- "FROM_PROTOCOL_DEFAULT": 0,
- "FROM_REQUEST_PORT": 1,
- }
-)
-
-func (x HTTPRedirect_RedirectPortSelection) Enum() *HTTPRedirect_RedirectPortSelection {
- p := new(HTTPRedirect_RedirectPortSelection)
- *p = x
- return p
-}
-
-func (x HTTPRedirect_RedirectPortSelection) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (HTTPRedirect_RedirectPortSelection) Descriptor() protoreflect.EnumDescriptor {
- return file_networking_v1beta1_virtual_service_proto_enumTypes[0].Descriptor()
-}
-
-func (HTTPRedirect_RedirectPortSelection) Type() protoreflect.EnumType {
- return &file_networking_v1beta1_virtual_service_proto_enumTypes[0]
-}
-
-func (x HTTPRedirect_RedirectPortSelection) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use HTTPRedirect_RedirectPortSelection.Descriptor instead.
-func (HTTPRedirect_RedirectPortSelection) EnumDescriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{12, 0}
-}
-
-// Configuration affecting traffic routing.
-//
-//
-//
-//
-//
-type VirtualService struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The destination hosts to which traffic is being sent. Could
- // be a DNS name with wildcard prefix or an IP address. Depending on the
- // platform, short-names can also be used instead of a FQDN (i.e. has no
- // dots in the name). In such a scenario, the FQDN of the host would be
- // derived based on the underlying platform.
- //
- // A single VirtualService can be used to describe all the traffic
- // properties of the corresponding hosts, including those for multiple
- // HTTP and TCP ports. Alternatively, the traffic properties of a host
- // can be defined using more than one VirtualService, with certain
- // caveats. Refer to the
- // [Operations Guide](https://istio.io/docs/ops/best-practices/traffic-management/#split-virtual-services)
- // for details.
- //
- // *Note for Kubernetes users*: When short names are used (e.g. "reviews"
- // instead of "reviews.default.svc.cluster.local"), Istio will interpret
- // the short name based on the namespace of the rule, not the service. A
- // rule in the "default" namespace containing a host "reviews" will be
- // interpreted as "reviews.default.svc.cluster.local", irrespective of
- // the actual namespace associated with the reviews service. _To avoid
- // potential misconfigurations, it is recommended to always use fully
- // qualified domain names over short names._
- //
- // The hosts field applies to both HTTP and TCP services. Service inside
- // the mesh, i.e., those found in the service registry, must always be
- // referred to using their alphanumeric names. IP addresses are allowed
- // only for services defined via the Gateway.
- //
- // *Note*: It must be empty for a delegate VirtualService.
- Hosts []string `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"`
- // The names of gateways and sidecars that should apply these routes.
- // Gateways in other namespaces may be referred to by
- // `/`; specifying a gateway with no
- // namespace qualifier is the same as specifying the VirtualService's
- // namespace. A single VirtualService is used for sidecars inside the mesh as
- // well as for one or more gateways. The selection condition imposed by this
- // field can be overridden using the source field in the match conditions
- // of protocol-specific routes. The reserved word `mesh` is used to imply
- // all the sidecars in the mesh. When this field is omitted, the default
- // gateway (`mesh`) will be used, which would apply the rule to all
- // sidecars in the mesh. If a list of gateway names is provided, the
- // rules will apply only to the gateways. To apply the rules to both
- // gateways and sidecars, specify `mesh` as one of the gateway names.
- Gateways []string `protobuf:"bytes,2,rep,name=gateways,proto3" json:"gateways,omitempty"`
- // An ordered list of route rules for HTTP traffic. HTTP routes will be
- // applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway
- // ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service
- // entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching
- // an incoming request is used.
- Http []*HTTPRoute `protobuf:"bytes,3,rep,name=http,proto3" json:"http,omitempty"`
- // An ordered list of route rule for non-terminated TLS & HTTPS
- // traffic. Routing is typically performed using the SNI value presented
- // by the ClientHello message. TLS routes will be applied to platform
- // service ports named 'https-*', 'tls-*', unterminated gateway ports using
- // HTTPS/TLS protocols (i.e. with "passthrough" TLS mode) and service
- // entry ports using HTTPS/TLS protocols. The first rule matching an
- // incoming request is used. NOTE: Traffic 'https-*' or 'tls-*' ports
- // without associated virtual service will be treated as opaque TCP
- // traffic.
- Tls []*TLSRoute `protobuf:"bytes,5,rep,name=tls,proto3" json:"tls,omitempty"`
- // An ordered list of route rules for opaque TCP traffic. TCP routes will
- // be applied to any port that is not a HTTP or TLS port. The first rule
- // matching an incoming request is used.
- Tcp []*TCPRoute `protobuf:"bytes,4,rep,name=tcp,proto3" json:"tcp,omitempty"`
- // A list of namespaces to which this virtual service is exported. Exporting a
- // virtual service allows it to be used by sidecars and gateways defined in
- // other namespaces. This feature provides a mechanism for service owners
- // and mesh administrators to control the visibility of virtual services
- // across namespace boundaries.
- //
- // If no namespaces are specified then the virtual service is exported to all
- // namespaces by default.
- //
- // The value "." is reserved and defines an export to the same namespace that
- // the virtual service is declared in. Similarly the value "*" is reserved and
- // defines an export to all namespaces.
- ExportTo []string `protobuf:"bytes,6,rep,name=export_to,json=exportTo,proto3" json:"export_to,omitempty"`
-}
-
-func (x *VirtualService) Reset() {
- *x = VirtualService{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VirtualService) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VirtualService) ProtoMessage() {}
-
-func (x *VirtualService) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VirtualService.ProtoReflect.Descriptor instead.
-func (*VirtualService) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *VirtualService) GetHosts() []string {
- if x != nil {
- return x.Hosts
- }
- return nil
-}
-
-func (x *VirtualService) GetGateways() []string {
- if x != nil {
- return x.Gateways
- }
- return nil
-}
-
-func (x *VirtualService) GetHttp() []*HTTPRoute {
- if x != nil {
- return x.Http
- }
- return nil
-}
-
-func (x *VirtualService) GetTls() []*TLSRoute {
- if x != nil {
- return x.Tls
- }
- return nil
-}
-
-func (x *VirtualService) GetTcp() []*TCPRoute {
- if x != nil {
- return x.Tcp
- }
- return nil
-}
-
-func (x *VirtualService) GetExportTo() []string {
- if x != nil {
- return x.ExportTo
- }
- return nil
-}
-
-// Destination indicates the network addressable service to which the
-// request/connection will be sent after processing a routing rule. The
-// destination.host should unambiguously refer to a service in the service
-// registry. Istio's service registry is composed of all the services found
-// in the platform's service registry (e.g., Kubernetes services, Consul
-// services), as well as services declared through the
-// [ServiceEntry](https://istio.io/docs/reference/config/networking/service-entry/#ServiceEntry) resource.
-//
-// *Note for Kubernetes users*: When short names are used (e.g. "reviews"
-// instead of "reviews.default.svc.cluster.local"), Istio will interpret
-// the short name based on the namespace of the rule, not the service. A
-// rule in the "default" namespace containing a host "reviews will be
-// interpreted as "reviews.default.svc.cluster.local", irrespective of the
-// actual namespace associated with the reviews service. _To avoid potential
-// misconfigurations, it is recommended to always use fully qualified
-// domain names over short names._
-//
-// The following Kubernetes example routes all traffic by default to pods
-// of the reviews service with label "version: v1" (i.e., subset v1), and
-// some to subset v2, in a Kubernetes environment.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// namespace: foo
-// spec:
-// hosts:
-// - reviews # interpreted as reviews.foo.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v2
-// - route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// namespace: foo
-// spec:
-// hosts:
-// - reviews # interpreted as reviews.foo.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v2
-// - route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-// {{}}
-//
-// And the associated DestinationRule
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// namespace: foo
-// spec:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// namespace: foo
-// spec:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-// {{}}
-//
-// The following VirtualService sets a timeout of 5s for all calls to
-// productpage.prod.svc.cluster.local service in Kubernetes. Notice that
-// there are no subsets defined in this rule. Istio will fetch all
-// instances of productpage.prod.svc.cluster.local service from the service
-// registry and populate the sidecar's load balancing pool. Also, notice
-// that this rule is set in the istio-system namespace but uses the fully
-// qualified domain name of the productpage service,
-// productpage.prod.svc.cluster.local. Therefore the rule's namespace does
-// not have an impact in resolving the name of the productpage service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: my-productpage-rule
-// namespace: istio-system
-// spec:
-// hosts:
-// - productpage.prod.svc.cluster.local # ignores rule namespace
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: productpage.prod.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: my-productpage-rule
-// namespace: istio-system
-// spec:
-// hosts:
-// - productpage.prod.svc.cluster.local # ignores rule namespace
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: productpage.prod.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-//
-// To control routing for traffic bound to services outside the mesh, external
-// services must first be added to Istio's internal service registry using the
-// ServiceEntry resource. VirtualServices can then be defined to control traffic
-// bound to these external services. For example, the following rules define a
-// Service for wikipedia.org and set a timeout of 5s for HTTP requests.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wikipedia
-// spec:
-// hosts:
-// - wikipedia.org
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: example-http
-// protocol: HTTP
-// resolution: DNS
-// ---
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: my-wiki-rule
-// spec:
-// hosts:
-// - wikipedia.org
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: wikipedia.org
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wikipedia
-// spec:
-// hosts:
-// - wikipedia.org
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: example-http
-// protocol: HTTP
-// resolution: DNS
-// ---
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: my-wiki-rule
-// spec:
-// hosts:
-// - wikipedia.org
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: wikipedia.org
-// ```
-// {{}}
-// {{}}
-//
-type Destination struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of a service from the service registry. Service
- // names are looked up from the platform's service registry (e.g.,
- // Kubernetes services, Consul services, etc.) and from the hosts
- // declared by [ServiceEntry](https://istio.io/docs/reference/config/networking/service-entry/#ServiceEntry). Traffic forwarded to
- // destinations that are not found in either of the two, will be dropped.
- //
- // *Note for Kubernetes users*: When short names are used (e.g. "reviews"
- // instead of "reviews.default.svc.cluster.local"), Istio will interpret
- // the short name based on the namespace of the rule, not the service. A
- // rule in the "default" namespace containing a host "reviews will be
- // interpreted as "reviews.default.svc.cluster.local", irrespective of
- // the actual namespace associated with the reviews service. To avoid
- // potential misconfiguration, it is recommended to always use fully
- // qualified domain names over short names.
- Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
- // The name of a subset within the service. Applicable only to services
- // within the mesh. The subset must be defined in a corresponding
- // DestinationRule.
- Subset string `protobuf:"bytes,2,opt,name=subset,proto3" json:"subset,omitempty"`
- // Specifies the port on the host that is being addressed. If a service
- // exposes only a single port it is not required to explicitly select the
- // port.
- Port *PortSelector `protobuf:"bytes,3,opt,name=port,proto3" json:"port,omitempty"`
-}
-
-func (x *Destination) Reset() {
- *x = Destination{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Destination) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Destination) ProtoMessage() {}
-
-func (x *Destination) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Destination.ProtoReflect.Descriptor instead.
-func (*Destination) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Destination) GetHost() string {
- if x != nil {
- return x.Host
- }
- return ""
-}
-
-func (x *Destination) GetSubset() string {
- if x != nil {
- return x.Subset
- }
- return ""
-}
-
-func (x *Destination) GetPort() *PortSelector {
- if x != nil {
- return x.Port
- }
- return nil
-}
-
-// Describes match conditions and actions for routing HTTP/1.1, HTTP2, and
-// gRPC traffic. See VirtualService for usage examples.
-type HTTPRoute struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name assigned to the route for debugging purposes. The
- // route's name will be concatenated with the match's name and will
- // be logged in the access logs for requests matching this
- // route/match.
- Name string `protobuf:"bytes,17,opt,name=name,proto3" json:"name,omitempty"`
- // Match conditions to be satisfied for the rule to be
- // activated. All conditions inside a single match block have AND
- // semantics, while the list of match blocks have OR semantics. The rule
- // is matched if any one of the match blocks succeed.
- Match []*HTTPMatchRequest `protobuf:"bytes,1,rep,name=match,proto3" json:"match,omitempty"`
- // A HTTP rule can either redirect or forward (default) traffic. The
- // forwarding target can be one of several versions of a service (see
- // glossary in beginning of document). Weights associated with the
- // service version determine the proportion of traffic it receives.
- Route []*HTTPRouteDestination `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"`
- // A HTTP rule can either redirect or forward (default) traffic. If
- // traffic passthrough option is specified in the rule,
- // route/redirect will be ignored. The redirect primitive can be used to
- // send a HTTP 301 redirect to a different URI or Authority.
- Redirect *HTTPRedirect `protobuf:"bytes,3,opt,name=redirect,proto3" json:"redirect,omitempty"`
- // Delegate is used to specify the particular VirtualService which
- // can be used to define delegate HTTPRoute.
- //
- // It can be set only when `Route` and `Redirect` are empty, and the route
- // rules of the delegate VirtualService will be merged with that in the
- // current one.
- //
- // **NOTE**:
- //
- // 1. Only one level delegation is supported.
- // 2. The delegate's HTTPMatchRequest must be a strict subset of the root's,
- // otherwise there is a conflict and the HTTPRoute will not take effect.
- Delegate *Delegate `protobuf:"bytes,20,opt,name=delegate,proto3" json:"delegate,omitempty"`
- // Rewrite HTTP URIs and Authority headers. Rewrite cannot be used with
- // Redirect primitive. Rewrite will be performed before forwarding.
- Rewrite *HTTPRewrite `protobuf:"bytes,4,opt,name=rewrite,proto3" json:"rewrite,omitempty"`
- // Timeout for HTTP requests, default is disabled.
- Timeout *durationpb.Duration `protobuf:"bytes,6,opt,name=timeout,proto3" json:"timeout,omitempty"`
- // Retry policy for HTTP requests.
- Retries *HTTPRetry `protobuf:"bytes,7,opt,name=retries,proto3" json:"retries,omitempty"`
- // Fault injection policy to apply on HTTP traffic at the client side.
- // Note that timeouts or retries will not be enabled when faults are
- // enabled on the client side.
- Fault *HTTPFaultInjection `protobuf:"bytes,8,opt,name=fault,proto3" json:"fault,omitempty"`
- // Mirror HTTP traffic to a another destination in addition to forwarding
- // the requests to the intended destination. Mirrored traffic is on a
- // best effort basis where the sidecar/gateway will not wait for the
- // mirrored cluster to respond before returning the response from the
- // original destination. Statistics will be generated for the mirrored
- // destination.
- Mirror *Destination `protobuf:"bytes,9,opt,name=mirror,proto3" json:"mirror,omitempty"`
- // Percentage of the traffic to be mirrored by the `mirror` field.
- // Use of integer `mirror_percent` value is deprecated. Use the
- // double `mirror_percentage` field instead
- // $hide_from_docs
- //
- // Deprecated: Do not use.
- MirrorPercent *wrapperspb.UInt32Value `protobuf:"bytes,18,opt,name=mirror_percent,json=mirrorPercent,proto3" json:"mirror_percent,omitempty"`
- // Percentage of the traffic to be mirrored by the `mirror` field.
- // If this field is absent, all the traffic (100%) will be mirrored.
- // Max value is 100.
- MirrorPercentage *Percent `protobuf:"bytes,19,opt,name=mirror_percentage,json=mirrorPercentage,proto3" json:"mirror_percentage,omitempty"`
- // Cross-Origin Resource Sharing policy (CORS). Refer to
- // [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)
- // for further details about cross origin resource sharing.
- CorsPolicy *CorsPolicy `protobuf:"bytes,10,opt,name=cors_policy,json=corsPolicy,proto3" json:"cors_policy,omitempty"`
- // Header manipulation rules
- Headers *Headers `protobuf:"bytes,16,opt,name=headers,proto3" json:"headers,omitempty"`
-}
-
-func (x *HTTPRoute) Reset() {
- *x = HTTPRoute{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPRoute) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPRoute) ProtoMessage() {}
-
-func (x *HTTPRoute) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPRoute.ProtoReflect.Descriptor instead.
-func (*HTTPRoute) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *HTTPRoute) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *HTTPRoute) GetMatch() []*HTTPMatchRequest {
- if x != nil {
- return x.Match
- }
- return nil
-}
-
-func (x *HTTPRoute) GetRoute() []*HTTPRouteDestination {
- if x != nil {
- return x.Route
- }
- return nil
-}
-
-func (x *HTTPRoute) GetRedirect() *HTTPRedirect {
- if x != nil {
- return x.Redirect
- }
- return nil
-}
-
-func (x *HTTPRoute) GetDelegate() *Delegate {
- if x != nil {
- return x.Delegate
- }
- return nil
-}
-
-func (x *HTTPRoute) GetRewrite() *HTTPRewrite {
- if x != nil {
- return x.Rewrite
- }
- return nil
-}
-
-func (x *HTTPRoute) GetTimeout() *durationpb.Duration {
- if x != nil {
- return x.Timeout
- }
- return nil
-}
-
-func (x *HTTPRoute) GetRetries() *HTTPRetry {
- if x != nil {
- return x.Retries
- }
- return nil
-}
-
-func (x *HTTPRoute) GetFault() *HTTPFaultInjection {
- if x != nil {
- return x.Fault
- }
- return nil
-}
-
-func (x *HTTPRoute) GetMirror() *Destination {
- if x != nil {
- return x.Mirror
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *HTTPRoute) GetMirrorPercent() *wrapperspb.UInt32Value {
- if x != nil {
- return x.MirrorPercent
- }
- return nil
-}
-
-func (x *HTTPRoute) GetMirrorPercentage() *Percent {
- if x != nil {
- return x.MirrorPercentage
- }
- return nil
-}
-
-func (x *HTTPRoute) GetCorsPolicy() *CorsPolicy {
- if x != nil {
- return x.CorsPolicy
- }
- return nil
-}
-
-func (x *HTTPRoute) GetHeaders() *Headers {
- if x != nil {
- return x.Headers
- }
- return nil
-}
-
-// Describes the delegate VirtualService.
-// The following routing rules forward the traffic to `/productpage` by a delegate VirtualService named `productpage`,
-// forward the traffic to `/reviews` by a delegate VirtualService named `reviews`.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo
-// spec:
-// hosts:
-// - "bookinfo.com"
-// gateways:
-// - mygateway
-// http:
-// - match:
-// - uri:
-// prefix: "/productpage"
-// delegate:
-// name: productpage
-// namespace: nsA
-// - match:
-// - uri:
-// prefix: "/reviews"
-// delegate:
-// name: reviews
-// namespace: nsB
-// ```
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: productpage
-// namespace: nsA
-// spec:
-// http:
-// - match:
-// - uri:
-// prefix: "/productpage/v1/"
-// route:
-// - destination:
-// host: productpage-v1.nsA.svc.cluster.local
-// - route:
-// - destination:
-// host: productpage.nsA.svc.cluster.local
-// ```
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews
-// namespace: nsB
-// spec:
-// http:
-// - route:
-// - destination:
-// host: reviews.nsB.svc.cluster.local
-// ```
-type Delegate struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Name specifies the name of the delegate VirtualService.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Namespace specifies the namespace where the delegate VirtualService resides.
- // By default, it is same to the root's.
- Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
-}
-
-func (x *Delegate) Reset() {
- *x = Delegate{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Delegate) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Delegate) ProtoMessage() {}
-
-func (x *Delegate) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Delegate.ProtoReflect.Descriptor instead.
-func (*Delegate) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Delegate) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Delegate) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
-}
-
-// Message headers can be manipulated when Envoy forwards requests to,
-// or responses from, a destination service. Header manipulation rules can
-// be specified for a specific route destination or for all destinations.
-// The following VirtualService adds a `test` header with the value `true`
-// to requests that are routed to any `reviews` service destination.
-// It also removes the `foo` response header, but only from responses
-// coming from the `v1` subset (version) of the `reviews` service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - headers:
-// request:
-// set:
-// test: "true"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// headers:
-// response:
-// remove:
-// - foo
-// weight: 75
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - headers:
-// request:
-// set:
-// test: "true"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// headers:
-// response:
-// remove:
-// - foo
-// weight: 75
-// ```
-// {{}}
-// {{}}
-type Headers struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Header manipulation rules to apply before forwarding a request
- // to the destination service
- Request *Headers_HeaderOperations `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
- // Header manipulation rules to apply before returning a response
- // to the caller
- Response *Headers_HeaderOperations `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"`
-}
-
-func (x *Headers) Reset() {
- *x = Headers{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Headers) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Headers) ProtoMessage() {}
-
-func (x *Headers) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Headers.ProtoReflect.Descriptor instead.
-func (*Headers) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Headers) GetRequest() *Headers_HeaderOperations {
- if x != nil {
- return x.Request
- }
- return nil
-}
-
-func (x *Headers) GetResponse() *Headers_HeaderOperations {
- if x != nil {
- return x.Response
- }
- return nil
-}
-
-// Describes match conditions and actions for routing unterminated TLS
-// traffic (TLS/HTTPS) The following routing rule forwards unterminated TLS
-// traffic arriving at port 443 of gateway called "mygateway" to internal
-// services in the mesh based on the SNI value.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-sni
-// spec:
-// hosts:
-// - "*.bookinfo.com"
-// gateways:
-// - mygateway
-// tls:
-// - match:
-// - port: 443
-// sniHosts:
-// - login.bookinfo.com
-// route:
-// - destination:
-// host: login.prod.svc.cluster.local
-// - match:
-// - port: 443
-// sniHosts:
-// - reviews.bookinfo.com
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-sni
-// spec:
-// hosts:
-// - "*.bookinfo.com"
-// gateways:
-// - mygateway
-// tls:
-// - match:
-// - port: 443
-// sniHosts:
-// - login.bookinfo.com
-// route:
-// - destination:
-// host: login.prod.svc.cluster.local
-// - match:
-// - port: 443
-// sniHosts:
-// - reviews.bookinfo.com
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-type TLSRoute struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Match conditions to be satisfied for the rule to be
- // activated. All conditions inside a single match block have AND
- // semantics, while the list of match blocks have OR semantics. The rule
- // is matched if any one of the match blocks succeed.
- Match []*TLSMatchAttributes `protobuf:"bytes,1,rep,name=match,proto3" json:"match,omitempty"`
- // The destination to which the connection should be forwarded to.
- Route []*RouteDestination `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"`
-}
-
-func (x *TLSRoute) Reset() {
- *x = TLSRoute{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TLSRoute) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TLSRoute) ProtoMessage() {}
-
-func (x *TLSRoute) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TLSRoute.ProtoReflect.Descriptor instead.
-func (*TLSRoute) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *TLSRoute) GetMatch() []*TLSMatchAttributes {
- if x != nil {
- return x.Match
- }
- return nil
-}
-
-func (x *TLSRoute) GetRoute() []*RouteDestination {
- if x != nil {
- return x.Route
- }
- return nil
-}
-
-// Describes match conditions and actions for routing TCP traffic. The
-// following routing rule forwards traffic arriving at port 27017 for
-// mongo.prod.svc.cluster.local to another Mongo server on port 5555.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// spec:
-// hosts:
-// - mongo.prod.svc.cluster.local
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.backup.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// spec:
-// hosts:
-// - mongo.prod.svc.cluster.local
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.backup.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-// {{}}
-type TCPRoute struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Match conditions to be satisfied for the rule to be
- // activated. All conditions inside a single match block have AND
- // semantics, while the list of match blocks have OR semantics. The rule
- // is matched if any one of the match blocks succeed.
- Match []*L4MatchAttributes `protobuf:"bytes,1,rep,name=match,proto3" json:"match,omitempty"`
- // The destination to which the connection should be forwarded to.
- Route []*RouteDestination `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"`
-}
-
-func (x *TCPRoute) Reset() {
- *x = TCPRoute{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TCPRoute) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TCPRoute) ProtoMessage() {}
-
-func (x *TCPRoute) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TCPRoute.ProtoReflect.Descriptor instead.
-func (*TCPRoute) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *TCPRoute) GetMatch() []*L4MatchAttributes {
- if x != nil {
- return x.Match
- }
- return nil
-}
-
-func (x *TCPRoute) GetRoute() []*RouteDestination {
- if x != nil {
- return x.Route
- }
- return nil
-}
-
-// HttpMatchRequest specifies a set of criterion to be met in order for the
-// rule to be applied to the HTTP request. For example, the following
-// restricts the rule to match only requests where the URL path
-// starts with /ratings/v2/ and the request contains a custom `end-user` header
-// with value `jason`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - headers:
-// end-user:
-// exact: jason
-// uri:
-// prefix: "/ratings/v2/"
-// ignoreUriCase: true
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - headers:
-// end-user:
-// exact: jason
-// uri:
-// prefix: "/ratings/v2/"
-// ignoreUriCase: true
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-//
-// HTTPMatchRequest CANNOT be empty.
-// **Note:** No regex string match can be set when delegate VirtualService is specified.
-type HTTPMatchRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name assigned to a match. The match's name will be
- // concatenated with the parent route's name and will be logged in
- // the access logs for requests matching this route.
- Name string `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"`
- // URI to match
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- // **Note:** Case-insensitive matching could be enabled via the
- // `ignore_uri_case` flag.
- Uri *StringMatch `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
- // URI Scheme
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- Scheme *StringMatch `protobuf:"bytes,2,opt,name=scheme,proto3" json:"scheme,omitempty"`
- // HTTP Method
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- Method *StringMatch `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"`
- // HTTP Authority
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- Authority *StringMatch `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"`
- // The header keys must be lowercase and use hyphen as the separator,
- // e.g. _x-request-id_.
- //
- // Header values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- // If the value is empty and only the name of header is specfied, presence of the header is checked.
- // **Note:** The keys `uri`, `scheme`, `method`, and `authority` will be ignored.
- Headers map[string]*StringMatch `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Specifies the ports on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they support,
- // in these cases it is not required to explicitly select the port.
- Port uint32 `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"`
- // One or more labels that constrain the applicability of a rule to source (client) workloads
- // with the given labels. If the VirtualService has a list of gateways specified
- // in the top-level `gateways` field, it must include the reserved gateway
- // `mesh` for this field to be applicable.
- SourceLabels map[string]string `protobuf:"bytes,7,rep,name=source_labels,json=sourceLabels,proto3" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- Gateways []string `protobuf:"bytes,8,rep,name=gateways,proto3" json:"gateways,omitempty"`
- // Query parameters for matching.
- //
- // Ex:
- //
- // - For a query parameter like "?key=true", the map key would be "key" and
- // the string match could be defined as `exact: "true"`.
- //
- // - For a query parameter like "?key", the map key would be "key" and the
- // string match could be defined as `exact: ""`.
- //
- // - For a query parameter like "?key=123", the map key would be "key" and the
- // string match could be defined as `regex: "\d+$"`. Note that this
- // configuration will only match values like "123" but not "a123" or "123a".
- //
- // **Note:** `prefix` matching is currently not supported.
- QueryParams map[string]*StringMatch `protobuf:"bytes,9,rep,name=query_params,json=queryParams,proto3" json:"query_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Flag to specify whether the URI matching should be case-insensitive.
- //
- // **Note:** The case will be ignored only in the case of `exact` and `prefix`
- // URI matches.
- IgnoreUriCase bool `protobuf:"varint,10,opt,name=ignore_uri_case,json=ignoreUriCase,proto3" json:"ignore_uri_case,omitempty"`
- // withoutHeader has the same syntax with the header, but has opposite meaning.
- // If a header is matched with a matching rule among withoutHeader, the traffic becomes not matched one.
- WithoutHeaders map[string]*StringMatch `protobuf:"bytes,12,rep,name=without_headers,json=withoutHeaders,proto3" json:"without_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- SourceNamespace string `protobuf:"bytes,13,opt,name=source_namespace,json=sourceNamespace,proto3" json:"source_namespace,omitempty"`
-}
-
-func (x *HTTPMatchRequest) Reset() {
- *x = HTTPMatchRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPMatchRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPMatchRequest) ProtoMessage() {}
-
-func (x *HTTPMatchRequest) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPMatchRequest.ProtoReflect.Descriptor instead.
-func (*HTTPMatchRequest) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *HTTPMatchRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *HTTPMatchRequest) GetUri() *StringMatch {
- if x != nil {
- return x.Uri
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetScheme() *StringMatch {
- if x != nil {
- return x.Scheme
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetMethod() *StringMatch {
- if x != nil {
- return x.Method
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetAuthority() *StringMatch {
- if x != nil {
- return x.Authority
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetHeaders() map[string]*StringMatch {
- if x != nil {
- return x.Headers
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetPort() uint32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *HTTPMatchRequest) GetSourceLabels() map[string]string {
- if x != nil {
- return x.SourceLabels
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetGateways() []string {
- if x != nil {
- return x.Gateways
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetQueryParams() map[string]*StringMatch {
- if x != nil {
- return x.QueryParams
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetIgnoreUriCase() bool {
- if x != nil {
- return x.IgnoreUriCase
- }
- return false
-}
-
-func (x *HTTPMatchRequest) GetWithoutHeaders() map[string]*StringMatch {
- if x != nil {
- return x.WithoutHeaders
- }
- return nil
-}
-
-func (x *HTTPMatchRequest) GetSourceNamespace() string {
- if x != nil {
- return x.SourceNamespace
- }
- return ""
-}
-
-// Each routing rule is associated with one or more service versions (see
-// glossary in beginning of document). Weights associated with the version
-// determine the proportion of traffic it receives. For example, the
-// following rule will route 25% of traffic for the "reviews" service to
-// instances with the "v2" tag and the remaining traffic (i.e., 75%) to
-// "v1".
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// weight: 75
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// weight: 75
-// ```
-// {{}}
-// {{}}
-//
-// And the associated DestinationRule
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-// {{}}
-//
-// Traffic can also be split across two entirely different services without
-// having to define new subsets. For example, the following rule forwards 25% of
-// traffic to reviews.com to dev.reviews.com
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route-two-domains
-// spec:
-// hosts:
-// - reviews.com
-// http:
-// - route:
-// - destination:
-// host: dev.reviews.com
-// weight: 25
-// - destination:
-// host: reviews.com
-// weight: 75
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route-two-domains
-// spec:
-// hosts:
-// - reviews.com
-// http:
-// - route:
-// - destination:
-// host: dev.reviews.com
-// weight: 25
-// - destination:
-// host: reviews.com
-// weight: 75
-// ```
-// {{}}
-// {{}}
-//
-type HTTPRouteDestination struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Destination uniquely identifies the instances of a service
- // to which the request/connection should be forwarded to.
- Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
- // Weight specifies the relative proportion of traffic to be forwarded to the destination. A destination will receive `weight/(sum of all weights)` requests.
- // If there is only one destination in a rule, it will receive all traffic.
- // Otherwise, if weight is `0`, the destination will not receive any traffic.
- Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
- // Header manipulation rules
- Headers *Headers `protobuf:"bytes,7,opt,name=headers,proto3" json:"headers,omitempty"`
-}
-
-func (x *HTTPRouteDestination) Reset() {
- *x = HTTPRouteDestination{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPRouteDestination) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPRouteDestination) ProtoMessage() {}
-
-func (x *HTTPRouteDestination) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPRouteDestination.ProtoReflect.Descriptor instead.
-func (*HTTPRouteDestination) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *HTTPRouteDestination) GetDestination() *Destination {
- if x != nil {
- return x.Destination
- }
- return nil
-}
-
-func (x *HTTPRouteDestination) GetWeight() int32 {
- if x != nil {
- return x.Weight
- }
- return 0
-}
-
-func (x *HTTPRouteDestination) GetHeaders() *Headers {
- if x != nil {
- return x.Headers
- }
- return nil
-}
-
-// L4 routing rule weighted destination.
-type RouteDestination struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Destination uniquely identifies the instances of a service
- // to which the request/connection should be forwarded to.
- Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
- // Weight specifies the relative proportion of traffic to be forwarded to the destination. A destination will receive `weight/(sum of all weights)` requests.
- // If there is only one destination in a rule, it will receive all traffic.
- // Otherwise, if weight is `0`, the destination will not receive any traffic.
- Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
-}
-
-func (x *RouteDestination) Reset() {
- *x = RouteDestination{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RouteDestination) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RouteDestination) ProtoMessage() {}
-
-func (x *RouteDestination) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RouteDestination.ProtoReflect.Descriptor instead.
-func (*RouteDestination) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *RouteDestination) GetDestination() *Destination {
- if x != nil {
- return x.Destination
- }
- return nil
-}
-
-func (x *RouteDestination) GetWeight() int32 {
- if x != nil {
- return x.Weight
- }
- return 0
-}
-
-// L4 connection match attributes. Note that L4 connection matching support
-// is incomplete.
-type L4MatchAttributes struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
- // a.b.c.d/xx form or just a.b.c.d.
- DestinationSubnets []string `protobuf:"bytes,1,rep,name=destination_subnets,json=destinationSubnets,proto3" json:"destination_subnets,omitempty"`
- // Specifies the port on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they support,
- // in these cases it is not required to explicitly select the port.
- Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
- // IPv4 or IPv6 ip address of source with optional subnet. E.g., a.b.c.d/xx
- // form or just a.b.c.d
- // $hide_from_docs
- SourceSubnet string `protobuf:"bytes,3,opt,name=source_subnet,json=sourceSubnet,proto3" json:"source_subnet,omitempty"`
- // One or more labels that constrain the applicability of a rule to
- // workloads with the given labels. If the VirtualService has a list of
- // gateways specified in the top-level `gateways` field, it should include the reserved gateway
- // `mesh` in order for this field to be applicable.
- SourceLabels map[string]string `protobuf:"bytes,4,rep,name=source_labels,json=sourceLabels,proto3" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- Gateways []string `protobuf:"bytes,5,rep,name=gateways,proto3" json:"gateways,omitempty"`
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- SourceNamespace string `protobuf:"bytes,6,opt,name=source_namespace,json=sourceNamespace,proto3" json:"source_namespace,omitempty"`
-}
-
-func (x *L4MatchAttributes) Reset() {
- *x = L4MatchAttributes{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *L4MatchAttributes) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*L4MatchAttributes) ProtoMessage() {}
-
-func (x *L4MatchAttributes) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use L4MatchAttributes.ProtoReflect.Descriptor instead.
-func (*L4MatchAttributes) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *L4MatchAttributes) GetDestinationSubnets() []string {
- if x != nil {
- return x.DestinationSubnets
- }
- return nil
-}
-
-func (x *L4MatchAttributes) GetPort() uint32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *L4MatchAttributes) GetSourceSubnet() string {
- if x != nil {
- return x.SourceSubnet
- }
- return ""
-}
-
-func (x *L4MatchAttributes) GetSourceLabels() map[string]string {
- if x != nil {
- return x.SourceLabels
- }
- return nil
-}
-
-func (x *L4MatchAttributes) GetGateways() []string {
- if x != nil {
- return x.Gateways
- }
- return nil
-}
-
-func (x *L4MatchAttributes) GetSourceNamespace() string {
- if x != nil {
- return x.SourceNamespace
- }
- return ""
-}
-
-// TLS connection match attributes.
-type TLSMatchAttributes struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // SNI (server name indicator) to match on. Wildcard prefixes
- // can be used in the SNI value, e.g., *.com will match foo.example.com
- // as well as example.com. An SNI value must be a subset (i.e., fall
- // within the domain) of the corresponding virtual serivce's hosts.
- SniHosts []string `protobuf:"bytes,1,rep,name=sni_hosts,json=sniHosts,proto3" json:"sni_hosts,omitempty"`
- // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
- // a.b.c.d/xx form or just a.b.c.d.
- DestinationSubnets []string `protobuf:"bytes,2,rep,name=destination_subnets,json=destinationSubnets,proto3" json:"destination_subnets,omitempty"`
- // Specifies the port on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they
- // support, in these cases it is not required to explicitly select the
- // port.
- Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"`
- // One or more labels that constrain the applicability of a rule to
- // workloads with the given labels. If the VirtualService has a list of
- // gateways specified in the top-level `gateways` field, it should include the reserved gateway
- // `mesh` in order for this field to be applicable.
- SourceLabels map[string]string `protobuf:"bytes,5,rep,name=source_labels,json=sourceLabels,proto3" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- Gateways []string `protobuf:"bytes,6,rep,name=gateways,proto3" json:"gateways,omitempty"`
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- SourceNamespace string `protobuf:"bytes,7,opt,name=source_namespace,json=sourceNamespace,proto3" json:"source_namespace,omitempty"`
-}
-
-func (x *TLSMatchAttributes) Reset() {
- *x = TLSMatchAttributes{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TLSMatchAttributes) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TLSMatchAttributes) ProtoMessage() {}
-
-func (x *TLSMatchAttributes) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TLSMatchAttributes.ProtoReflect.Descriptor instead.
-func (*TLSMatchAttributes) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *TLSMatchAttributes) GetSniHosts() []string {
- if x != nil {
- return x.SniHosts
- }
- return nil
-}
-
-func (x *TLSMatchAttributes) GetDestinationSubnets() []string {
- if x != nil {
- return x.DestinationSubnets
- }
- return nil
-}
-
-func (x *TLSMatchAttributes) GetPort() uint32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *TLSMatchAttributes) GetSourceLabels() map[string]string {
- if x != nil {
- return x.SourceLabels
- }
- return nil
-}
-
-func (x *TLSMatchAttributes) GetGateways() []string {
- if x != nil {
- return x.Gateways
- }
- return nil
-}
-
-func (x *TLSMatchAttributes) GetSourceNamespace() string {
- if x != nil {
- return x.SourceNamespace
- }
- return ""
-}
-
-// HTTPRedirect can be used to send a 301 redirect response to the caller,
-// where the Authority/Host and the URI in the response can be swapped with
-// the specified values. For example, the following rule redirects
-// requests for /v1/getProductRatings API on the ratings service to
-// /v1/bookRatings provided by the bookratings service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// exact: /v1/getProductRatings
-// redirect:
-// uri: /v1/bookRatings
-// authority: newratings.default.svc.cluster.local
-// ...
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// exact: /v1/getProductRatings
-// redirect:
-// uri: /v1/bookRatings
-// authority: newratings.default.svc.cluster.local
-// ...
-// ```
-// {{}}
-// {{}}
-//
-type HTTPRedirect struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // On a redirect, overwrite the Path portion of the URL with this
- // value. Note that the entire path will be replaced, irrespective of the
- // request URI being matched as an exact path or prefix.
- Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
- // On a redirect, overwrite the Authority/Host portion of the URL with
- // this value.
- Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
- // Types that are assignable to RedirectPort:
- // *HTTPRedirect_Port
- // *HTTPRedirect_DerivePort
- RedirectPort isHTTPRedirect_RedirectPort `protobuf_oneof:"redirect_port"`
- // On a redirect, overwrite the scheme portion of the URL with this value.
- // For example, `http` or `https`.
- // If unset, the original scheme will be used.
- // If `derivePort` is set to `FROM_PROTOCOL_DEFAULT`, this will impact the port used as well
- Scheme string `protobuf:"bytes,6,opt,name=scheme,proto3" json:"scheme,omitempty"`
- // On a redirect, Specifies the HTTP status code to use in the redirect
- // response. The default response code is MOVED_PERMANENTLY (301).
- RedirectCode uint32 `protobuf:"varint,3,opt,name=redirect_code,json=redirectCode,proto3" json:"redirect_code,omitempty"`
-}
-
-func (x *HTTPRedirect) Reset() {
- *x = HTTPRedirect{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPRedirect) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPRedirect) ProtoMessage() {}
-
-func (x *HTTPRedirect) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPRedirect.ProtoReflect.Descriptor instead.
-func (*HTTPRedirect) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *HTTPRedirect) GetUri() string {
- if x != nil {
- return x.Uri
- }
- return ""
-}
-
-func (x *HTTPRedirect) GetAuthority() string {
- if x != nil {
- return x.Authority
- }
- return ""
-}
-
-func (m *HTTPRedirect) GetRedirectPort() isHTTPRedirect_RedirectPort {
- if m != nil {
- return m.RedirectPort
- }
- return nil
-}
-
-func (x *HTTPRedirect) GetPort() uint32 {
- if x, ok := x.GetRedirectPort().(*HTTPRedirect_Port); ok {
- return x.Port
- }
- return 0
-}
-
-func (x *HTTPRedirect) GetDerivePort() HTTPRedirect_RedirectPortSelection {
- if x, ok := x.GetRedirectPort().(*HTTPRedirect_DerivePort); ok {
- return x.DerivePort
- }
- return HTTPRedirect_FROM_PROTOCOL_DEFAULT
-}
-
-func (x *HTTPRedirect) GetScheme() string {
- if x != nil {
- return x.Scheme
- }
- return ""
-}
-
-func (x *HTTPRedirect) GetRedirectCode() uint32 {
- if x != nil {
- return x.RedirectCode
- }
- return 0
-}
-
-type isHTTPRedirect_RedirectPort interface {
- isHTTPRedirect_RedirectPort()
-}
-
-type HTTPRedirect_Port struct {
- // On a redirect, overwrite the port portion of the URL with this value.
- Port uint32 `protobuf:"varint,4,opt,name=port,proto3,oneof"`
-}
-
-type HTTPRedirect_DerivePort struct {
- // On a redirect, dynamically set the port:
- // * FROM_PROTOCOL_DEFAULT: automatically set to 80 for HTTP and 443 for HTTPS.
- // * FROM_REQUEST_PORT: automatically use the port of the request.
- DerivePort HTTPRedirect_RedirectPortSelection `protobuf:"varint,5,opt,name=derive_port,json=derivePort,proto3,enum=istio.networking.v1beta1.HTTPRedirect_RedirectPortSelection,oneof"`
-}
-
-func (*HTTPRedirect_Port) isHTTPRedirect_RedirectPort() {}
-
-func (*HTTPRedirect_DerivePort) isHTTPRedirect_RedirectPort() {}
-
-// HTTPRewrite can be used to rewrite specific parts of a HTTP request
-// before forwarding the request to the destination. Rewrite primitive can
-// be used only with HTTPRouteDestination. The following example
-// demonstrates how to rewrite the URL prefix for api call (/ratings) to
-// ratings service before making the actual API call.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: /ratings
-// rewrite:
-// uri: /v1/bookRatings
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: /ratings
-// rewrite:
-// uri: /v1/bookRatings
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-// {{}}
-//
-type HTTPRewrite struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // rewrite the path (or the prefix) portion of the URI with this
- // value. If the original URI was matched based on prefix, the value
- // provided in this field will replace the corresponding matched prefix.
- Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
- // rewrite the Authority/Host header with this value.
- Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
-}
-
-func (x *HTTPRewrite) Reset() {
- *x = HTTPRewrite{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPRewrite) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPRewrite) ProtoMessage() {}
-
-func (x *HTTPRewrite) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPRewrite.ProtoReflect.Descriptor instead.
-func (*HTTPRewrite) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *HTTPRewrite) GetUri() string {
- if x != nil {
- return x.Uri
- }
- return ""
-}
-
-func (x *HTTPRewrite) GetAuthority() string {
- if x != nil {
- return x.Authority
- }
- return ""
-}
-
-// Describes how to match a given string in HTTP headers. Match is
-// case-sensitive.
-type StringMatch struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to MatchType:
- // *StringMatch_Exact
- // *StringMatch_Prefix
- // *StringMatch_Regex
- MatchType isStringMatch_MatchType `protobuf_oneof:"match_type"`
-}
-
-func (x *StringMatch) Reset() {
- *x = StringMatch{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StringMatch) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StringMatch) ProtoMessage() {}
-
-func (x *StringMatch) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StringMatch.ProtoReflect.Descriptor instead.
-func (*StringMatch) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{14}
-}
-
-func (m *StringMatch) GetMatchType() isStringMatch_MatchType {
- if m != nil {
- return m.MatchType
- }
- return nil
-}
-
-func (x *StringMatch) GetExact() string {
- if x, ok := x.GetMatchType().(*StringMatch_Exact); ok {
- return x.Exact
- }
- return ""
-}
-
-func (x *StringMatch) GetPrefix() string {
- if x, ok := x.GetMatchType().(*StringMatch_Prefix); ok {
- return x.Prefix
- }
- return ""
-}
-
-func (x *StringMatch) GetRegex() string {
- if x, ok := x.GetMatchType().(*StringMatch_Regex); ok {
- return x.Regex
- }
- return ""
-}
-
-type isStringMatch_MatchType interface {
- isStringMatch_MatchType()
-}
-
-type StringMatch_Exact struct {
- // exact string match
- Exact string `protobuf:"bytes,1,opt,name=exact,proto3,oneof"`
-}
-
-type StringMatch_Prefix struct {
- // prefix-based match
- Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3,oneof"`
-}
-
-type StringMatch_Regex struct {
- // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"`
-}
-
-func (*StringMatch_Exact) isStringMatch_MatchType() {}
-
-func (*StringMatch_Prefix) isStringMatch_MatchType() {}
-
-func (*StringMatch_Regex) isStringMatch_MatchType() {}
-
-// Describes the retry policy to use when a HTTP request fails. For
-// example, the following rule sets the maximum number of retries to 3 when
-// calling ratings:v1 service, with a 2s timeout per retry attempt.
-// A retry will be attempted if there is a connect-failure, refused_stream
-// or when the upstream server responds with Service Unavailable(503).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// retries:
-// attempts: 3
-// perTryTimeout: 2s
-// retryOn: connect-failure,refused-stream,503
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// retries:
-// attempts: 3
-// perTryTimeout: 2s
-// retryOn: gateway-error,connect-failure,refused-stream
-// ```
-// {{}}
-// {{}}
-//
-type HTTPRetry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Number of retries to be allowed for a given request. The interval
- // between retries will be determined automatically (25ms+). When request
- // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute)
- // or `per_try_timeout` is configured, the actual number of retries attempted also depends on
- // the specified request `timeout` and `per_try_timeout` values.
- Attempts int32 `protobuf:"varint,1,opt,name=attempts,proto3" json:"attempts,omitempty"`
- // Timeout per attempt for a given request, including the initial call and any retries. Format: 1h/1m/1s/1ms. MUST BE >=1ms.
- // Default is same value as request
- // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute),
- // which means no timeout.
- PerTryTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"`
- // Specifies the conditions under which retry takes place.
- // One or more policies can be specified using a ‘,’ delimited list.
- // If `retry_on` specifies a valid HTTP status, it will be added to retriable_status_codes retry policy.
- // See the [retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on)
- // and [gRPC retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on) for more details.
- RetryOn string `protobuf:"bytes,3,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"`
- // Flag to specify whether the retries should retry to other localities.
- // See the [retry plugin configuration](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/http/http_connection_management#retry-plugin-configuration) for more details.
- RetryRemoteLocalities *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=retry_remote_localities,json=retryRemoteLocalities,proto3" json:"retry_remote_localities,omitempty"`
-}
-
-func (x *HTTPRetry) Reset() {
- *x = HTTPRetry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPRetry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPRetry) ProtoMessage() {}
-
-func (x *HTTPRetry) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPRetry.ProtoReflect.Descriptor instead.
-func (*HTTPRetry) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *HTTPRetry) GetAttempts() int32 {
- if x != nil {
- return x.Attempts
- }
- return 0
-}
-
-func (x *HTTPRetry) GetPerTryTimeout() *durationpb.Duration {
- if x != nil {
- return x.PerTryTimeout
- }
- return nil
-}
-
-func (x *HTTPRetry) GetRetryOn() string {
- if x != nil {
- return x.RetryOn
- }
- return ""
-}
-
-func (x *HTTPRetry) GetRetryRemoteLocalities() *wrapperspb.BoolValue {
- if x != nil {
- return x.RetryRemoteLocalities
- }
- return nil
-}
-
-// Describes the Cross-Origin Resource Sharing (CORS) policy, for a given
-// service. Refer to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)
-// for further details about cross origin resource sharing. For example,
-// the following rule restricts cross origin requests to those originating
-// from example.com domain using HTTP POST/GET, and sets the
-// `Access-Control-Allow-Credentials` header to false. In addition, it only
-// exposes `X-Foo-bar` header and sets an expiry period of 1 day.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// corsPolicy:
-// allowOrigins:
-// - exact: https://example.com
-// allowMethods:
-// - POST
-// - GET
-// allowCredentials: false
-// allowHeaders:
-// - X-Foo-Bar
-// maxAge: "24h"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// corsPolicy:
-// allowOrigins:
-// - exact: https://example.com
-// allowMethods:
-// - POST
-// - GET
-// allowCredentials: false
-// allowHeaders:
-// - X-Foo-Bar
-// maxAge: "24h"
-// ```
-// {{}}
-// {{}}
-//
-type CorsPolicy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The list of origins that are allowed to perform CORS requests. The
- // content will be serialized into the Access-Control-Allow-Origin
- // header. Wildcard * will allow all origins.
- // $hide_from_docs
- //
- // Deprecated: Do not use.
- AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,omitempty"`
- // String patterns that match allowed origins.
- // An origin is allowed if any of the string matchers match.
- // If a match is found, then the outgoing Access-Control-Allow-Origin would be set to the origin as provided by the client.
- AllowOrigins []*StringMatch `protobuf:"bytes,7,rep,name=allow_origins,json=allowOrigins,proto3" json:"allow_origins,omitempty"`
- // List of HTTP methods allowed to access the resource. The content will
- // be serialized into the Access-Control-Allow-Methods header.
- AllowMethods []string `protobuf:"bytes,2,rep,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"`
- // List of HTTP headers that can be used when requesting the
- // resource. Serialized to Access-Control-Allow-Headers header.
- AllowHeaders []string `protobuf:"bytes,3,rep,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"`
- // A list of HTTP headers that the browsers are allowed to
- // access. Serialized into Access-Control-Expose-Headers header.
- ExposeHeaders []string `protobuf:"bytes,4,rep,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"`
- // Specifies how long the results of a preflight request can be
- // cached. Translates to the `Access-Control-Max-Age` header.
- MaxAge *durationpb.Duration `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
- // Indicates whether the caller is allowed to send the actual request
- // (not the preflight) using credentials. Translates to
- // `Access-Control-Allow-Credentials` header.
- AllowCredentials *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"`
-}
-
-func (x *CorsPolicy) Reset() {
- *x = CorsPolicy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CorsPolicy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CorsPolicy) ProtoMessage() {}
-
-func (x *CorsPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CorsPolicy.ProtoReflect.Descriptor instead.
-func (*CorsPolicy) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{16}
-}
-
-// Deprecated: Do not use.
-func (x *CorsPolicy) GetAllowOrigin() []string {
- if x != nil {
- return x.AllowOrigin
- }
- return nil
-}
-
-func (x *CorsPolicy) GetAllowOrigins() []*StringMatch {
- if x != nil {
- return x.AllowOrigins
- }
- return nil
-}
-
-func (x *CorsPolicy) GetAllowMethods() []string {
- if x != nil {
- return x.AllowMethods
- }
- return nil
-}
-
-func (x *CorsPolicy) GetAllowHeaders() []string {
- if x != nil {
- return x.AllowHeaders
- }
- return nil
-}
-
-func (x *CorsPolicy) GetExposeHeaders() []string {
- if x != nil {
- return x.ExposeHeaders
- }
- return nil
-}
-
-func (x *CorsPolicy) GetMaxAge() *durationpb.Duration {
- if x != nil {
- return x.MaxAge
- }
- return nil
-}
-
-func (x *CorsPolicy) GetAllowCredentials() *wrapperspb.BoolValue {
- if x != nil {
- return x.AllowCredentials
- }
- return nil
-}
-
-// HTTPFaultInjection can be used to specify one or more faults to inject
-// while forwarding HTTP requests to the destination specified in a route.
-// Fault specification is part of a VirtualService rule. Faults include
-// aborting the Http request from downstream service, and/or delaying
-// proxying of requests. A fault rule MUST HAVE delay or abort or both.
-//
-// *Note:* Delay and abort faults are independent of one another, even if
-// both are specified simultaneously.
-type HTTPFaultInjection struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Delay requests before forwarding, emulating various failures such as
- // network issues, overloaded upstream service, etc.
- Delay *HTTPFaultInjection_Delay `protobuf:"bytes,1,opt,name=delay,proto3" json:"delay,omitempty"`
- // Abort Http request attempts and return error codes back to downstream
- // service, giving the impression that the upstream service is faulty.
- Abort *HTTPFaultInjection_Abort `protobuf:"bytes,2,opt,name=abort,proto3" json:"abort,omitempty"`
-}
-
-func (x *HTTPFaultInjection) Reset() {
- *x = HTTPFaultInjection{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPFaultInjection) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPFaultInjection) ProtoMessage() {}
-
-func (x *HTTPFaultInjection) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPFaultInjection.ProtoReflect.Descriptor instead.
-func (*HTTPFaultInjection) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *HTTPFaultInjection) GetDelay() *HTTPFaultInjection_Delay {
- if x != nil {
- return x.Delay
- }
- return nil
-}
-
-func (x *HTTPFaultInjection) GetAbort() *HTTPFaultInjection_Abort {
- if x != nil {
- return x.Abort
- }
- return nil
-}
-
-// PortSelector specifies the number of a port to be used for
-// matching or selection for final routing.
-type PortSelector struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Valid port number
- Number uint32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
-}
-
-func (x *PortSelector) Reset() {
- *x = PortSelector{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PortSelector) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PortSelector) ProtoMessage() {}
-
-func (x *PortSelector) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PortSelector.ProtoReflect.Descriptor instead.
-func (*PortSelector) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *PortSelector) GetNumber() uint32 {
- if x != nil {
- return x.Number
- }
- return 0
-}
-
-// Percent specifies a percentage in the range of [0.0, 100.0].
-type Percent struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Percent) Reset() {
- *x = Percent{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[19]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Percent) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Percent) ProtoMessage() {}
-
-func (x *Percent) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[19]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Percent.ProtoReflect.Descriptor instead.
-func (*Percent) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Percent) GetValue() float64 {
- if x != nil {
- return x.Value
- }
- return 0
-}
-
-// HeaderOperations Describes the header manipulations to apply
-type Headers_HeaderOperations struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Overwrite the headers specified by key with the given values
- Set map[string]string `protobuf:"bytes,1,rep,name=set,proto3" json:"set,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Append the given values to the headers specified by keys
- // (will create a comma-separated list of values)
- Add map[string]string `protobuf:"bytes,2,rep,name=add,proto3" json:"add,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Remove the specified headers
- Remove []string `protobuf:"bytes,3,rep,name=remove,proto3" json:"remove,omitempty"`
-}
-
-func (x *Headers_HeaderOperations) Reset() {
- *x = Headers_HeaderOperations{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Headers_HeaderOperations) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Headers_HeaderOperations) ProtoMessage() {}
-
-func (x *Headers_HeaderOperations) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Headers_HeaderOperations.ProtoReflect.Descriptor instead.
-func (*Headers_HeaderOperations) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{4, 0}
-}
-
-func (x *Headers_HeaderOperations) GetSet() map[string]string {
- if x != nil {
- return x.Set
- }
- return nil
-}
-
-func (x *Headers_HeaderOperations) GetAdd() map[string]string {
- if x != nil {
- return x.Add
- }
- return nil
-}
-
-func (x *Headers_HeaderOperations) GetRemove() []string {
- if x != nil {
- return x.Remove
- }
- return nil
-}
-
-// Delay specification is used to inject latency into the request
-// forwarding path. The following example will introduce a 5 second delay
-// in 1 out of every 1000 requests to the "v1" version of the "reviews"
-// service from all pods with label env: prod
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - match:
-// - sourceLabels:
-// env: prod
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// fault:
-// delay:
-// percentage:
-// value: 0.1
-// fixedDelay: 5s
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - match:
-// - sourceLabels:
-// env: prod
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// fault:
-// delay:
-// percentage:
-// value: 0.1
-// fixedDelay: 5s
-// ```
-// {{}}
-// {{}}
-//
-// The _fixedDelay_ field is used to indicate the amount of delay in seconds.
-// The optional _percentage_ field can be used to only delay a certain
-// percentage of requests. If left unspecified, all request will be delayed.
-type HTTPFaultInjection_Delay struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Percentage of requests on which the delay will be injected (0-100).
- // Use of integer `percent` value is deprecated. Use the double `percentage`
- // field instead.
- //
- // Deprecated: Do not use.
- Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"`
- // Types that are assignable to HttpDelayType:
- // *HTTPFaultInjection_Delay_FixedDelay
- // *HTTPFaultInjection_Delay_ExponentialDelay
- HttpDelayType isHTTPFaultInjection_Delay_HttpDelayType `protobuf_oneof:"http_delay_type"`
- // Percentage of requests on which the delay will be injected.
- Percentage *Percent `protobuf:"bytes,5,opt,name=percentage,proto3" json:"percentage,omitempty"`
-}
-
-func (x *HTTPFaultInjection_Delay) Reset() {
- *x = HTTPFaultInjection_Delay{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[29]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPFaultInjection_Delay) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPFaultInjection_Delay) ProtoMessage() {}
-
-func (x *HTTPFaultInjection_Delay) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[29]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPFaultInjection_Delay.ProtoReflect.Descriptor instead.
-func (*HTTPFaultInjection_Delay) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{17, 0}
-}
-
-// Deprecated: Do not use.
-func (x *HTTPFaultInjection_Delay) GetPercent() int32 {
- if x != nil {
- return x.Percent
- }
- return 0
-}
-
-func (m *HTTPFaultInjection_Delay) GetHttpDelayType() isHTTPFaultInjection_Delay_HttpDelayType {
- if m != nil {
- return m.HttpDelayType
- }
- return nil
-}
-
-func (x *HTTPFaultInjection_Delay) GetFixedDelay() *durationpb.Duration {
- if x, ok := x.GetHttpDelayType().(*HTTPFaultInjection_Delay_FixedDelay); ok {
- return x.FixedDelay
- }
- return nil
-}
-
-func (x *HTTPFaultInjection_Delay) GetExponentialDelay() *durationpb.Duration {
- if x, ok := x.GetHttpDelayType().(*HTTPFaultInjection_Delay_ExponentialDelay); ok {
- return x.ExponentialDelay
- }
- return nil
-}
-
-func (x *HTTPFaultInjection_Delay) GetPercentage() *Percent {
- if x != nil {
- return x.Percentage
- }
- return nil
-}
-
-type isHTTPFaultInjection_Delay_HttpDelayType interface {
- isHTTPFaultInjection_Delay_HttpDelayType()
-}
-
-type HTTPFaultInjection_Delay_FixedDelay struct {
- // Add a fixed delay before forwarding the request. Format:
- // 1h/1m/1s/1ms. MUST be >=1ms.
- FixedDelay *durationpb.Duration `protobuf:"bytes,2,opt,name=fixed_delay,json=fixedDelay,proto3,oneof"`
-}
-
-type HTTPFaultInjection_Delay_ExponentialDelay struct {
- // $hide_from_docs
- ExponentialDelay *durationpb.Duration `protobuf:"bytes,3,opt,name=exponential_delay,json=exponentialDelay,proto3,oneof"`
-}
-
-func (*HTTPFaultInjection_Delay_FixedDelay) isHTTPFaultInjection_Delay_HttpDelayType() {}
-
-func (*HTTPFaultInjection_Delay_ExponentialDelay) isHTTPFaultInjection_Delay_HttpDelayType() {}
-
-// Abort specification is used to prematurely abort a request with a
-// pre-specified error code. The following example will return an HTTP 400
-// error code for 1 out of every 1000 requests to the "ratings" service "v1".
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// fault:
-// abort:
-// percentage:
-// value: 0.1
-// httpStatus: 400
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// fault:
-// abort:
-// percentage:
-// value: 0.1
-// httpStatus: 400
-// ```
-// {{}}
-// {{}}
-//
-// The _httpStatus_ field is used to indicate the HTTP status code to
-// return to the caller. The optional _percentage_ field can be used to only
-// abort a certain percentage of requests. If not specified, all requests are
-// aborted.
-type HTTPFaultInjection_Abort struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to ErrorType:
- // *HTTPFaultInjection_Abort_HttpStatus
- // *HTTPFaultInjection_Abort_GrpcStatus
- // *HTTPFaultInjection_Abort_Http2Error
- ErrorType isHTTPFaultInjection_Abort_ErrorType `protobuf_oneof:"error_type"`
- // Percentage of requests to be aborted with the error code provided.
- Percentage *Percent `protobuf:"bytes,5,opt,name=percentage,proto3" json:"percentage,omitempty"`
-}
-
-func (x *HTTPFaultInjection_Abort) Reset() {
- *x = HTTPFaultInjection_Abort{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[30]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPFaultInjection_Abort) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPFaultInjection_Abort) ProtoMessage() {}
-
-func (x *HTTPFaultInjection_Abort) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_virtual_service_proto_msgTypes[30]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPFaultInjection_Abort.ProtoReflect.Descriptor instead.
-func (*HTTPFaultInjection_Abort) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_virtual_service_proto_rawDescGZIP(), []int{17, 1}
-}
-
-func (m *HTTPFaultInjection_Abort) GetErrorType() isHTTPFaultInjection_Abort_ErrorType {
- if m != nil {
- return m.ErrorType
- }
- return nil
-}
-
-func (x *HTTPFaultInjection_Abort) GetHttpStatus() int32 {
- if x, ok := x.GetErrorType().(*HTTPFaultInjection_Abort_HttpStatus); ok {
- return x.HttpStatus
- }
- return 0
-}
-
-func (x *HTTPFaultInjection_Abort) GetGrpcStatus() string {
- if x, ok := x.GetErrorType().(*HTTPFaultInjection_Abort_GrpcStatus); ok {
- return x.GrpcStatus
- }
- return ""
-}
-
-func (x *HTTPFaultInjection_Abort) GetHttp2Error() string {
- if x, ok := x.GetErrorType().(*HTTPFaultInjection_Abort_Http2Error); ok {
- return x.Http2Error
- }
- return ""
-}
-
-func (x *HTTPFaultInjection_Abort) GetPercentage() *Percent {
- if x != nil {
- return x.Percentage
- }
- return nil
-}
-
-type isHTTPFaultInjection_Abort_ErrorType interface {
- isHTTPFaultInjection_Abort_ErrorType()
-}
-
-type HTTPFaultInjection_Abort_HttpStatus struct {
- // HTTP status code to use to abort the Http request.
- HttpStatus int32 `protobuf:"varint,2,opt,name=http_status,json=httpStatus,proto3,oneof"`
-}
-
-type HTTPFaultInjection_Abort_GrpcStatus struct {
- // $hide_from_docs
- GrpcStatus string `protobuf:"bytes,3,opt,name=grpc_status,json=grpcStatus,proto3,oneof"`
-}
-
-type HTTPFaultInjection_Abort_Http2Error struct {
- // $hide_from_docs
- Http2Error string `protobuf:"bytes,4,opt,name=http2_error,json=http2Error,proto3,oneof"`
-}
-
-func (*HTTPFaultInjection_Abort_HttpStatus) isHTTPFaultInjection_Abort_ErrorType() {}
-
-func (*HTTPFaultInjection_Abort_GrpcStatus) isHTTPFaultInjection_Abort_ErrorType() {}
-
-func (*HTTPFaultInjection_Abort_Http2Error) isHTTPFaultInjection_Abort_ErrorType() {}
-
-var File_networking_v1beta1_virtual_service_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_virtual_service_proto_rawDesc = []byte{
- 0x0a, 0x28, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x02, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61,
- 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1a,
- 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x68, 0x74,
- 0x74, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x04, 0x68,
- 0x74, 0x74, 0x70, 0x12, 0x34, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x4c, 0x53, 0x52,
- 0x6f, 0x75, 0x74, 0x65, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x03, 0x74, 0x63, 0x70,
- 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12,
- 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x06, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x22, 0x7b, 0x0a, 0x0b,
- 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x04, 0x68,
- 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52,
- 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x3a, 0x0a,
- 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x91, 0x08, 0x0a, 0x09, 0x48, 0x54,
- 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x6d,
- 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74,
- 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a,
- 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69,
- 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74,
- 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f,
- 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x08, 0x72,
- 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x64, 0x65, 0x6c, 0x65, 0x67,
- 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x08, 0x64,
- 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69,
- 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52,
- 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65,
- 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3d, 0x0a,
- 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65,
- 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x05,
- 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74,
- 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74,
- 0x12, 0x3d, 0x0a, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x12,
- 0x47, 0x0a, 0x0e, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x6d, 0x69, 0x72, 0x72, 0x6f,
- 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x11, 0x6d, 0x69, 0x72, 0x72,
- 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x73,
- 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
- 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64,
- 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x05,
- 0x10, 0x06, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x10, 0x52, 0x11, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63,
- 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x0e, 0x61, 0x70, 0x70,
- 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61,
- 0x64, 0x65, 0x72, 0x73, 0x52, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72,
- 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65,
- 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3c, 0x0a,
- 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xe2, 0x03, 0x0a, 0x07,
- 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64,
- 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x72, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x08, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0xb8, 0x02, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
- 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x03, 0x73, 0x65,
- 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x4d, 0x0a, 0x03, 0x61, 0x64, 0x64,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
- 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x03, 0x61, 0x64, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0x96, 0x01, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x48, 0x0a,
- 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69,
- 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02,
- 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x08, 0x54, 0x43,
- 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
- 0x65, 0x73, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x05, 0x72, 0x6f, 0x75,
- 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x99, 0x09, 0x0a, 0x10,
- 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72,
- 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3d, 0x0a,
- 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d,
- 0x61, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06,
- 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69,
- 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x61,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
- 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x12, 0x51, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54,
- 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65,
- 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64,
- 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x61, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61,
- 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61,
- 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x5e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f,
- 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69,
- 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63,
- 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61,
- 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79,
- 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65,
- 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x55, 0x72, 0x69, 0x43, 0x61, 0x73, 0x65, 0x12, 0x67,
- 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
- 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74,
- 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x1a, 0x61, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53,
- 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x65, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50,
- 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x68, 0x0a,
- 0x13, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa2, 0x02, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50,
- 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61,
- 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x07, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64,
- 0x65, 0x72, 0x73, 0x52, 0x17, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x72, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61,
- 0x64, 0x65, 0x72, 0x73, 0x52, 0x16, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x79, 0x0a, 0x10,
- 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xe2, 0x41,
- 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xe9, 0x02, 0x0a, 0x11, 0x4c, 0x34, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a,
- 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62,
- 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x12,
- 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f,
- 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x62,
- 0x6e, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, 0x62, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
- 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x34, 0x4d, 0x61, 0x74, 0x63,
- 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67,
- 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67,
- 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x22, 0xfe, 0x02, 0x0a, 0x12, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x73, 0x6e,
- 0x69, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x02, 0x52, 0x08, 0x73, 0x6e, 0x69, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x2f, 0x0a,
- 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62,
- 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x12,
- 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f,
- 0x72, 0x74, 0x12, 0x63, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74,
- 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77,
- 0x61, 0x79, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77,
- 0x61, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3f,
- 0x0a, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a,
- 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x75,
- 0x62, 0x6e, 0x65, 0x74, 0x22, 0xce, 0x02, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x64,
- 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x5f, 0x0a, 0x0b, 0x64,
- 0x65, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50,
- 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63,
- 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00,
- 0x52, 0x0a, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63,
- 0x68, 0x65, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
- 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x64,
- 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x52, 0x65, 0x64,
- 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f,
- 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x15, 0x0a,
- 0x11, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x50, 0x4f,
- 0x52, 0x54, 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
- 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x3d, 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x77,
- 0x72, 0x69, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x70,
- 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70,
- 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x0c, 0x0a,
- 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x09,
- 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x08, 0x61, 0x74, 0x74,
- 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01,
- 0x02, 0x52, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x70,
- 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x19,
- 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x52, 0x0a, 0x17, 0x72, 0x65, 0x74,
- 0x72, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f,
- 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x6d,
- 0x6f, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xed, 0x02,
- 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, 0x0a, 0x0c,
- 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69,
- 0x67, 0x69, 0x6e, 0x12, 0x4a, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69,
- 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74,
- 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63,
- 0x68, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12,
- 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74,
- 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x68, 0x65,
- 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c,
- 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x70,
- 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
- 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x61,
- 0x78, 0x41, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72,
- 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c,
- 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x8d, 0x05,
- 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48,
- 0x54, 0x54, 0x50, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x48,
- 0x0a, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x61, 0x75,
- 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x62, 0x6f, 0x72,
- 0x74, 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x1a, 0x89, 0x02, 0x0a, 0x05, 0x44, 0x65, 0x6c,
- 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
- 0x12, 0x42, 0x0a, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x69, 0x78, 0x65, 0x64, 0x44,
- 0x65, 0x6c, 0x61, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
- 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78,
- 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x41,
- 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65,
- 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67,
- 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f,
- 0x74, 0x79, 0x70, 0x65, 0x1a, 0xd6, 0x01, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x27,
- 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x05, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74,
- 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x5f,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a,
- 0x67, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x68, 0x74,
- 0x74, 0x70, 0x32, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x32, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x41, 0x0a,
- 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x72,
- 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65,
- 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04,
- 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0x32, 0x0a,
- 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a,
- 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e,
- 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x22, 0x1f, 0x0a, 0x07, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_virtual_service_proto_rawDescOnce sync.Once
- file_networking_v1beta1_virtual_service_proto_rawDescData = file_networking_v1beta1_virtual_service_proto_rawDesc
-)
-
-func file_networking_v1beta1_virtual_service_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_virtual_service_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_virtual_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_virtual_service_proto_rawDescData)
- })
- return file_networking_v1beta1_virtual_service_proto_rawDescData
-}
-
-var file_networking_v1beta1_virtual_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_networking_v1beta1_virtual_service_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
-var file_networking_v1beta1_virtual_service_proto_goTypes = []interface{}{
- (HTTPRedirect_RedirectPortSelection)(0), // 0: istio.networking.v1beta1.HTTPRedirect.RedirectPortSelection
- (*VirtualService)(nil), // 1: istio.networking.v1beta1.VirtualService
- (*Destination)(nil), // 2: istio.networking.v1beta1.Destination
- (*HTTPRoute)(nil), // 3: istio.networking.v1beta1.HTTPRoute
- (*Delegate)(nil), // 4: istio.networking.v1beta1.Delegate
- (*Headers)(nil), // 5: istio.networking.v1beta1.Headers
- (*TLSRoute)(nil), // 6: istio.networking.v1beta1.TLSRoute
- (*TCPRoute)(nil), // 7: istio.networking.v1beta1.TCPRoute
- (*HTTPMatchRequest)(nil), // 8: istio.networking.v1beta1.HTTPMatchRequest
- (*HTTPRouteDestination)(nil), // 9: istio.networking.v1beta1.HTTPRouteDestination
- (*RouteDestination)(nil), // 10: istio.networking.v1beta1.RouteDestination
- (*L4MatchAttributes)(nil), // 11: istio.networking.v1beta1.L4MatchAttributes
- (*TLSMatchAttributes)(nil), // 12: istio.networking.v1beta1.TLSMatchAttributes
- (*HTTPRedirect)(nil), // 13: istio.networking.v1beta1.HTTPRedirect
- (*HTTPRewrite)(nil), // 14: istio.networking.v1beta1.HTTPRewrite
- (*StringMatch)(nil), // 15: istio.networking.v1beta1.StringMatch
- (*HTTPRetry)(nil), // 16: istio.networking.v1beta1.HTTPRetry
- (*CorsPolicy)(nil), // 17: istio.networking.v1beta1.CorsPolicy
- (*HTTPFaultInjection)(nil), // 18: istio.networking.v1beta1.HTTPFaultInjection
- (*PortSelector)(nil), // 19: istio.networking.v1beta1.PortSelector
- (*Percent)(nil), // 20: istio.networking.v1beta1.Percent
- (*Headers_HeaderOperations)(nil), // 21: istio.networking.v1beta1.Headers.HeaderOperations
- nil, // 22: istio.networking.v1beta1.Headers.HeaderOperations.SetEntry
- nil, // 23: istio.networking.v1beta1.Headers.HeaderOperations.AddEntry
- nil, // 24: istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry
- nil, // 25: istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry
- nil, // 26: istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry
- nil, // 27: istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry
- nil, // 28: istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry
- nil, // 29: istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry
- (*HTTPFaultInjection_Delay)(nil), // 30: istio.networking.v1beta1.HTTPFaultInjection.Delay
- (*HTTPFaultInjection_Abort)(nil), // 31: istio.networking.v1beta1.HTTPFaultInjection.Abort
- (*durationpb.Duration)(nil), // 32: google.protobuf.Duration
- (*wrapperspb.UInt32Value)(nil), // 33: google.protobuf.UInt32Value
- (*wrapperspb.BoolValue)(nil), // 34: google.protobuf.BoolValue
-}
-var file_networking_v1beta1_virtual_service_proto_depIdxs = []int32{
- 3, // 0: istio.networking.v1beta1.VirtualService.http:type_name -> istio.networking.v1beta1.HTTPRoute
- 6, // 1: istio.networking.v1beta1.VirtualService.tls:type_name -> istio.networking.v1beta1.TLSRoute
- 7, // 2: istio.networking.v1beta1.VirtualService.tcp:type_name -> istio.networking.v1beta1.TCPRoute
- 19, // 3: istio.networking.v1beta1.Destination.port:type_name -> istio.networking.v1beta1.PortSelector
- 8, // 4: istio.networking.v1beta1.HTTPRoute.match:type_name -> istio.networking.v1beta1.HTTPMatchRequest
- 9, // 5: istio.networking.v1beta1.HTTPRoute.route:type_name -> istio.networking.v1beta1.HTTPRouteDestination
- 13, // 6: istio.networking.v1beta1.HTTPRoute.redirect:type_name -> istio.networking.v1beta1.HTTPRedirect
- 4, // 7: istio.networking.v1beta1.HTTPRoute.delegate:type_name -> istio.networking.v1beta1.Delegate
- 14, // 8: istio.networking.v1beta1.HTTPRoute.rewrite:type_name -> istio.networking.v1beta1.HTTPRewrite
- 32, // 9: istio.networking.v1beta1.HTTPRoute.timeout:type_name -> google.protobuf.Duration
- 16, // 10: istio.networking.v1beta1.HTTPRoute.retries:type_name -> istio.networking.v1beta1.HTTPRetry
- 18, // 11: istio.networking.v1beta1.HTTPRoute.fault:type_name -> istio.networking.v1beta1.HTTPFaultInjection
- 2, // 12: istio.networking.v1beta1.HTTPRoute.mirror:type_name -> istio.networking.v1beta1.Destination
- 33, // 13: istio.networking.v1beta1.HTTPRoute.mirror_percent:type_name -> google.protobuf.UInt32Value
- 20, // 14: istio.networking.v1beta1.HTTPRoute.mirror_percentage:type_name -> istio.networking.v1beta1.Percent
- 17, // 15: istio.networking.v1beta1.HTTPRoute.cors_policy:type_name -> istio.networking.v1beta1.CorsPolicy
- 5, // 16: istio.networking.v1beta1.HTTPRoute.headers:type_name -> istio.networking.v1beta1.Headers
- 21, // 17: istio.networking.v1beta1.Headers.request:type_name -> istio.networking.v1beta1.Headers.HeaderOperations
- 21, // 18: istio.networking.v1beta1.Headers.response:type_name -> istio.networking.v1beta1.Headers.HeaderOperations
- 12, // 19: istio.networking.v1beta1.TLSRoute.match:type_name -> istio.networking.v1beta1.TLSMatchAttributes
- 10, // 20: istio.networking.v1beta1.TLSRoute.route:type_name -> istio.networking.v1beta1.RouteDestination
- 11, // 21: istio.networking.v1beta1.TCPRoute.match:type_name -> istio.networking.v1beta1.L4MatchAttributes
- 10, // 22: istio.networking.v1beta1.TCPRoute.route:type_name -> istio.networking.v1beta1.RouteDestination
- 15, // 23: istio.networking.v1beta1.HTTPMatchRequest.uri:type_name -> istio.networking.v1beta1.StringMatch
- 15, // 24: istio.networking.v1beta1.HTTPMatchRequest.scheme:type_name -> istio.networking.v1beta1.StringMatch
- 15, // 25: istio.networking.v1beta1.HTTPMatchRequest.method:type_name -> istio.networking.v1beta1.StringMatch
- 15, // 26: istio.networking.v1beta1.HTTPMatchRequest.authority:type_name -> istio.networking.v1beta1.StringMatch
- 24, // 27: istio.networking.v1beta1.HTTPMatchRequest.headers:type_name -> istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry
- 25, // 28: istio.networking.v1beta1.HTTPMatchRequest.source_labels:type_name -> istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry
- 26, // 29: istio.networking.v1beta1.HTTPMatchRequest.query_params:type_name -> istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry
- 27, // 30: istio.networking.v1beta1.HTTPMatchRequest.without_headers:type_name -> istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry
- 2, // 31: istio.networking.v1beta1.HTTPRouteDestination.destination:type_name -> istio.networking.v1beta1.Destination
- 5, // 32: istio.networking.v1beta1.HTTPRouteDestination.headers:type_name -> istio.networking.v1beta1.Headers
- 2, // 33: istio.networking.v1beta1.RouteDestination.destination:type_name -> istio.networking.v1beta1.Destination
- 28, // 34: istio.networking.v1beta1.L4MatchAttributes.source_labels:type_name -> istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry
- 29, // 35: istio.networking.v1beta1.TLSMatchAttributes.source_labels:type_name -> istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry
- 0, // 36: istio.networking.v1beta1.HTTPRedirect.derive_port:type_name -> istio.networking.v1beta1.HTTPRedirect.RedirectPortSelection
- 32, // 37: istio.networking.v1beta1.HTTPRetry.per_try_timeout:type_name -> google.protobuf.Duration
- 34, // 38: istio.networking.v1beta1.HTTPRetry.retry_remote_localities:type_name -> google.protobuf.BoolValue
- 15, // 39: istio.networking.v1beta1.CorsPolicy.allow_origins:type_name -> istio.networking.v1beta1.StringMatch
- 32, // 40: istio.networking.v1beta1.CorsPolicy.max_age:type_name -> google.protobuf.Duration
- 34, // 41: istio.networking.v1beta1.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue
- 30, // 42: istio.networking.v1beta1.HTTPFaultInjection.delay:type_name -> istio.networking.v1beta1.HTTPFaultInjection.Delay
- 31, // 43: istio.networking.v1beta1.HTTPFaultInjection.abort:type_name -> istio.networking.v1beta1.HTTPFaultInjection.Abort
- 22, // 44: istio.networking.v1beta1.Headers.HeaderOperations.set:type_name -> istio.networking.v1beta1.Headers.HeaderOperations.SetEntry
- 23, // 45: istio.networking.v1beta1.Headers.HeaderOperations.add:type_name -> istio.networking.v1beta1.Headers.HeaderOperations.AddEntry
- 15, // 46: istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry.value:type_name -> istio.networking.v1beta1.StringMatch
- 15, // 47: istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry.value:type_name -> istio.networking.v1beta1.StringMatch
- 15, // 48: istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry.value:type_name -> istio.networking.v1beta1.StringMatch
- 32, // 49: istio.networking.v1beta1.HTTPFaultInjection.Delay.fixed_delay:type_name -> google.protobuf.Duration
- 32, // 50: istio.networking.v1beta1.HTTPFaultInjection.Delay.exponential_delay:type_name -> google.protobuf.Duration
- 20, // 51: istio.networking.v1beta1.HTTPFaultInjection.Delay.percentage:type_name -> istio.networking.v1beta1.Percent
- 20, // 52: istio.networking.v1beta1.HTTPFaultInjection.Abort.percentage:type_name -> istio.networking.v1beta1.Percent
- 53, // [53:53] is the sub-list for method output_type
- 53, // [53:53] is the sub-list for method input_type
- 53, // [53:53] is the sub-list for extension type_name
- 53, // [53:53] is the sub-list for extension extendee
- 0, // [0:53] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_virtual_service_proto_init() }
-func file_networking_v1beta1_virtual_service_proto_init() {
- if File_networking_v1beta1_virtual_service_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_virtual_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VirtualService); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Destination); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPRoute); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Delegate); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Headers); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TLSRoute); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TCPRoute); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPMatchRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPRouteDestination); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RouteDestination); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*L4MatchAttributes); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TLSMatchAttributes); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPRedirect); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPRewrite); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StringMatch); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPRetry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CorsPolicy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPFaultInjection); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PortSelector); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Percent); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Headers_HeaderOperations); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPFaultInjection_Delay); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPFaultInjection_Abort); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[12].OneofWrappers = []interface{}{
- (*HTTPRedirect_Port)(nil),
- (*HTTPRedirect_DerivePort)(nil),
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[14].OneofWrappers = []interface{}{
- (*StringMatch_Exact)(nil),
- (*StringMatch_Prefix)(nil),
- (*StringMatch_Regex)(nil),
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[29].OneofWrappers = []interface{}{
- (*HTTPFaultInjection_Delay_FixedDelay)(nil),
- (*HTTPFaultInjection_Delay_ExponentialDelay)(nil),
- }
- file_networking_v1beta1_virtual_service_proto_msgTypes[30].OneofWrappers = []interface{}{
- (*HTTPFaultInjection_Abort_HttpStatus)(nil),
- (*HTTPFaultInjection_Abort_GrpcStatus)(nil),
- (*HTTPFaultInjection_Abort_Http2Error)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_virtual_service_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 31,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_virtual_service_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_virtual_service_proto_depIdxs,
- EnumInfos: file_networking_v1beta1_virtual_service_proto_enumTypes,
- MessageInfos: file_networking_v1beta1_virtual_service_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_virtual_service_proto = out.File
- file_networking_v1beta1_virtual_service_proto_rawDesc = nil
- file_networking_v1beta1_virtual_service_proto_goTypes = nil
- file_networking_v1beta1_virtual_service_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/workload_entry.pb.go b/gen/proto/networking/v1beta1/workload_entry.pb.go
deleted file mode 100644
index 3cec55f..0000000
--- a/gen/proto/networking/v1beta1/workload_entry.pb.go
+++ /dev/null
@@ -1,531 +0,0 @@
-// Copyright 2020 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/workload_entry.proto
-
-// $schema: istio.networking.v1beta1.WorkloadEntry
-// $title: Workload Entry
-// $description: Configuration affecting VMs onboarded into the mesh.
-// $location: https://istio.io/docs/reference/config/networking/workload-entry.html
-// $aliases: [/docs/reference/config/networking/v1beta1/workload-entry]
-// $mode: none
-
-// `WorkloadEntry` enables operators to describe the properties of a
-// single non-Kubernetes workload such as a VM or a bare metal server
-// as it is onboarded into the mesh. A `WorkloadEntry` must be
-// accompanied by an Istio `ServiceEntry` that selects the workload
-// through the appropriate labels and provides the service definition
-// for a `MESH_INTERNAL` service (hostnames, port properties, etc.). A
-// `ServiceEntry` object can select multiple workload entries as well
-// as Kubernetes pods based on the label selector specified in the
-// service entry.
-//
-// When a workload connects to `istiod`, the status field in the
-// custom resource will be updated to indicate the health of the
-// workload along with other details, similar to how Kubernetes
-// updates the status of a pod.
-//
-// The following example declares a workload entry representing a VM
-// for the `details.bookinfo.com` service. This VM has sidecar
-// installed and bootstrapped using the `details-legacy` service
-// account. The service is exposed on port 80 to applications in the
-// mesh. The HTTP traffic to this service is wrapped in Istio mutual
-// TLS and sent to sidecars on VMs on target port 8080, that in turn
-// forward it to the application on localhost on the same port.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: 2.2.2.2
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: 2.2.2.2
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-// {{}}
-//
-// and the associated service entry
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-// {{}}
-//
-//
-// The following example declares the same VM workload using
-// its fully qualified DNS name. The service entry's resolution
-// mode should be changed to DNS to indicate that the client-side
-// sidecars should dynamically resolve the DNS name at runtime before
-// forwarding the request.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: vm1.vpc01.corp.net
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: vm1.vpc01.corp.net
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-// {{}}
-//
-// and the associated service entry
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: DNS
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: DNS
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-// {{}}
-//
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// WorkloadEntry enables specifying the properties of a single non-Kubernetes workload such a VM or a bare metal services that can be referred to by service entries.
-//
-//
-//
-//
-//
-type WorkloadEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Address associated with the network endpoint without the
- // port. Domain names can be used if and only if the resolution is set
- // to DNS, and must be fully-qualified without wildcards. Use the form
- // unix:///absolute/path/to/socket for Unix domain socket endpoints.
- Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
- // Set of ports associated with the endpoint. If the port map is
- // specified, it must be a map of servicePortName to this endpoint's
- // port, such that traffic to the service port will be forwarded to
- // the endpoint port that maps to the service's portName. If
- // omitted, and the targetPort is specified as part of the service's
- // port specification, traffic to the service port will be forwarded
- // to one of the endpoints on the specified `targetPort`. If both
- // the targetPort and endpoint's port map are not specified, traffic
- // to a service port will be forwarded to one of the endpoints on
- // the same port.
- //
- // **NOTE 1:** Do not use for `unix://` addresses.
- //
- // **NOTE 2:** endpoint port map takes precedence over targetPort.
- Ports map[string]uint32 `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // One or more labels associated with the endpoint.
- Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Network enables Istio to group endpoints resident in the same L3
- // domain/network. All endpoints in the same network are assumed to be
- // directly reachable from one another. When endpoints in different
- // networks cannot reach each other directly, an Istio Gateway can be
- // used to establish connectivity (usually using the
- // `AUTO_PASSTHROUGH` mode in a Gateway Server). This is
- // an advanced configuration used typically for spanning an Istio mesh
- // over multiple clusters.
- Network string `protobuf:"bytes,4,opt,name=network,proto3" json:"network,omitempty"`
- // The locality associated with the endpoint. A locality corresponds
- // to a failure domain (e.g., country/region/zone). Arbitrary failure
- // domain hierarchies can be represented by separating each
- // encapsulating failure domain by /. For example, the locality of an
- // an endpoint in US, in US-East-1 region, within availability zone
- // az-1, in data center rack r11 can be represented as
- // us/us-east-1/az-1/r11. Istio will configure the sidecar to route to
- // endpoints within the same locality as the sidecar. If none of the
- // endpoints in the locality are available, endpoints parent locality
- // (but within the same network WorkloadID) will be chosen. For example, if
- // there are two endpoints in same network (networkID "n1"), say e1
- // with locality us/us-east-1/az-1/r11 and e2 with locality
- // us/us-east-1/az-2/r12, a sidecar from us/us-east-1/az-1/r11 locality
- // will prefer e1 from the same locality over e2 from a different
- // locality. Endpoint e2 could be the IP associated with a gateway
- // (that bridges networks n1 and n2), or the IP associated with a
- // standard service endpoint.
- Locality string `protobuf:"bytes,5,opt,name=locality,proto3" json:"locality,omitempty"`
- // The load balancing weight associated with the endpoint. Endpoints
- // with higher weights will receive proportionally higher traffic.
- Weight uint32 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"`
- // The service account associated with the workload if a sidecar
- // is present in the workload. The service account must be present
- // in the same namespace as the configuration ( WorkloadEntry or a
- // ServiceEntry)
- ServiceAccount string `protobuf:"bytes,7,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
-}
-
-func (x *WorkloadEntry) Reset() {
- *x = WorkloadEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_entry_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WorkloadEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WorkloadEntry) ProtoMessage() {}
-
-func (x *WorkloadEntry) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_entry_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WorkloadEntry.ProtoReflect.Descriptor instead.
-func (*WorkloadEntry) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_entry_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *WorkloadEntry) GetAddress() string {
- if x != nil {
- return x.Address
- }
- return ""
-}
-
-func (x *WorkloadEntry) GetPorts() map[string]uint32 {
- if x != nil {
- return x.Ports
- }
- return nil
-}
-
-func (x *WorkloadEntry) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-func (x *WorkloadEntry) GetNetwork() string {
- if x != nil {
- return x.Network
- }
- return ""
-}
-
-func (x *WorkloadEntry) GetLocality() string {
- if x != nil {
- return x.Locality
- }
- return ""
-}
-
-func (x *WorkloadEntry) GetWeight() uint32 {
- if x != nil {
- return x.Weight
- }
- return 0
-}
-
-func (x *WorkloadEntry) GetServiceAccount() string {
- if x != nil {
- return x.ServiceAccount
- }
- return ""
-}
-
-var File_networking_v1beta1_workload_entry_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_workload_entry_proto_rawDesc = []byte{
- 0x0a, 0x27, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e,
- 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x03, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x61,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x48, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
- 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50,
- 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73,
- 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x18, 0x0a,
- 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
- 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
- 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39,
- 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74,
- 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_workload_entry_proto_rawDescOnce sync.Once
- file_networking_v1beta1_workload_entry_proto_rawDescData = file_networking_v1beta1_workload_entry_proto_rawDesc
-)
-
-func file_networking_v1beta1_workload_entry_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_workload_entry_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_workload_entry_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_workload_entry_proto_rawDescData)
- })
- return file_networking_v1beta1_workload_entry_proto_rawDescData
-}
-
-var file_networking_v1beta1_workload_entry_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_networking_v1beta1_workload_entry_proto_goTypes = []interface{}{
- (*WorkloadEntry)(nil), // 0: istio.networking.v1beta1.WorkloadEntry
- nil, // 1: istio.networking.v1beta1.WorkloadEntry.PortsEntry
- nil, // 2: istio.networking.v1beta1.WorkloadEntry.LabelsEntry
-}
-var file_networking_v1beta1_workload_entry_proto_depIdxs = []int32{
- 1, // 0: istio.networking.v1beta1.WorkloadEntry.ports:type_name -> istio.networking.v1beta1.WorkloadEntry.PortsEntry
- 2, // 1: istio.networking.v1beta1.WorkloadEntry.labels:type_name -> istio.networking.v1beta1.WorkloadEntry.LabelsEntry
- 2, // [2:2] is the sub-list for method output_type
- 2, // [2:2] is the sub-list for method input_type
- 2, // [2:2] is the sub-list for extension type_name
- 2, // [2:2] is the sub-list for extension extendee
- 0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_workload_entry_proto_init() }
-func file_networking_v1beta1_workload_entry_proto_init() {
- if File_networking_v1beta1_workload_entry_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_workload_entry_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_workload_entry_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_workload_entry_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_workload_entry_proto_depIdxs,
- MessageInfos: file_networking_v1beta1_workload_entry_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_workload_entry_proto = out.File
- file_networking_v1beta1_workload_entry_proto_rawDesc = nil
- file_networking_v1beta1_workload_entry_proto_goTypes = nil
- file_networking_v1beta1_workload_entry_proto_depIdxs = nil
-}
diff --git a/gen/proto/networking/v1beta1/workload_group.pb.go b/gen/proto/networking/v1beta1/workload_group.pb.go
deleted file mode 100644
index 770ec01..0000000
--- a/gen/proto/networking/v1beta1/workload_group.pb.go
+++ /dev/null
@@ -1,917 +0,0 @@
-// Copyright 2020 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: networking/v1beta1/workload_group.proto
-
-// $schema: istio.networking.v1alpha3.WorkloadGroup
-// $title: Workload Group
-// $description: Describes a collection of workload instances.
-// $location: https://istio.io/docs/reference/config/networking/workload-group.html
-// $aliases: [/docs/reference/config/networking/v1alpha3/workload-group]
-
-// `WorkloadGroup` describes a collection of workload instances.
-// It provides a specification that the workload instances can use to bootstrap
-// their proxies, including the metadata and identity. It is only intended to
-// be used with non-k8s workloads like Virtual Machines, and is meant to mimic
-// the existing sidecar injection and deployment specification model used for
-// Kubernetes workloads to bootstrap Istio proxies.
-//
-// The following example declares a workload group representing a collection
-// of workloads that will be registered under `reviews` in namespace
-// `bookinfo`. The set of labels will be associated with each workload
-// instance during the bootstrap process, and the ports 3550 and 8080
-// will be associated with the workload group and use service account `default`.
-// `app.kubernetes.io/version` is just an arbitrary example of a label.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadGroup
-// metadata:
-// name: reviews
-// namespace: bookinfo
-// spec:
-// metadata:
-// labels:
-// app.kubernetes.io/name: reviews
-// app.kubernetes.io/version: "1.3.4"
-// template:
-// ports:
-// grpc: 3550
-// http: 8080
-// serviceAccount: default
-// probe:
-// initialDelaySeconds: 5
-// timeoutSeconds: 3
-// periodSeconds: 4
-// successThreshold: 3
-// failureThreshold: 3
-// httpGet:
-// path: /foo/bar
-// host: 127.0.0.1
-// port: 3100
-// scheme: HTTPS
-// httpHeaders:
-// - name: Lit-Header
-// value: Im-The-Best
-// ```
-// {{}}
-// {{}}
-//
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// `WorkloadGroup` enables specifying the properties of a single workload for bootstrap and
-// provides a template for `WorkloadEntry`, similar to how `Deployment` specifies properties
-// of workloads via `Pod` templates. A `WorkloadGroup` can have more than one `WorkloadEntry`.
-// `WorkloadGroup` has no relationship to resources which control service registry like `ServiceEntry`
-// and as such doesn't configure host name for these workloads.
-//
-//
-//
-//
-//
-type WorkloadGroup struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Metadata that will be used for all corresponding `WorkloadEntries`.
- // User labels for a workload group should be set here in `metadata` rather than in `template`.
- Metadata *WorkloadGroup_ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.
- // Please note that `address` and `labels` fields should not be set in the template, and an empty `serviceAccount`
- // should default to `default`. The workload identities (mTLS certificates) will be bootstrapped using the
- // specified service account's token. Workload entries in this group will be in the same namespace as the
- // workload group, and inherit the labels and annotations from the above `metadata` field.
- Template *WorkloadEntry `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"`
- // `ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.
- // This configuration mirrors K8S in both syntax and logic for the most part.
- Probe *ReadinessProbe `protobuf:"bytes,3,opt,name=probe,proto3" json:"probe,omitempty"`
-}
-
-func (x *WorkloadGroup) Reset() {
- *x = WorkloadGroup{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WorkloadGroup) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WorkloadGroup) ProtoMessage() {}
-
-func (x *WorkloadGroup) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WorkloadGroup.ProtoReflect.Descriptor instead.
-func (*WorkloadGroup) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_group_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *WorkloadGroup) GetMetadata() *WorkloadGroup_ObjectMeta {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *WorkloadGroup) GetTemplate() *WorkloadEntry {
- if x != nil {
- return x.Template
- }
- return nil
-}
-
-func (x *WorkloadGroup) GetProbe() *ReadinessProbe {
- if x != nil {
- return x.Probe
- }
- return nil
-}
-
-type ReadinessProbe struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Number of seconds after the container has started before readiness probes are initiated.
- InitialDelaySeconds int32 `protobuf:"varint,2,opt,name=initial_delay_seconds,json=initialDelaySeconds,proto3" json:"initial_delay_seconds,omitempty"`
- // Number of seconds after which the probe times out.
- // Defaults to 1 second. Minimum value is 1 second.
- TimeoutSeconds int32 `protobuf:"varint,3,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"`
- // How often (in seconds) to perform the probe.
- // Default to 10 seconds. Minimum value is 1 second.
- PeriodSeconds int32 `protobuf:"varint,4,opt,name=period_seconds,json=periodSeconds,proto3" json:"period_seconds,omitempty"`
- // Minimum consecutive successes for the probe to be considered successful after having failed.
- // Defaults to 1 second.
- SuccessThreshold int32 `protobuf:"varint,5,opt,name=success_threshold,json=successThreshold,proto3" json:"success_threshold,omitempty"`
- // Minimum consecutive failures for the probe to be considered failed after having succeeded.
- // Defaults to 3 seconds.
- FailureThreshold int32 `protobuf:"varint,6,opt,name=failure_threshold,json=failureThreshold,proto3" json:"failure_threshold,omitempty"`
- // Users can only provide one configuration for healthchecks (tcp, http, exec),
- // and this is expressed as a oneof. All of the other configuration values
- // hold true for any of the healthcheck methods.
- //
- // Types that are assignable to HealthCheckMethod:
- // *ReadinessProbe_HttpGet
- // *ReadinessProbe_TcpSocket
- // *ReadinessProbe_Exec
- HealthCheckMethod isReadinessProbe_HealthCheckMethod `protobuf_oneof:"health_check_method"`
-}
-
-func (x *ReadinessProbe) Reset() {
- *x = ReadinessProbe{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ReadinessProbe) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadinessProbe) ProtoMessage() {}
-
-func (x *ReadinessProbe) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadinessProbe.ProtoReflect.Descriptor instead.
-func (*ReadinessProbe) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_group_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ReadinessProbe) GetInitialDelaySeconds() int32 {
- if x != nil {
- return x.InitialDelaySeconds
- }
- return 0
-}
-
-func (x *ReadinessProbe) GetTimeoutSeconds() int32 {
- if x != nil {
- return x.TimeoutSeconds
- }
- return 0
-}
-
-func (x *ReadinessProbe) GetPeriodSeconds() int32 {
- if x != nil {
- return x.PeriodSeconds
- }
- return 0
-}
-
-func (x *ReadinessProbe) GetSuccessThreshold() int32 {
- if x != nil {
- return x.SuccessThreshold
- }
- return 0
-}
-
-func (x *ReadinessProbe) GetFailureThreshold() int32 {
- if x != nil {
- return x.FailureThreshold
- }
- return 0
-}
-
-func (m *ReadinessProbe) GetHealthCheckMethod() isReadinessProbe_HealthCheckMethod {
- if m != nil {
- return m.HealthCheckMethod
- }
- return nil
-}
-
-func (x *ReadinessProbe) GetHttpGet() *HTTPHealthCheckConfig {
- if x, ok := x.GetHealthCheckMethod().(*ReadinessProbe_HttpGet); ok {
- return x.HttpGet
- }
- return nil
-}
-
-func (x *ReadinessProbe) GetTcpSocket() *TCPHealthCheckConfig {
- if x, ok := x.GetHealthCheckMethod().(*ReadinessProbe_TcpSocket); ok {
- return x.TcpSocket
- }
- return nil
-}
-
-func (x *ReadinessProbe) GetExec() *ExecHealthCheckConfig {
- if x, ok := x.GetHealthCheckMethod().(*ReadinessProbe_Exec); ok {
- return x.Exec
- }
- return nil
-}
-
-type isReadinessProbe_HealthCheckMethod interface {
- isReadinessProbe_HealthCheckMethod()
-}
-
-type ReadinessProbe_HttpGet struct {
- // `httpGet` is performed to a given endpoint
- // and the status/able to connect determines health.
- HttpGet *HTTPHealthCheckConfig `protobuf:"bytes,7,opt,name=http_get,json=httpGet,proto3,oneof"`
-}
-
-type ReadinessProbe_TcpSocket struct {
- // Health is determined by if the proxy is able to connect.
- TcpSocket *TCPHealthCheckConfig `protobuf:"bytes,8,opt,name=tcp_socket,json=tcpSocket,proto3,oneof"`
-}
-
-type ReadinessProbe_Exec struct {
- // Health is determined by how the command that is executed exited.
- Exec *ExecHealthCheckConfig `protobuf:"bytes,9,opt,name=exec,proto3,oneof"`
-}
-
-func (*ReadinessProbe_HttpGet) isReadinessProbe_HealthCheckMethod() {}
-
-func (*ReadinessProbe_TcpSocket) isReadinessProbe_HealthCheckMethod() {}
-
-func (*ReadinessProbe_Exec) isReadinessProbe_HealthCheckMethod() {}
-
-type HTTPHealthCheckConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Path to access on the HTTP server.
- Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
- // Port on which the endpoint lives.
- Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
- // Host name to connect to, defaults to the pod IP. You probably want to set
- // "Host" in httpHeaders instead.
- Host string `protobuf:"bytes,3,opt,name=host,proto3" json:"host,omitempty"`
- // HTTP or HTTPS, defaults to HTTP
- Scheme string `protobuf:"bytes,4,opt,name=scheme,proto3" json:"scheme,omitempty"`
- // Headers the proxy will pass on to make the request.
- // Allows repeated headers.
- HttpHeaders []*HTTPHeader `protobuf:"bytes,5,rep,name=http_headers,json=httpHeaders,proto3" json:"http_headers,omitempty"`
-}
-
-func (x *HTTPHealthCheckConfig) Reset() {
- *x = HTTPHealthCheckConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPHealthCheckConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPHealthCheckConfig) ProtoMessage() {}
-
-func (x *HTTPHealthCheckConfig) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPHealthCheckConfig.ProtoReflect.Descriptor instead.
-func (*HTTPHealthCheckConfig) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_group_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *HTTPHealthCheckConfig) GetPath() string {
- if x != nil {
- return x.Path
- }
- return ""
-}
-
-func (x *HTTPHealthCheckConfig) GetPort() uint32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-func (x *HTTPHealthCheckConfig) GetHost() string {
- if x != nil {
- return x.Host
- }
- return ""
-}
-
-func (x *HTTPHealthCheckConfig) GetScheme() string {
- if x != nil {
- return x.Scheme
- }
- return ""
-}
-
-func (x *HTTPHealthCheckConfig) GetHttpHeaders() []*HTTPHeader {
- if x != nil {
- return x.HttpHeaders
- }
- return nil
-}
-
-type HTTPHeader struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The header field name
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The header field value
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *HTTPHeader) Reset() {
- *x = HTTPHeader{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HTTPHeader) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HTTPHeader) ProtoMessage() {}
-
-func (x *HTTPHeader) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead.
-func (*HTTPHeader) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_group_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *HTTPHeader) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *HTTPHeader) GetValue() string {
- if x != nil {
- return x.Value
- }
- return ""
-}
-
-type TCPHealthCheckConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Host to connect to, defaults to localhost
- Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
- // Port of host
- Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-}
-
-func (x *TCPHealthCheckConfig) Reset() {
- *x = TCPHealthCheckConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TCPHealthCheckConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TCPHealthCheckConfig) ProtoMessage() {}
-
-func (x *TCPHealthCheckConfig) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TCPHealthCheckConfig.ProtoReflect.Descriptor instead.
-func (*TCPHealthCheckConfig) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_group_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *TCPHealthCheckConfig) GetHost() string {
- if x != nil {
- return x.Host
- }
- return ""
-}
-
-func (x *TCPHealthCheckConfig) GetPort() uint32 {
- if x != nil {
- return x.Port
- }
- return 0
-}
-
-type ExecHealthCheckConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Command to run. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
- Command []string `protobuf:"bytes,1,rep,name=command,proto3" json:"command,omitempty"`
-}
-
-func (x *ExecHealthCheckConfig) Reset() {
- *x = ExecHealthCheckConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ExecHealthCheckConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExecHealthCheckConfig) ProtoMessage() {}
-
-func (x *ExecHealthCheckConfig) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExecHealthCheckConfig.ProtoReflect.Descriptor instead.
-func (*ExecHealthCheckConfig) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_group_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *ExecHealthCheckConfig) GetCommand() []string {
- if x != nil {
- return x.Command
- }
- return nil
-}
-
-// `ObjectMeta` describes metadata that will be attached to a `WorkloadEntry`.
-// It is a subset of the supported Kubernetes metadata.
-type WorkloadGroup_ObjectMeta struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Labels to attach
- Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Annotations to attach
- Annotations map[string]string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *WorkloadGroup_ObjectMeta) Reset() {
- *x = WorkloadGroup_ObjectMeta{}
- if protoimpl.UnsafeEnabled {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WorkloadGroup_ObjectMeta) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WorkloadGroup_ObjectMeta) ProtoMessage() {}
-
-func (x *WorkloadGroup_ObjectMeta) ProtoReflect() protoreflect.Message {
- mi := &file_networking_v1beta1_workload_group_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WorkloadGroup_ObjectMeta.ProtoReflect.Descriptor instead.
-func (*WorkloadGroup_ObjectMeta) Descriptor() ([]byte, []int) {
- return file_networking_v1beta1_workload_group_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *WorkloadGroup_ObjectMeta) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-func (x *WorkloadGroup_ObjectMeta) GetAnnotations() map[string]string {
- if x != nil {
- return x.Annotations
- }
- return nil
-}
-
-var File_networking_v1beta1_workload_group_proto protoreflect.FileDescriptor
-
-var file_networking_v1beta1_workload_group_proto_rawDesc = []byte{
- 0x0a, 0x27, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb3, 0x04,
- 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
- 0x4e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x49, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02,
- 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x70, 0x72,
- 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72,
- 0x6f, 0x62, 0x65, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x1a, 0xc6, 0x02, 0x0a, 0x0a, 0x4f,
- 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x06, 0x6c, 0x61, 0x62,
- 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x73, 0x74, 0x69,
- 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
- 0x73, 0x12, 0x65, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e,
- 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x22, 0xeb, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73,
- 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
- 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65,
- 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69,
- 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f,
- 0x6e, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x72,
- 0x69, 0x6f, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75,
- 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68,
- 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75,
- 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73,
- 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4c, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x67, 0x65, 0x74,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63,
- 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x68, 0x74, 0x74, 0x70, 0x47,
- 0x65, 0x74, 0x12, 0x4f, 0x0a, 0x0a, 0x74, 0x63, 0x70, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x74, 0x63, 0x70, 0x53, 0x6f, 0x63,
- 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x65,
- 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x48, 0x00, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x68, 0x65,
- 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x22, 0xba, 0x01, 0x0a, 0x15, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
- 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70,
- 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12,
- 0x18, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x04, 0xe2,
- 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73,
- 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a,
- 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
- 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65,
- 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x73,
- 0x74, 0x69, 0x6f, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x36,
- 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x54, 0x43, 0x50, 0x48, 0x65, 0x61,
- 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12,
- 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f,
- 0x73, 0x74, 0x12, 0x18, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
- 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x31, 0x0a, 0x15,
- 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42,
- 0x21, 0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f,
- 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_networking_v1beta1_workload_group_proto_rawDescOnce sync.Once
- file_networking_v1beta1_workload_group_proto_rawDescData = file_networking_v1beta1_workload_group_proto_rawDesc
-)
-
-func file_networking_v1beta1_workload_group_proto_rawDescGZIP() []byte {
- file_networking_v1beta1_workload_group_proto_rawDescOnce.Do(func() {
- file_networking_v1beta1_workload_group_proto_rawDescData = protoimpl.X.CompressGZIP(file_networking_v1beta1_workload_group_proto_rawDescData)
- })
- return file_networking_v1beta1_workload_group_proto_rawDescData
-}
-
-var file_networking_v1beta1_workload_group_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_networking_v1beta1_workload_group_proto_goTypes = []interface{}{
- (*WorkloadGroup)(nil), // 0: istio.networking.v1beta1.WorkloadGroup
- (*ReadinessProbe)(nil), // 1: istio.networking.v1beta1.ReadinessProbe
- (*HTTPHealthCheckConfig)(nil), // 2: istio.networking.v1beta1.HTTPHealthCheckConfig
- (*HTTPHeader)(nil), // 3: istio.networking.v1beta1.HTTPHeader
- (*TCPHealthCheckConfig)(nil), // 4: istio.networking.v1beta1.TCPHealthCheckConfig
- (*ExecHealthCheckConfig)(nil), // 5: istio.networking.v1beta1.ExecHealthCheckConfig
- (*WorkloadGroup_ObjectMeta)(nil), // 6: istio.networking.v1beta1.WorkloadGroup.ObjectMeta
- nil, // 7: istio.networking.v1beta1.WorkloadGroup.ObjectMeta.LabelsEntry
- nil, // 8: istio.networking.v1beta1.WorkloadGroup.ObjectMeta.AnnotationsEntry
- (*WorkloadEntry)(nil), // 9: istio.networking.v1beta1.WorkloadEntry
-}
-var file_networking_v1beta1_workload_group_proto_depIdxs = []int32{
- 6, // 0: istio.networking.v1beta1.WorkloadGroup.metadata:type_name -> istio.networking.v1beta1.WorkloadGroup.ObjectMeta
- 9, // 1: istio.networking.v1beta1.WorkloadGroup.template:type_name -> istio.networking.v1beta1.WorkloadEntry
- 1, // 2: istio.networking.v1beta1.WorkloadGroup.probe:type_name -> istio.networking.v1beta1.ReadinessProbe
- 2, // 3: istio.networking.v1beta1.ReadinessProbe.http_get:type_name -> istio.networking.v1beta1.HTTPHealthCheckConfig
- 4, // 4: istio.networking.v1beta1.ReadinessProbe.tcp_socket:type_name -> istio.networking.v1beta1.TCPHealthCheckConfig
- 5, // 5: istio.networking.v1beta1.ReadinessProbe.exec:type_name -> istio.networking.v1beta1.ExecHealthCheckConfig
- 3, // 6: istio.networking.v1beta1.HTTPHealthCheckConfig.http_headers:type_name -> istio.networking.v1beta1.HTTPHeader
- 7, // 7: istio.networking.v1beta1.WorkloadGroup.ObjectMeta.labels:type_name -> istio.networking.v1beta1.WorkloadGroup.ObjectMeta.LabelsEntry
- 8, // 8: istio.networking.v1beta1.WorkloadGroup.ObjectMeta.annotations:type_name -> istio.networking.v1beta1.WorkloadGroup.ObjectMeta.AnnotationsEntry
- 9, // [9:9] is the sub-list for method output_type
- 9, // [9:9] is the sub-list for method input_type
- 9, // [9:9] is the sub-list for extension type_name
- 9, // [9:9] is the sub-list for extension extendee
- 0, // [0:9] is the sub-list for field type_name
-}
-
-func init() { file_networking_v1beta1_workload_group_proto_init() }
-func file_networking_v1beta1_workload_group_proto_init() {
- if File_networking_v1beta1_workload_group_proto != nil {
- return
- }
- file_networking_v1beta1_workload_entry_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_networking_v1beta1_workload_group_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadGroup); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_workload_group_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReadinessProbe); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_workload_group_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPHealthCheckConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_workload_group_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HTTPHeader); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_workload_group_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TCPHealthCheckConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_workload_group_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExecHealthCheckConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_networking_v1beta1_workload_group_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadGroup_ObjectMeta); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_networking_v1beta1_workload_group_proto_msgTypes[1].OneofWrappers = []interface{}{
- (*ReadinessProbe_HttpGet)(nil),
- (*ReadinessProbe_TcpSocket)(nil),
- (*ReadinessProbe_Exec)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_networking_v1beta1_workload_group_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 9,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_networking_v1beta1_workload_group_proto_goTypes,
- DependencyIndexes: file_networking_v1beta1_workload_group_proto_depIdxs,
- MessageInfos: file_networking_v1beta1_workload_group_proto_msgTypes,
- }.Build()
- File_networking_v1beta1_workload_group_proto = out.File
- file_networking_v1beta1_workload_group_proto_rawDesc = nil
- file_networking_v1beta1_workload_group_proto_goTypes = nil
- file_networking_v1beta1_workload_group_proto_depIdxs = nil
-}
diff --git a/gen/proto/openmetrics/prometheus.pb.go b/gen/proto/openmetrics/prometheus.pb.go
deleted file mode 100644
index 81531d4..0000000
--- a/gen/proto/openmetrics/prometheus.pb.go
+++ /dev/null
@@ -1,1834 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: openmetrics/prometheus.proto
-
-// The OpenMetrics protobuf schema which defines the protobuf wire
-// format.
-// Ensure to interpret "required" as semantically required for a valid
-// message.
-// All string fields MUST be UTF-8 encoded strings.
-
-package openmetrics
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// The type of a Metric.
-type MetricType int32
-
-const (
- // Unknown must use unknown MetricPoint values.
- MetricType_UNKNOWN MetricType = 0
- // Gauge must use gauge MetricPoint values.
- MetricType_GAUGE MetricType = 1
- // Counter must use counter MetricPoint values.
- MetricType_COUNTER MetricType = 2
- // State set must use state set MetricPoint values.
- MetricType_STATE_SET MetricType = 3
- // Info must use info MetricPoint values.
- MetricType_INFO MetricType = 4
- // Histogram must use histogram value MetricPoint values.
- MetricType_HISTOGRAM MetricType = 5
- // Gauge histogram must use histogram value MetricPoint values.
- MetricType_GAUGE_HISTOGRAM MetricType = 6
- // Summary quantiles must use summary value MetricPoint values.
- MetricType_SUMMARY MetricType = 7
-)
-
-// Enum value maps for MetricType.
-var (
- MetricType_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "GAUGE",
- 2: "COUNTER",
- 3: "STATE_SET",
- 4: "INFO",
- 5: "HISTOGRAM",
- 6: "GAUGE_HISTOGRAM",
- 7: "SUMMARY",
- }
- MetricType_value = map[string]int32{
- "UNKNOWN": 0,
- "GAUGE": 1,
- "COUNTER": 2,
- "STATE_SET": 3,
- "INFO": 4,
- "HISTOGRAM": 5,
- "GAUGE_HISTOGRAM": 6,
- "SUMMARY": 7,
- }
-)
-
-func (x MetricType) Enum() *MetricType {
- p := new(MetricType)
- *p = x
- return p
-}
-
-func (x MetricType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (MetricType) Descriptor() protoreflect.EnumDescriptor {
- return file_openmetrics_prometheus_proto_enumTypes[0].Descriptor()
-}
-
-func (MetricType) Type() protoreflect.EnumType {
- return &file_openmetrics_prometheus_proto_enumTypes[0]
-}
-
-func (x MetricType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use MetricType.Descriptor instead.
-func (MetricType) EnumDescriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{0}
-}
-
-// The top-level container type that is encoded and sent over the wire.
-type MetricSet struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Each MetricFamily has one or more MetricPoints for a single Metric.
- MetricFamilies []*MetricFamily `protobuf:"bytes,1,rep,name=metric_families,json=metricFamilies,proto3" json:"metric_families,omitempty"`
-}
-
-func (x *MetricSet) Reset() {
- *x = MetricSet{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MetricSet) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MetricSet) ProtoMessage() {}
-
-func (x *MetricSet) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MetricSet.ProtoReflect.Descriptor instead.
-func (*MetricSet) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *MetricSet) GetMetricFamilies() []*MetricFamily {
- if x != nil {
- return x.MetricFamilies
- }
- return nil
-}
-
-// One or more Metrics for a single MetricFamily, where each Metric
-// has one or more MetricPoints.
-type MetricFamily struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional.
- Type MetricType `protobuf:"varint,2,opt,name=type,proto3,enum=openmetrics.MetricType" json:"type,omitempty"`
- // Optional.
- Unit string `protobuf:"bytes,3,opt,name=unit,proto3" json:"unit,omitempty"`
- // Optional.
- Help string `protobuf:"bytes,4,opt,name=help,proto3" json:"help,omitempty"`
- // Optional.
- Metrics []*Metric `protobuf:"bytes,5,rep,name=metrics,proto3" json:"metrics,omitempty"`
-}
-
-func (x *MetricFamily) Reset() {
- *x = MetricFamily{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MetricFamily) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MetricFamily) ProtoMessage() {}
-
-func (x *MetricFamily) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MetricFamily.ProtoReflect.Descriptor instead.
-func (*MetricFamily) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *MetricFamily) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *MetricFamily) GetType() MetricType {
- if x != nil {
- return x.Type
- }
- return MetricType_UNKNOWN
-}
-
-func (x *MetricFamily) GetUnit() string {
- if x != nil {
- return x.Unit
- }
- return ""
-}
-
-func (x *MetricFamily) GetHelp() string {
- if x != nil {
- return x.Help
- }
- return ""
-}
-
-func (x *MetricFamily) GetMetrics() []*Metric {
- if x != nil {
- return x.Metrics
- }
- return nil
-}
-
-// A single metric with a unique set of labels within a metric family.
-type Metric struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional.
- Labels []*Label `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty"`
- // Optional.
- MetricPoints []*MetricPoint `protobuf:"bytes,2,rep,name=metric_points,json=metricPoints,proto3" json:"metric_points,omitempty"`
-}
-
-func (x *Metric) Reset() {
- *x = Metric{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Metric) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Metric) ProtoMessage() {}
-
-func (x *Metric) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Metric.ProtoReflect.Descriptor instead.
-func (*Metric) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Metric) GetLabels() []*Label {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-func (x *Metric) GetMetricPoints() []*MetricPoint {
- if x != nil {
- return x.MetricPoints
- }
- return nil
-}
-
-// A name-value pair. These are used in multiple places: identifying
-// timeseries, value of INFO metrics, and exemplars in Histograms.
-type Label struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Required.
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Label) Reset() {
- *x = Label{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Label) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Label) ProtoMessage() {}
-
-func (x *Label) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Label.ProtoReflect.Descriptor instead.
-func (*Label) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Label) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Label) GetValue() string {
- if x != nil {
- return x.Value
- }
- return ""
-}
-
-// A MetricPoint in a Metric.
-type MetricPoint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- //
- // Types that are assignable to Value:
- // *MetricPoint_UnknownValue
- // *MetricPoint_GaugeValue
- // *MetricPoint_CounterValue
- // *MetricPoint_HistogramValue
- // *MetricPoint_StateSetValue
- // *MetricPoint_InfoValue
- // *MetricPoint_SummaryValue
- Value isMetricPoint_Value `protobuf_oneof:"value"`
- // Optional.
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-}
-
-func (x *MetricPoint) Reset() {
- *x = MetricPoint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MetricPoint) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MetricPoint) ProtoMessage() {}
-
-func (x *MetricPoint) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MetricPoint.ProtoReflect.Descriptor instead.
-func (*MetricPoint) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{4}
-}
-
-func (m *MetricPoint) GetValue() isMetricPoint_Value {
- if m != nil {
- return m.Value
- }
- return nil
-}
-
-func (x *MetricPoint) GetUnknownValue() *UnknownValue {
- if x, ok := x.GetValue().(*MetricPoint_UnknownValue); ok {
- return x.UnknownValue
- }
- return nil
-}
-
-func (x *MetricPoint) GetGaugeValue() *GaugeValue {
- if x, ok := x.GetValue().(*MetricPoint_GaugeValue); ok {
- return x.GaugeValue
- }
- return nil
-}
-
-func (x *MetricPoint) GetCounterValue() *CounterValue {
- if x, ok := x.GetValue().(*MetricPoint_CounterValue); ok {
- return x.CounterValue
- }
- return nil
-}
-
-func (x *MetricPoint) GetHistogramValue() *HistogramValue {
- if x, ok := x.GetValue().(*MetricPoint_HistogramValue); ok {
- return x.HistogramValue
- }
- return nil
-}
-
-func (x *MetricPoint) GetStateSetValue() *StateSetValue {
- if x, ok := x.GetValue().(*MetricPoint_StateSetValue); ok {
- return x.StateSetValue
- }
- return nil
-}
-
-func (x *MetricPoint) GetInfoValue() *InfoValue {
- if x, ok := x.GetValue().(*MetricPoint_InfoValue); ok {
- return x.InfoValue
- }
- return nil
-}
-
-func (x *MetricPoint) GetSummaryValue() *SummaryValue {
- if x, ok := x.GetValue().(*MetricPoint_SummaryValue); ok {
- return x.SummaryValue
- }
- return nil
-}
-
-func (x *MetricPoint) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
- }
- return nil
-}
-
-type isMetricPoint_Value interface {
- isMetricPoint_Value()
-}
-
-type MetricPoint_UnknownValue struct {
- UnknownValue *UnknownValue `protobuf:"bytes,1,opt,name=unknown_value,json=unknownValue,proto3,oneof"`
-}
-
-type MetricPoint_GaugeValue struct {
- GaugeValue *GaugeValue `protobuf:"bytes,2,opt,name=gauge_value,json=gaugeValue,proto3,oneof"`
-}
-
-type MetricPoint_CounterValue struct {
- CounterValue *CounterValue `protobuf:"bytes,3,opt,name=counter_value,json=counterValue,proto3,oneof"`
-}
-
-type MetricPoint_HistogramValue struct {
- HistogramValue *HistogramValue `protobuf:"bytes,4,opt,name=histogram_value,json=histogramValue,proto3,oneof"`
-}
-
-type MetricPoint_StateSetValue struct {
- StateSetValue *StateSetValue `protobuf:"bytes,5,opt,name=state_set_value,json=stateSetValue,proto3,oneof"`
-}
-
-type MetricPoint_InfoValue struct {
- InfoValue *InfoValue `protobuf:"bytes,6,opt,name=info_value,json=infoValue,proto3,oneof"`
-}
-
-type MetricPoint_SummaryValue struct {
- SummaryValue *SummaryValue `protobuf:"bytes,7,opt,name=summary_value,json=summaryValue,proto3,oneof"`
-}
-
-func (*MetricPoint_UnknownValue) isMetricPoint_Value() {}
-
-func (*MetricPoint_GaugeValue) isMetricPoint_Value() {}
-
-func (*MetricPoint_CounterValue) isMetricPoint_Value() {}
-
-func (*MetricPoint_HistogramValue) isMetricPoint_Value() {}
-
-func (*MetricPoint_StateSetValue) isMetricPoint_Value() {}
-
-func (*MetricPoint_InfoValue) isMetricPoint_Value() {}
-
-func (*MetricPoint_SummaryValue) isMetricPoint_Value() {}
-
-// Value for UNKNOWN MetricPoint.
-type UnknownValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- //
- // Types that are assignable to Value:
- // *UnknownValue_DoubleValue
- // *UnknownValue_IntValue
- Value isUnknownValue_Value `protobuf_oneof:"value"`
-}
-
-func (x *UnknownValue) Reset() {
- *x = UnknownValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UnknownValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UnknownValue) ProtoMessage() {}
-
-func (x *UnknownValue) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UnknownValue.ProtoReflect.Descriptor instead.
-func (*UnknownValue) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{5}
-}
-
-func (m *UnknownValue) GetValue() isUnknownValue_Value {
- if m != nil {
- return m.Value
- }
- return nil
-}
-
-func (x *UnknownValue) GetDoubleValue() float64 {
- if x, ok := x.GetValue().(*UnknownValue_DoubleValue); ok {
- return x.DoubleValue
- }
- return 0
-}
-
-func (x *UnknownValue) GetIntValue() int64 {
- if x, ok := x.GetValue().(*UnknownValue_IntValue); ok {
- return x.IntValue
- }
- return 0
-}
-
-type isUnknownValue_Value interface {
- isUnknownValue_Value()
-}
-
-type UnknownValue_DoubleValue struct {
- DoubleValue float64 `protobuf:"fixed64,1,opt,name=double_value,json=doubleValue,proto3,oneof"`
-}
-
-type UnknownValue_IntValue struct {
- IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,proto3,oneof"`
-}
-
-func (*UnknownValue_DoubleValue) isUnknownValue_Value() {}
-
-func (*UnknownValue_IntValue) isUnknownValue_Value() {}
-
-// Value for GAUGE MetricPoint.
-type GaugeValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- //
- // Types that are assignable to Value:
- // *GaugeValue_DoubleValue
- // *GaugeValue_IntValue
- Value isGaugeValue_Value `protobuf_oneof:"value"`
-}
-
-func (x *GaugeValue) Reset() {
- *x = GaugeValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GaugeValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GaugeValue) ProtoMessage() {}
-
-func (x *GaugeValue) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GaugeValue.ProtoReflect.Descriptor instead.
-func (*GaugeValue) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{6}
-}
-
-func (m *GaugeValue) GetValue() isGaugeValue_Value {
- if m != nil {
- return m.Value
- }
- return nil
-}
-
-func (x *GaugeValue) GetDoubleValue() float64 {
- if x, ok := x.GetValue().(*GaugeValue_DoubleValue); ok {
- return x.DoubleValue
- }
- return 0
-}
-
-func (x *GaugeValue) GetIntValue() int64 {
- if x, ok := x.GetValue().(*GaugeValue_IntValue); ok {
- return x.IntValue
- }
- return 0
-}
-
-type isGaugeValue_Value interface {
- isGaugeValue_Value()
-}
-
-type GaugeValue_DoubleValue struct {
- DoubleValue float64 `protobuf:"fixed64,1,opt,name=double_value,json=doubleValue,proto3,oneof"`
-}
-
-type GaugeValue_IntValue struct {
- IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,proto3,oneof"`
-}
-
-func (*GaugeValue_DoubleValue) isGaugeValue_Value() {}
-
-func (*GaugeValue_IntValue) isGaugeValue_Value() {}
-
-// Value for COUNTER MetricPoint.
-type CounterValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- //
- // Types that are assignable to Total:
- // *CounterValue_DoubleValue
- // *CounterValue_IntValue
- Total isCounterValue_Total `protobuf_oneof:"total"`
- // The time values began being collected for this counter.
- // Optional.
- Created *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created,proto3" json:"created,omitempty"`
- // Optional.
- Exemplar *Exemplar `protobuf:"bytes,4,opt,name=exemplar,proto3" json:"exemplar,omitempty"`
-}
-
-func (x *CounterValue) Reset() {
- *x = CounterValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CounterValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CounterValue) ProtoMessage() {}
-
-func (x *CounterValue) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CounterValue.ProtoReflect.Descriptor instead.
-func (*CounterValue) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{7}
-}
-
-func (m *CounterValue) GetTotal() isCounterValue_Total {
- if m != nil {
- return m.Total
- }
- return nil
-}
-
-func (x *CounterValue) GetDoubleValue() float64 {
- if x, ok := x.GetTotal().(*CounterValue_DoubleValue); ok {
- return x.DoubleValue
- }
- return 0
-}
-
-func (x *CounterValue) GetIntValue() uint64 {
- if x, ok := x.GetTotal().(*CounterValue_IntValue); ok {
- return x.IntValue
- }
- return 0
-}
-
-func (x *CounterValue) GetCreated() *timestamppb.Timestamp {
- if x != nil {
- return x.Created
- }
- return nil
-}
-
-func (x *CounterValue) GetExemplar() *Exemplar {
- if x != nil {
- return x.Exemplar
- }
- return nil
-}
-
-type isCounterValue_Total interface {
- isCounterValue_Total()
-}
-
-type CounterValue_DoubleValue struct {
- DoubleValue float64 `protobuf:"fixed64,1,opt,name=double_value,json=doubleValue,proto3,oneof"`
-}
-
-type CounterValue_IntValue struct {
- IntValue uint64 `protobuf:"varint,2,opt,name=int_value,json=intValue,proto3,oneof"`
-}
-
-func (*CounterValue_DoubleValue) isCounterValue_Total() {}
-
-func (*CounterValue_IntValue) isCounterValue_Total() {}
-
-// Value for HISTOGRAM or GAUGE_HISTOGRAM MetricPoint.
-type HistogramValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional.
- //
- // Types that are assignable to Sum:
- // *HistogramValue_DoubleValue
- // *HistogramValue_IntValue
- Sum isHistogramValue_Sum `protobuf_oneof:"sum"`
- // Optional.
- Count uint64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
- // The time values began being collected for this histogram.
- // Optional.
- Created *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created,proto3" json:"created,omitempty"`
- // Optional.
- Buckets []*HistogramValue_Bucket `protobuf:"bytes,5,rep,name=buckets,proto3" json:"buckets,omitempty"`
-}
-
-func (x *HistogramValue) Reset() {
- *x = HistogramValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HistogramValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HistogramValue) ProtoMessage() {}
-
-func (x *HistogramValue) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HistogramValue.ProtoReflect.Descriptor instead.
-func (*HistogramValue) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{8}
-}
-
-func (m *HistogramValue) GetSum() isHistogramValue_Sum {
- if m != nil {
- return m.Sum
- }
- return nil
-}
-
-func (x *HistogramValue) GetDoubleValue() float64 {
- if x, ok := x.GetSum().(*HistogramValue_DoubleValue); ok {
- return x.DoubleValue
- }
- return 0
-}
-
-func (x *HistogramValue) GetIntValue() int64 {
- if x, ok := x.GetSum().(*HistogramValue_IntValue); ok {
- return x.IntValue
- }
- return 0
-}
-
-func (x *HistogramValue) GetCount() uint64 {
- if x != nil {
- return x.Count
- }
- return 0
-}
-
-func (x *HistogramValue) GetCreated() *timestamppb.Timestamp {
- if x != nil {
- return x.Created
- }
- return nil
-}
-
-func (x *HistogramValue) GetBuckets() []*HistogramValue_Bucket {
- if x != nil {
- return x.Buckets
- }
- return nil
-}
-
-type isHistogramValue_Sum interface {
- isHistogramValue_Sum()
-}
-
-type HistogramValue_DoubleValue struct {
- DoubleValue float64 `protobuf:"fixed64,1,opt,name=double_value,json=doubleValue,proto3,oneof"`
-}
-
-type HistogramValue_IntValue struct {
- IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,proto3,oneof"`
-}
-
-func (*HistogramValue_DoubleValue) isHistogramValue_Sum() {}
-
-func (*HistogramValue_IntValue) isHistogramValue_Sum() {}
-
-type Exemplar struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
- // Optional.
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- // Labels are additional information about the exemplar value
- // (e.g. trace id).
- // Optional.
- Label []*Label `protobuf:"bytes,3,rep,name=label,proto3" json:"label,omitempty"`
-}
-
-func (x *Exemplar) Reset() {
- *x = Exemplar{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Exemplar) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Exemplar) ProtoMessage() {}
-
-func (x *Exemplar) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Exemplar.ProtoReflect.Descriptor instead.
-func (*Exemplar) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Exemplar) GetValue() float64 {
- if x != nil {
- return x.Value
- }
- return 0
-}
-
-func (x *Exemplar) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
- }
- return nil
-}
-
-func (x *Exemplar) GetLabel() []*Label {
- if x != nil {
- return x.Label
- }
- return nil
-}
-
-// Value for STATE_SET MetricPoint.
-type StateSetValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional.
- States []*StateSetValue_State `protobuf:"bytes,1,rep,name=states,proto3" json:"states,omitempty"`
-}
-
-func (x *StateSetValue) Reset() {
- *x = StateSetValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StateSetValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StateSetValue) ProtoMessage() {}
-
-func (x *StateSetValue) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StateSetValue.ProtoReflect.Descriptor instead.
-func (*StateSetValue) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *StateSetValue) GetStates() []*StateSetValue_State {
- if x != nil {
- return x.States
- }
- return nil
-}
-
-// Value for INFO MetricPoint.
-type InfoValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional.
- Info []*Label `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"`
-}
-
-func (x *InfoValue) Reset() {
- *x = InfoValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *InfoValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*InfoValue) ProtoMessage() {}
-
-func (x *InfoValue) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use InfoValue.ProtoReflect.Descriptor instead.
-func (*InfoValue) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *InfoValue) GetInfo() []*Label {
- if x != nil {
- return x.Info
- }
- return nil
-}
-
-// Value for SUMMARY MetricPoint.
-type SummaryValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Optional.
- //
- // Types that are assignable to Sum:
- // *SummaryValue_DoubleValue
- // *SummaryValue_IntValue
- Sum isSummaryValue_Sum `protobuf_oneof:"sum"`
- // Optional.
- Count uint64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
- // The time sum and count values began being collected for this summary.
- // Optional.
- Created *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created,proto3" json:"created,omitempty"`
- // Optional.
- Quantile []*SummaryValue_Quantile `protobuf:"bytes,5,rep,name=quantile,proto3" json:"quantile,omitempty"`
-}
-
-func (x *SummaryValue) Reset() {
- *x = SummaryValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SummaryValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SummaryValue) ProtoMessage() {}
-
-func (x *SummaryValue) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SummaryValue.ProtoReflect.Descriptor instead.
-func (*SummaryValue) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{12}
-}
-
-func (m *SummaryValue) GetSum() isSummaryValue_Sum {
- if m != nil {
- return m.Sum
- }
- return nil
-}
-
-func (x *SummaryValue) GetDoubleValue() float64 {
- if x, ok := x.GetSum().(*SummaryValue_DoubleValue); ok {
- return x.DoubleValue
- }
- return 0
-}
-
-func (x *SummaryValue) GetIntValue() int64 {
- if x, ok := x.GetSum().(*SummaryValue_IntValue); ok {
- return x.IntValue
- }
- return 0
-}
-
-func (x *SummaryValue) GetCount() uint64 {
- if x != nil {
- return x.Count
- }
- return 0
-}
-
-func (x *SummaryValue) GetCreated() *timestamppb.Timestamp {
- if x != nil {
- return x.Created
- }
- return nil
-}
-
-func (x *SummaryValue) GetQuantile() []*SummaryValue_Quantile {
- if x != nil {
- return x.Quantile
- }
- return nil
-}
-
-type isSummaryValue_Sum interface {
- isSummaryValue_Sum()
-}
-
-type SummaryValue_DoubleValue struct {
- DoubleValue float64 `protobuf:"fixed64,1,opt,name=double_value,json=doubleValue,proto3,oneof"`
-}
-
-type SummaryValue_IntValue struct {
- IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,proto3,oneof"`
-}
-
-func (*SummaryValue_DoubleValue) isSummaryValue_Sum() {}
-
-func (*SummaryValue_IntValue) isSummaryValue_Sum() {}
-
-// Bucket is the number of values for a bucket in the histogram
-// with an optional exemplar.
-type HistogramValue_Bucket struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
- // Optional.
- UpperBound float64 `protobuf:"fixed64,2,opt,name=upper_bound,json=upperBound,proto3" json:"upper_bound,omitempty"`
- // Optional.
- Exemplar *Exemplar `protobuf:"bytes,3,opt,name=exemplar,proto3" json:"exemplar,omitempty"`
-}
-
-func (x *HistogramValue_Bucket) Reset() {
- *x = HistogramValue_Bucket{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HistogramValue_Bucket) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HistogramValue_Bucket) ProtoMessage() {}
-
-func (x *HistogramValue_Bucket) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HistogramValue_Bucket.ProtoReflect.Descriptor instead.
-func (*HistogramValue_Bucket) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{8, 0}
-}
-
-func (x *HistogramValue_Bucket) GetCount() uint64 {
- if x != nil {
- return x.Count
- }
- return 0
-}
-
-func (x *HistogramValue_Bucket) GetUpperBound() float64 {
- if x != nil {
- return x.UpperBound
- }
- return 0
-}
-
-func (x *HistogramValue_Bucket) GetExemplar() *Exemplar {
- if x != nil {
- return x.Exemplar
- }
- return nil
-}
-
-type StateSetValue_State struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
- // Required.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *StateSetValue_State) Reset() {
- *x = StateSetValue_State{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StateSetValue_State) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StateSetValue_State) ProtoMessage() {}
-
-func (x *StateSetValue_State) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StateSetValue_State.ProtoReflect.Descriptor instead.
-func (*StateSetValue_State) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{10, 0}
-}
-
-func (x *StateSetValue_State) GetEnabled() bool {
- if x != nil {
- return x.Enabled
- }
- return false
-}
-
-func (x *StateSetValue_State) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-type SummaryValue_Quantile struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required.
- Quantile float64 `protobuf:"fixed64,1,opt,name=quantile,proto3" json:"quantile,omitempty"`
- // Required.
- Value float64 `protobuf:"fixed64,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *SummaryValue_Quantile) Reset() {
- *x = SummaryValue_Quantile{}
- if protoimpl.UnsafeEnabled {
- mi := &file_openmetrics_prometheus_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SummaryValue_Quantile) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SummaryValue_Quantile) ProtoMessage() {}
-
-func (x *SummaryValue_Quantile) ProtoReflect() protoreflect.Message {
- mi := &file_openmetrics_prometheus_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SummaryValue_Quantile.ProtoReflect.Descriptor instead.
-func (*SummaryValue_Quantile) Descriptor() ([]byte, []int) {
- return file_openmetrics_prometheus_proto_rawDescGZIP(), []int{12, 0}
-}
-
-func (x *SummaryValue_Quantile) GetQuantile() float64 {
- if x != nil {
- return x.Quantile
- }
- return 0
-}
-
-func (x *SummaryValue_Quantile) GetValue() float64 {
- if x != nil {
- return x.Value
- }
- return 0
-}
-
-var File_openmetrics_prometheus_proto protoreflect.FileDescriptor
-
-var file_openmetrics_prometheus_proto_rawDesc = []byte{
- 0x0a, 0x1c, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x70, 0x72,
- 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b,
- 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4f, 0x0a, 0x09,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x0e, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x22, 0xa6, 0x01,
- 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
- 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75,
- 0x6e, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x2d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x73, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x12, 0x2a, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0d,
- 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0c, 0x6d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x31, 0x0a, 0x05, 0x4c,
- 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x99,
- 0x04, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x40,
- 0x0a, 0x0d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x48, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x12, 0x3a, 0x0a, 0x0b, 0x67, 0x61, 0x75, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x2e, 0x47, 0x61, 0x75, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00,
- 0x52, 0x0a, 0x67, 0x61, 0x75, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x0d,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00,
- 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46,
- 0x0a, 0x0f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61,
- 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f,
- 0x73, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74,
- 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x73,
- 0x74, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x0a,
- 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x49,
- 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
- 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f,
- 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61,
- 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x6d, 0x61,
- 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5b, 0x0a, 0x0c, 0x55, 0x6e,
- 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f,
- 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01,
- 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
- 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x59, 0x0a, 0x0a, 0x47, 0x61, 0x75, 0x67, 0x65,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64,
- 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e,
- 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52,
- 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75,
- 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x69,
- 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x31, 0x0a,
- 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x45, 0x78,
- 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x52, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72,
- 0x42, 0x07, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xd9, 0x02, 0x0a, 0x0e, 0x48, 0x69,
- 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c,
- 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x07,
- 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e,
- 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x48, 0x69, 0x73, 0x74,
- 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65,
- 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x72, 0x0a, 0x06, 0x42, 0x75,
- 0x63, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70,
- 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x65,
- 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
- 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x6d,
- 0x70, 0x6c, 0x61, 0x72, 0x52, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x42, 0x05,
- 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x22, 0x84, 0x01, 0x0a, 0x08, 0x45, 0x78, 0x65, 0x6d, 0x70, 0x6c,
- 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
- 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x80, 0x01, 0x0a,
- 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38,
- 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
- 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x53, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
- 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
- 0x33, 0x0a, 0x09, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x04,
- 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x70, 0x65,
- 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x04,
- 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xa3, 0x02, 0x0a, 0x0c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64,
- 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e,
- 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52,
- 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
- 0x34, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x6d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x08, 0x71, 0x75, 0x61,
- 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x1a, 0x3c, 0x0a, 0x08, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c,
- 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x2a, 0x7b, 0x0a, 0x0a, 0x4d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
- 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x41, 0x55, 0x47, 0x45, 0x10, 0x01,
- 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0d, 0x0a,
- 0x09, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04,
- 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47,
- 0x52, 0x41, 0x4d, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x47, 0x41, 0x55, 0x47, 0x45, 0x5f, 0x48,
- 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55,
- 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x07, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
- 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x75, 0x67,
- 0x61, 0x74, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f, 0x70,
- 0x65, 0x6e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
-}
-
-var (
- file_openmetrics_prometheus_proto_rawDescOnce sync.Once
- file_openmetrics_prometheus_proto_rawDescData = file_openmetrics_prometheus_proto_rawDesc
-)
-
-func file_openmetrics_prometheus_proto_rawDescGZIP() []byte {
- file_openmetrics_prometheus_proto_rawDescOnce.Do(func() {
- file_openmetrics_prometheus_proto_rawDescData = protoimpl.X.CompressGZIP(file_openmetrics_prometheus_proto_rawDescData)
- })
- return file_openmetrics_prometheus_proto_rawDescData
-}
-
-var file_openmetrics_prometheus_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_openmetrics_prometheus_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
-var file_openmetrics_prometheus_proto_goTypes = []interface{}{
- (MetricType)(0), // 0: openmetrics.MetricType
- (*MetricSet)(nil), // 1: openmetrics.MetricSet
- (*MetricFamily)(nil), // 2: openmetrics.MetricFamily
- (*Metric)(nil), // 3: openmetrics.Metric
- (*Label)(nil), // 4: openmetrics.Label
- (*MetricPoint)(nil), // 5: openmetrics.MetricPoint
- (*UnknownValue)(nil), // 6: openmetrics.UnknownValue
- (*GaugeValue)(nil), // 7: openmetrics.GaugeValue
- (*CounterValue)(nil), // 8: openmetrics.CounterValue
- (*HistogramValue)(nil), // 9: openmetrics.HistogramValue
- (*Exemplar)(nil), // 10: openmetrics.Exemplar
- (*StateSetValue)(nil), // 11: openmetrics.StateSetValue
- (*InfoValue)(nil), // 12: openmetrics.InfoValue
- (*SummaryValue)(nil), // 13: openmetrics.SummaryValue
- (*HistogramValue_Bucket)(nil), // 14: openmetrics.HistogramValue.Bucket
- (*StateSetValue_State)(nil), // 15: openmetrics.StateSetValue.State
- (*SummaryValue_Quantile)(nil), // 16: openmetrics.SummaryValue.Quantile
- (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp
-}
-var file_openmetrics_prometheus_proto_depIdxs = []int32{
- 2, // 0: openmetrics.MetricSet.metric_families:type_name -> openmetrics.MetricFamily
- 0, // 1: openmetrics.MetricFamily.type:type_name -> openmetrics.MetricType
- 3, // 2: openmetrics.MetricFamily.metrics:type_name -> openmetrics.Metric
- 4, // 3: openmetrics.Metric.labels:type_name -> openmetrics.Label
- 5, // 4: openmetrics.Metric.metric_points:type_name -> openmetrics.MetricPoint
- 6, // 5: openmetrics.MetricPoint.unknown_value:type_name -> openmetrics.UnknownValue
- 7, // 6: openmetrics.MetricPoint.gauge_value:type_name -> openmetrics.GaugeValue
- 8, // 7: openmetrics.MetricPoint.counter_value:type_name -> openmetrics.CounterValue
- 9, // 8: openmetrics.MetricPoint.histogram_value:type_name -> openmetrics.HistogramValue
- 11, // 9: openmetrics.MetricPoint.state_set_value:type_name -> openmetrics.StateSetValue
- 12, // 10: openmetrics.MetricPoint.info_value:type_name -> openmetrics.InfoValue
- 13, // 11: openmetrics.MetricPoint.summary_value:type_name -> openmetrics.SummaryValue
- 17, // 12: openmetrics.MetricPoint.timestamp:type_name -> google.protobuf.Timestamp
- 17, // 13: openmetrics.CounterValue.created:type_name -> google.protobuf.Timestamp
- 10, // 14: openmetrics.CounterValue.exemplar:type_name -> openmetrics.Exemplar
- 17, // 15: openmetrics.HistogramValue.created:type_name -> google.protobuf.Timestamp
- 14, // 16: openmetrics.HistogramValue.buckets:type_name -> openmetrics.HistogramValue.Bucket
- 17, // 17: openmetrics.Exemplar.timestamp:type_name -> google.protobuf.Timestamp
- 4, // 18: openmetrics.Exemplar.label:type_name -> openmetrics.Label
- 15, // 19: openmetrics.StateSetValue.states:type_name -> openmetrics.StateSetValue.State
- 4, // 20: openmetrics.InfoValue.info:type_name -> openmetrics.Label
- 17, // 21: openmetrics.SummaryValue.created:type_name -> google.protobuf.Timestamp
- 16, // 22: openmetrics.SummaryValue.quantile:type_name -> openmetrics.SummaryValue.Quantile
- 10, // 23: openmetrics.HistogramValue.Bucket.exemplar:type_name -> openmetrics.Exemplar
- 24, // [24:24] is the sub-list for method output_type
- 24, // [24:24] is the sub-list for method input_type
- 24, // [24:24] is the sub-list for extension type_name
- 24, // [24:24] is the sub-list for extension extendee
- 0, // [0:24] is the sub-list for field type_name
-}
-
-func init() { file_openmetrics_prometheus_proto_init() }
-func file_openmetrics_prometheus_proto_init() {
- if File_openmetrics_prometheus_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_openmetrics_prometheus_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MetricSet); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MetricFamily); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Metric); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Label); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MetricPoint); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UnknownValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GaugeValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CounterValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistogramValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Exemplar); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StateSetValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InfoValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SummaryValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HistogramValue_Bucket); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StateSetValue_State); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SummaryValue_Quantile); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_openmetrics_prometheus_proto_msgTypes[4].OneofWrappers = []interface{}{
- (*MetricPoint_UnknownValue)(nil),
- (*MetricPoint_GaugeValue)(nil),
- (*MetricPoint_CounterValue)(nil),
- (*MetricPoint_HistogramValue)(nil),
- (*MetricPoint_StateSetValue)(nil),
- (*MetricPoint_InfoValue)(nil),
- (*MetricPoint_SummaryValue)(nil),
- }
- file_openmetrics_prometheus_proto_msgTypes[5].OneofWrappers = []interface{}{
- (*UnknownValue_DoubleValue)(nil),
- (*UnknownValue_IntValue)(nil),
- }
- file_openmetrics_prometheus_proto_msgTypes[6].OneofWrappers = []interface{}{
- (*GaugeValue_DoubleValue)(nil),
- (*GaugeValue_IntValue)(nil),
- }
- file_openmetrics_prometheus_proto_msgTypes[7].OneofWrappers = []interface{}{
- (*CounterValue_DoubleValue)(nil),
- (*CounterValue_IntValue)(nil),
- }
- file_openmetrics_prometheus_proto_msgTypes[8].OneofWrappers = []interface{}{
- (*HistogramValue_DoubleValue)(nil),
- (*HistogramValue_IntValue)(nil),
- }
- file_openmetrics_prometheus_proto_msgTypes[12].OneofWrappers = []interface{}{
- (*SummaryValue_DoubleValue)(nil),
- (*SummaryValue_IntValue)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_openmetrics_prometheus_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 16,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_openmetrics_prometheus_proto_goTypes,
- DependencyIndexes: file_openmetrics_prometheus_proto_depIdxs,
- EnumInfos: file_openmetrics_prometheus_proto_enumTypes,
- MessageInfos: file_openmetrics_prometheus_proto_msgTypes,
- }.Build()
- File_openmetrics_prometheus_proto = out.File
- file_openmetrics_prometheus_proto_rawDesc = nil
- file_openmetrics_prometheus_proto_goTypes = nil
- file_openmetrics_prometheus_proto_depIdxs = nil
-}
diff --git a/gen/proto/proto/echo.pb.go b/gen/proto/proto/echo.pb.go
deleted file mode 100644
index 23a3cf5..0000000
--- a/gen/proto/proto/echo.pb.go
+++ /dev/null
@@ -1,712 +0,0 @@
-// Copyright Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: proto/echo.proto
-
-// Generate with protoc --go_out=. echo.proto -I /work/common-protos/ -I.
-
-package proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type EchoRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
-}
-
-func (x *EchoRequest) Reset() {
- *x = EchoRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_proto_echo_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *EchoRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EchoRequest) ProtoMessage() {}
-
-func (x *EchoRequest) ProtoReflect() protoreflect.Message {
- mi := &file_proto_echo_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use EchoRequest.ProtoReflect.Descriptor instead.
-func (*EchoRequest) Descriptor() ([]byte, []int) {
- return file_proto_echo_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *EchoRequest) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-type EchoResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
-}
-
-func (x *EchoResponse) Reset() {
- *x = EchoResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_proto_echo_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *EchoResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EchoResponse) ProtoMessage() {}
-
-func (x *EchoResponse) ProtoReflect() protoreflect.Message {
- mi := &file_proto_echo_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use EchoResponse.ProtoReflect.Descriptor instead.
-func (*EchoResponse) Descriptor() ([]byte, []int) {
- return file_proto_echo_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *EchoResponse) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-type Header struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Header) Reset() {
- *x = Header{}
- if protoimpl.UnsafeEnabled {
- mi := &file_proto_echo_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Header) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Header) ProtoMessage() {}
-
-func (x *Header) ProtoReflect() protoreflect.Message {
- mi := &file_proto_echo_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Header.ProtoReflect.Descriptor instead.
-func (*Header) Descriptor() ([]byte, []int) {
- return file_proto_echo_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Header) GetKey() string {
- if x != nil {
- return x.Key
- }
- return ""
-}
-
-func (x *Header) GetValue() string {
- if x != nil {
- return x.Value
- }
- return ""
-}
-
-type ForwardEchoRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
- Qps int32 `protobuf:"varint,2,opt,name=qps,proto3" json:"qps,omitempty"`
- TimeoutMicros int64 `protobuf:"varint,3,opt,name=timeout_micros,json=timeoutMicros,proto3" json:"timeout_micros,omitempty"`
- Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
- Headers []*Header `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty"`
- Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"`
- // Method for the request. Valid only for HTTP
- Method string `protobuf:"bytes,9,opt,name=method,proto3" json:"method,omitempty"`
- // If true, requests will be sent using h2c prior knowledge
- Http2 bool `protobuf:"varint,7,opt,name=http2,proto3" json:"http2,omitempty"`
- // If true, requests will be sent using http3
- Http3 bool `protobuf:"varint,15,opt,name=http3,proto3" json:"http3,omitempty"`
- // If true, requests will not be sent until magic string is received
- ServerFirst bool `protobuf:"varint,8,opt,name=serverFirst,proto3" json:"serverFirst,omitempty"`
- // If true, 301 redirects will be followed
- FollowRedirects bool `protobuf:"varint,14,opt,name=followRedirects,proto3" json:"followRedirects,omitempty"`
- // If non-empty, make the request with the corresponding cert and key.
- Cert string `protobuf:"bytes,10,opt,name=cert,proto3" json:"cert,omitempty"`
- Key string `protobuf:"bytes,11,opt,name=key,proto3" json:"key,omitempty"`
- // If non-empty, verify the server CA
- CaCert string `protobuf:"bytes,12,opt,name=caCert,proto3" json:"caCert,omitempty"`
- // If non-empty, make the request with the corresponding cert and key file.
- CertFile string `protobuf:"bytes,16,opt,name=certFile,proto3" json:"certFile,omitempty"`
- KeyFile string `protobuf:"bytes,17,opt,name=keyFile,proto3" json:"keyFile,omitempty"`
- // If non-empty, verify the server CA with the ca cert file.
- CaCertFile string `protobuf:"bytes,18,opt,name=caCertFile,proto3" json:"caCertFile,omitempty"`
- // Skip verifying peer's certificate.
- InsecureSkipVerify bool `protobuf:"varint,19,opt,name=insecureSkipVerify,proto3" json:"insecureSkipVerify,omitempty"`
- // List of ALPNs to present. If not set, this will be automatically be set based on the protocol
- Alpn *Alpn `protobuf:"bytes,13,opt,name=alpn,proto3" json:"alpn,omitempty"`
- // Server name (SNI) to present in TLS connections. If not set, Host will be used for http requests.
- ServerName string `protobuf:"bytes,20,opt,name=serverName,proto3" json:"serverName,omitempty"`
- // Expected response determines what string to look for in the response to validate TCP requests succeeded.
- // If not set, defaults to "StatusCode=200"
- ExpectedResponse *wrapperspb.StringValue `protobuf:"bytes,21,opt,name=expectedResponse,proto3" json:"expectedResponse,omitempty"`
-}
-
-func (x *ForwardEchoRequest) Reset() {
- *x = ForwardEchoRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_proto_echo_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ForwardEchoRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ForwardEchoRequest) ProtoMessage() {}
-
-func (x *ForwardEchoRequest) ProtoReflect() protoreflect.Message {
- mi := &file_proto_echo_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ForwardEchoRequest.ProtoReflect.Descriptor instead.
-func (*ForwardEchoRequest) Descriptor() ([]byte, []int) {
- return file_proto_echo_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ForwardEchoRequest) GetCount() int32 {
- if x != nil {
- return x.Count
- }
- return 0
-}
-
-func (x *ForwardEchoRequest) GetQps() int32 {
- if x != nil {
- return x.Qps
- }
- return 0
-}
-
-func (x *ForwardEchoRequest) GetTimeoutMicros() int64 {
- if x != nil {
- return x.TimeoutMicros
- }
- return 0
-}
-
-func (x *ForwardEchoRequest) GetUrl() string {
- if x != nil {
- return x.Url
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetHeaders() []*Header {
- if x != nil {
- return x.Headers
- }
- return nil
-}
-
-func (x *ForwardEchoRequest) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetMethod() string {
- if x != nil {
- return x.Method
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetHttp2() bool {
- if x != nil {
- return x.Http2
- }
- return false
-}
-
-func (x *ForwardEchoRequest) GetHttp3() bool {
- if x != nil {
- return x.Http3
- }
- return false
-}
-
-func (x *ForwardEchoRequest) GetServerFirst() bool {
- if x != nil {
- return x.ServerFirst
- }
- return false
-}
-
-func (x *ForwardEchoRequest) GetFollowRedirects() bool {
- if x != nil {
- return x.FollowRedirects
- }
- return false
-}
-
-func (x *ForwardEchoRequest) GetCert() string {
- if x != nil {
- return x.Cert
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetKey() string {
- if x != nil {
- return x.Key
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetCaCert() string {
- if x != nil {
- return x.CaCert
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetCertFile() string {
- if x != nil {
- return x.CertFile
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetKeyFile() string {
- if x != nil {
- return x.KeyFile
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetCaCertFile() string {
- if x != nil {
- return x.CaCertFile
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetInsecureSkipVerify() bool {
- if x != nil {
- return x.InsecureSkipVerify
- }
- return false
-}
-
-func (x *ForwardEchoRequest) GetAlpn() *Alpn {
- if x != nil {
- return x.Alpn
- }
- return nil
-}
-
-func (x *ForwardEchoRequest) GetServerName() string {
- if x != nil {
- return x.ServerName
- }
- return ""
-}
-
-func (x *ForwardEchoRequest) GetExpectedResponse() *wrapperspb.StringValue {
- if x != nil {
- return x.ExpectedResponse
- }
- return nil
-}
-
-type Alpn struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Alpn) Reset() {
- *x = Alpn{}
- if protoimpl.UnsafeEnabled {
- mi := &file_proto_echo_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Alpn) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Alpn) ProtoMessage() {}
-
-func (x *Alpn) ProtoReflect() protoreflect.Message {
- mi := &file_proto_echo_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Alpn.ProtoReflect.Descriptor instead.
-func (*Alpn) Descriptor() ([]byte, []int) {
- return file_proto_echo_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Alpn) GetValue() []string {
- if x != nil {
- return x.Value
- }
- return nil
-}
-
-type ForwardEchoResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Output []string `protobuf:"bytes,1,rep,name=output,proto3" json:"output,omitempty"`
-}
-
-func (x *ForwardEchoResponse) Reset() {
- *x = ForwardEchoResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_proto_echo_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ForwardEchoResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ForwardEchoResponse) ProtoMessage() {}
-
-func (x *ForwardEchoResponse) ProtoReflect() protoreflect.Message {
- mi := &file_proto_echo_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ForwardEchoResponse.ProtoReflect.Descriptor instead.
-func (*ForwardEchoResponse) Descriptor() ([]byte, []int) {
- return file_proto_echo_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *ForwardEchoResponse) GetOutput() []string {
- if x != nil {
- return x.Output
- }
- return nil
-}
-
-var File_proto_echo_proto protoreflect.FileDescriptor
-
-var file_proto_echo_proto_rawDesc = []byte{
- 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70,
- 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x27, 0x0a, 0x0b, 0x45, 0x63, 0x68,
- 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x22, 0x28, 0x0a, 0x0c, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x30, 0x0a, 0x06,
- 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x97,
- 0x05, 0x0a, 0x12, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x71,
- 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x71, 0x70, 0x73, 0x12, 0x25, 0x0a,
- 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x69,
- 0x63, 0x72, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
- 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12,
- 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74,
- 0x68, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x74, 0x74, 0x70, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x05, 0x68, 0x74, 0x74, 0x70, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x74, 0x74, 0x70, 0x33,
- 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x68, 0x74, 0x74, 0x70, 0x33, 0x12, 0x20, 0x0a,
- 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x69, 0x72, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x69, 0x72, 0x73, 0x74, 0x12,
- 0x28, 0x0a, 0x0f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63,
- 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77,
- 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x72,
- 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x16, 0x0a, 0x06, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x65, 0x72, 0x74, 0x46,
- 0x69, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x46,
- 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x11,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1e, 0x0a,
- 0x0a, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2e, 0x0a,
- 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72,
- 0x69, 0x66, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x1f, 0x0a,
- 0x04, 0x61, 0x6c, 0x70, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6c, 0x70, 0x6e, 0x52, 0x04, 0x61, 0x6c, 0x70, 0x6e, 0x12, 0x1e,
- 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48,
- 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
- 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x04, 0x41, 0x6c, 0x70, 0x6e,
- 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2d, 0x0a, 0x13, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72,
- 0x64, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a,
- 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f,
- 0x75, 0x74, 0x70, 0x75, 0x74, 0x32, 0x88, 0x01, 0x0a, 0x0f, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x65,
- 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x45, 0x63, 0x68,
- 0x6f, 0x12, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x63,
- 0x68, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x46, 0x6f,
- 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x6f, 0x72,
- 0x77, 0x61, 0x72, 0x64, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_proto_echo_proto_rawDescOnce sync.Once
- file_proto_echo_proto_rawDescData = file_proto_echo_proto_rawDesc
-)
-
-func file_proto_echo_proto_rawDescGZIP() []byte {
- file_proto_echo_proto_rawDescOnce.Do(func() {
- file_proto_echo_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_echo_proto_rawDescData)
- })
- return file_proto_echo_proto_rawDescData
-}
-
-var file_proto_echo_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_proto_echo_proto_goTypes = []interface{}{
- (*EchoRequest)(nil), // 0: proto.EchoRequest
- (*EchoResponse)(nil), // 1: proto.EchoResponse
- (*Header)(nil), // 2: proto.Header
- (*ForwardEchoRequest)(nil), // 3: proto.ForwardEchoRequest
- (*Alpn)(nil), // 4: proto.Alpn
- (*ForwardEchoResponse)(nil), // 5: proto.ForwardEchoResponse
- (*wrapperspb.StringValue)(nil), // 6: google.protobuf.StringValue
-}
-var file_proto_echo_proto_depIdxs = []int32{
- 2, // 0: proto.ForwardEchoRequest.headers:type_name -> proto.Header
- 4, // 1: proto.ForwardEchoRequest.alpn:type_name -> proto.Alpn
- 6, // 2: proto.ForwardEchoRequest.expectedResponse:type_name -> google.protobuf.StringValue
- 0, // 3: proto.EchoTestService.Echo:input_type -> proto.EchoRequest
- 3, // 4: proto.EchoTestService.ForwardEcho:input_type -> proto.ForwardEchoRequest
- 1, // 5: proto.EchoTestService.Echo:output_type -> proto.EchoResponse
- 5, // 6: proto.EchoTestService.ForwardEcho:output_type -> proto.ForwardEchoResponse
- 5, // [5:7] is the sub-list for method output_type
- 3, // [3:5] is the sub-list for method input_type
- 3, // [3:3] is the sub-list for extension type_name
- 3, // [3:3] is the sub-list for extension extendee
- 0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_proto_echo_proto_init() }
-func file_proto_echo_proto_init() {
- if File_proto_echo_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_proto_echo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EchoRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_proto_echo_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EchoResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_proto_echo_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Header); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_proto_echo_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ForwardEchoRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_proto_echo_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Alpn); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_proto_echo_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ForwardEchoResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_proto_echo_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_proto_echo_proto_goTypes,
- DependencyIndexes: file_proto_echo_proto_depIdxs,
- MessageInfos: file_proto_echo_proto_msgTypes,
- }.Build()
- File_proto_echo_proto = out.File
- file_proto_echo_proto_rawDesc = nil
- file_proto_echo_proto_goTypes = nil
- file_proto_echo_proto_depIdxs = nil
-}
diff --git a/gen/proto/type/v1beta1/selector.pb.go b/gen/proto/type/v1beta1/selector.pb.go
deleted file mode 100644
index 284940f..0000000
--- a/gen/proto/type/v1beta1/selector.pb.go
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2019 Istio 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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: type/v1beta1/selector.proto
-
-// $title: Workload Selector
-// $description: Definition of a workload selector.
-// $location: https://istio.io/docs/reference/config/type/workload-selector.html
-
-package v1beta1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// WorkloadSelector specifies the criteria used to determine if a policy can be applied
-// to a proxy. The matching criteria includes the metadata associated with a proxy,
-// workload instance info such as labels attached to the pod/VM, or any other info
-// that the proxy provides to Istio during the initial handshake. If multiple conditions are
-// specified, all conditions need to match in order for the workload instance to be
-// selected. Currently, only label based selection mechanism is supported.
-type WorkloadSelector struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // One or more labels that indicate a specific set of pods/VMs
- // on which a policy should be applied. The scope of label search is restricted to
- // the configuration namespace in which the resource is present.
- MatchLabels map[string]string `protobuf:"bytes,1,rep,name=match_labels,json=matchLabels,proto3" json:"match_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *WorkloadSelector) Reset() {
- *x = WorkloadSelector{}
- if protoimpl.UnsafeEnabled {
- mi := &file_type_v1beta1_selector_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WorkloadSelector) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WorkloadSelector) ProtoMessage() {}
-
-func (x *WorkloadSelector) ProtoReflect() protoreflect.Message {
- mi := &file_type_v1beta1_selector_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WorkloadSelector.ProtoReflect.Descriptor instead.
-func (*WorkloadSelector) Descriptor() ([]byte, []int) {
- return file_type_v1beta1_selector_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *WorkloadSelector) GetMatchLabels() map[string]string {
- if x != nil {
- return x.MatchLabels
- }
- return nil
-}
-
-var File_type_v1beta1_selector_proto protoreflect.FileDescriptor
-
-var file_type_v1beta1_selector_proto_rawDesc = []byte{
- 0x0a, 0x1b, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x69,
- 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69,
- 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x22, 0xb2, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68,
- 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e,
- 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63,
- 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1b, 0x5a, 0x19, 0x69, 0x73, 0x74, 0x69, 0x6f,
- 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_type_v1beta1_selector_proto_rawDescOnce sync.Once
- file_type_v1beta1_selector_proto_rawDescData = file_type_v1beta1_selector_proto_rawDesc
-)
-
-func file_type_v1beta1_selector_proto_rawDescGZIP() []byte {
- file_type_v1beta1_selector_proto_rawDescOnce.Do(func() {
- file_type_v1beta1_selector_proto_rawDescData = protoimpl.X.CompressGZIP(file_type_v1beta1_selector_proto_rawDescData)
- })
- return file_type_v1beta1_selector_proto_rawDescData
-}
-
-var file_type_v1beta1_selector_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_type_v1beta1_selector_proto_goTypes = []interface{}{
- (*WorkloadSelector)(nil), // 0: istio.type.v1beta1.WorkloadSelector
- nil, // 1: istio.type.v1beta1.WorkloadSelector.MatchLabelsEntry
-}
-var file_type_v1beta1_selector_proto_depIdxs = []int32{
- 1, // 0: istio.type.v1beta1.WorkloadSelector.match_labels:type_name -> istio.type.v1beta1.WorkloadSelector.MatchLabelsEntry
- 1, // [1:1] is the sub-list for method output_type
- 1, // [1:1] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_type_v1beta1_selector_proto_init() }
-func file_type_v1beta1_selector_proto_init() {
- if File_type_v1beta1_selector_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_type_v1beta1_selector_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadSelector); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_type_v1beta1_selector_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 2,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_type_v1beta1_selector_proto_goTypes,
- DependencyIndexes: file_type_v1beta1_selector_proto_depIdxs,
- MessageInfos: file_type_v1beta1_selector_proto_msgTypes,
- }.Build()
- File_type_v1beta1_selector_proto = out.File
- file_type_v1beta1_selector_proto_rawDesc = nil
- file_type_v1beta1_selector_proto_goTypes = nil
- file_type_v1beta1_selector_proto_depIdxs = nil
-}
diff --git a/gen/proto/webpush/webpush.pb.go b/gen/proto/webpush/webpush.pb.go
deleted file mode 100644
index a086552..0000000
--- a/gen/proto/webpush/webpush.pb.go
+++ /dev/null
@@ -1,727 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: webpush/webpush.proto
-
-package msgs
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Common fields to be encoded in the 'data' proto
-type MessageData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Time when the message was sent, according to the sender clock.
- Time int64 `protobuf:"varint,1,opt,name=time,proto3" json:"time,omitempty"`
- // Original WorkloadID. If missing, the envelope WorkloadID will be used.
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
- // Original destination
- To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"`
- From string `protobuf:"bytes,4,opt,name=from,proto3" json:"from,omitempty"`
- Topic string `protobuf:"bytes,5,opt,name=topic,proto3" json:"topic,omitempty"`
- Meta map[string]string `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Data []byte `protobuf:"bytes,7,opt,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *MessageData) Reset() {
- *x = MessageData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_webpush_webpush_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MessageData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageData) ProtoMessage() {}
-
-func (x *MessageData) ProtoReflect() protoreflect.Message {
- mi := &file_webpush_webpush_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageData.ProtoReflect.Descriptor instead.
-func (*MessageData) Descriptor() ([]byte, []int) {
- return file_webpush_webpush_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *MessageData) GetTime() int64 {
- if x != nil {
- return x.Time
- }
- return 0
-}
-
-func (x *MessageData) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *MessageData) GetTo() string {
- if x != nil {
- return x.To
- }
- return ""
-}
-
-func (x *MessageData) GetFrom() string {
- if x != nil {
- return x.From
- }
- return ""
-}
-
-func (x *MessageData) GetTopic() string {
- if x != nil {
- return x.Topic
- }
- return ""
-}
-
-func (x *MessageData) GetMeta() map[string]string {
- if x != nil {
- return x.Meta
- }
- return nil
-}
-
-func (x *MessageData) GetData() []byte {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-// Message is returned as PUSH PROMISE frames in the spec. The alternative protocol wraps it in
-// Any field or other framing.
-type WebpushMessage struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Unique in context of the origin
- // For webpush, generated by the original server (from subscription), as Location:
- // Example: https://push.example.net/message/qDIYHNcfAIPP_5ITvURr-d6BGt
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // Plaintext = 0
- // aes128gcm = 1
- ContentEncoding int32 `protobuf:"varint,7,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"`
- // If encoding is "1" - aes128gcm
- // Otherwise it is a plaintext message.
- Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
- // Message path
- Path []*Via `protobuf:"bytes,6,rep,name=path,proto3" json:"path,omitempty"`
- Ttl int32 `protobuf:"varint,9,opt,name=ttl,proto3" json:"ttl,omitempty"`
- // Maps to the SubscribeResponse push parameter, returned as Link rel="urn:ietf:params:push"
- // in the push promise.
- Push string `protobuf:"bytes,2,opt,name=push,proto3" json:"push,omitempty"`
- // Identifies the sender - compact form.
- Sender *Vapid `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"`
- // URL or IPv6, extracted from the VAPID of the sender or other
- // form of authentication.
- From string `protobuf:"bytes,5,opt,name=from,proto3" json:"from,omitempty"`
-}
-
-func (x *WebpushMessage) Reset() {
- *x = WebpushMessage{}
- if protoimpl.UnsafeEnabled {
- mi := &file_webpush_webpush_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WebpushMessage) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WebpushMessage) ProtoMessage() {}
-
-func (x *WebpushMessage) ProtoReflect() protoreflect.Message {
- mi := &file_webpush_webpush_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WebpushMessage.ProtoReflect.Descriptor instead.
-func (*WebpushMessage) Descriptor() ([]byte, []int) {
- return file_webpush_webpush_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *WebpushMessage) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *WebpushMessage) GetContentEncoding() int32 {
- if x != nil {
- return x.ContentEncoding
- }
- return 0
-}
-
-func (x *WebpushMessage) GetData() []byte {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-func (x *WebpushMessage) GetPath() []*Via {
- if x != nil {
- return x.Path
- }
- return nil
-}
-
-func (x *WebpushMessage) GetTtl() int32 {
- if x != nil {
- return x.Ttl
- }
- return 0
-}
-
-func (x *WebpushMessage) GetPush() string {
- if x != nil {
- return x.Push
- }
- return ""
-}
-
-func (x *WebpushMessage) GetSender() *Vapid {
- if x != nil {
- return x.Sender
- }
- return nil
-}
-
-func (x *WebpushMessage) GetFrom() string {
- if x != nil {
- return x.From
- }
- return ""
-}
-
-type Via struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Time int64 `protobuf:"varint,1,opt,name=time,proto3" json:"time,omitempty"`
- Vip string `protobuf:"bytes,2,opt,name=vip,proto3" json:"vip,omitempty"`
-}
-
-func (x *Via) Reset() {
- *x = Via{}
- if protoimpl.UnsafeEnabled {
- mi := &file_webpush_webpush_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Via) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Via) ProtoMessage() {}
-
-func (x *Via) ProtoReflect() protoreflect.Message {
- mi := &file_webpush_webpush_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Via.ProtoReflect.Descriptor instead.
-func (*Via) Descriptor() ([]byte, []int) {
- return file_webpush_webpush_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Via) GetTime() int64 {
- if x != nil {
- return x.Time
- }
- return 0
-}
-
-func (x *Via) GetVip() string {
- if x != nil {
- return x.Vip
- }
- return ""
-}
-
-// Vapid is the proto variant of a Webpush JWT.
-// This is a more compact representation, without base64 overhead
-//
-// For HTTP, included in Authorization header:
-// Authorization: vapid t=B64url k=B64url
-//
-// Decoded t is of form: { "typ": "JWT", "alg": "ES256" }.JWT.SIG
-//
-// { "crv":"P-256",
-// "kty":"EC",
-// "x":"DUfHPKLVFQzVvnCPGyfucbECzPDa7rWbXriLcysAjEc",
-// "y":"F6YK5h4SDYic-dRuU_RCPCfA5aq9ojSwk5Y2EmClBPs" }
-type Vapid struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // json payload of VAPID ( without base64 encoding)
- // Can also be a proto message when used over other transports.
- // Verification requires converting back to base64 !
- // Decoded to reduce the binary size
- Data []byte `protobuf:"bytes,7,opt,name=data,proto3" json:"data,omitempty"`
- // Public key of the signer, 64 bytes, EC256, decoded.
- // Included in 'k' parameter for HTTP.
- K []byte `protobuf:"bytes,4,opt,name=k,proto3" json:"k,omitempty"`
- // If empty, it is assumed to be the constant value {typ=JWT,alg=ES256}
- TType []byte `protobuf:"bytes,32,opt,name=t_type,json=tType,proto3" json:"t_type,omitempty"`
- // Decoded
- TSignature []byte `protobuf:"bytes,33,opt,name=t_signature,json=tSignature,proto3" json:"t_signature,omitempty"`
-}
-
-func (x *Vapid) Reset() {
- *x = Vapid{}
- if protoimpl.UnsafeEnabled {
- mi := &file_webpush_webpush_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Vapid) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Vapid) ProtoMessage() {}
-
-func (x *Vapid) ProtoReflect() protoreflect.Message {
- mi := &file_webpush_webpush_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Vapid.ProtoReflect.Descriptor instead.
-func (*Vapid) Descriptor() ([]byte, []int) {
- return file_webpush_webpush_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Vapid) GetData() []byte {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-func (x *Vapid) GetK() []byte {
- if x != nil {
- return x.K
- }
- return nil
-}
-
-func (x *Vapid) GetTType() []byte {
- if x != nil {
- return x.TType
- }
- return nil
-}
-
-func (x *Vapid) GetTSignature() []byte {
- if x != nil {
- return x.TSignature
- }
- return nil
-}
-
-type PushRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The value returned in the SubscribeResponse push, without the hostname.
- Push string `protobuf:"bytes,1,opt,name=push,proto3" json:"push,omitempty"`
- Ttl int32 `protobuf:"varint,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
- // aes128gcm encrypted
- Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
- Urgency string `protobuf:"bytes,4,opt,name=urgency,proto3" json:"urgency,omitempty"`
- // Prefer header indicating delivery receipt request.
- RespondAsync bool `protobuf:"varint,5,opt,name=respond_async,json=respondAsync,proto3" json:"respond_async,omitempty"`
- Topic string `protobuf:"bytes,6,opt,name=topic,proto3" json:"topic,omitempty"`
-}
-
-func (x *PushRequest) Reset() {
- *x = PushRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_webpush_webpush_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PushRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PushRequest) ProtoMessage() {}
-
-func (x *PushRequest) ProtoReflect() protoreflect.Message {
- mi := &file_webpush_webpush_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PushRequest.ProtoReflect.Descriptor instead.
-func (*PushRequest) Descriptor() ([]byte, []int) {
- return file_webpush_webpush_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *PushRequest) GetPush() string {
- if x != nil {
- return x.Push
- }
- return ""
-}
-
-func (x *PushRequest) GetTtl() int32 {
- if x != nil {
- return x.Ttl
- }
- return 0
-}
-
-func (x *PushRequest) GetData() []byte {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-func (x *PushRequest) GetUrgency() string {
- if x != nil {
- return x.Urgency
- }
- return ""
-}
-
-func (x *PushRequest) GetRespondAsync() bool {
- if x != nil {
- return x.RespondAsync
- }
- return false
-}
-
-func (x *PushRequest) GetTopic() string {
- if x != nil {
- return x.Topic
- }
- return ""
-}
-
-type PushResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- MessageId string `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
- // If request includes the respond_async parameter.
- //
- PushReceipt string `protobuf:"bytes,2,opt,name=push_receipt,json=pushReceipt,proto3" json:"push_receipt,omitempty"`
-}
-
-func (x *PushResponse) Reset() {
- *x = PushResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_webpush_webpush_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PushResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PushResponse) ProtoMessage() {}
-
-func (x *PushResponse) ProtoReflect() protoreflect.Message {
- mi := &file_webpush_webpush_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PushResponse.ProtoReflect.Descriptor instead.
-func (*PushResponse) Descriptor() ([]byte, []int) {
- return file_webpush_webpush_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *PushResponse) GetMessageId() string {
- if x != nil {
- return x.MessageId
- }
- return ""
-}
-
-func (x *PushResponse) GetPushReceipt() string {
- if x != nil {
- return x.PushReceipt
- }
- return ""
-}
-
-var File_webpush_webpush_proto protoreflect.FileDescriptor
-
-var file_webpush_webpush_proto_rawDesc = []byte{
- 0x0a, 0x15, 0x77, 0x65, 0x62, 0x70, 0x75, 0x73, 0x68, 0x2f, 0x77, 0x65, 0x62, 0x70, 0x75, 0x73,
- 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x77, 0x65, 0x62, 0x70, 0x75, 0x73, 0x68,
- 0x22, 0xec, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61,
- 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
- 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69,
- 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x32,
- 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77,
- 0x65, 0x62, 0x70, 0x75, 0x73, 0x68, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61,
- 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6d, 0x65,
- 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c,
- 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
- 0xe3, 0x01, 0x0a, 0x0e, 0x57, 0x65, 0x62, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e,
- 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x6f,
- 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a,
- 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74,
- 0x61, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x0c, 0x2e, 0x77, 0x65, 0x62, 0x70, 0x75, 0x73, 0x68, 0x2e, 0x56, 0x69, 0x61, 0x52, 0x04, 0x70,
- 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x73, 0x68, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x06, 0x73, 0x65, 0x6e,
- 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x70,
- 0x75, 0x73, 0x68, 0x2e, 0x56, 0x61, 0x70, 0x69, 0x64, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65,
- 0x72, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x2b, 0x0a, 0x03, 0x56, 0x69, 0x61, 0x12, 0x12, 0x0a, 0x04,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65,
- 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76,
- 0x69, 0x70, 0x22, 0x61, 0x0a, 0x05, 0x56, 0x61, 0x70, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x0c, 0x0a, 0x01, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x6b, 0x12, 0x15, 0x0a,
- 0x06, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x74,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74,
- 0x75, 0x72, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x74, 0x53, 0x69, 0x67, 0x6e,
- 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x73, 0x68, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x18, 0x0a, 0x07, 0x75, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x75, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x14,
- 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
- 0x6f, 0x70, 0x69, 0x63, 0x22, 0x50, 0x0a, 0x0c, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x72, 0x65, 0x63, 0x65,
- 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x52,
- 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x42, 0x24, 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x77, 0x70, 0x67,
- 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x73, 0x67, 0x73, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_webpush_webpush_proto_rawDescOnce sync.Once
- file_webpush_webpush_proto_rawDescData = file_webpush_webpush_proto_rawDesc
-)
-
-func file_webpush_webpush_proto_rawDescGZIP() []byte {
- file_webpush_webpush_proto_rawDescOnce.Do(func() {
- file_webpush_webpush_proto_rawDescData = protoimpl.X.CompressGZIP(file_webpush_webpush_proto_rawDescData)
- })
- return file_webpush_webpush_proto_rawDescData
-}
-
-var file_webpush_webpush_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
-var file_webpush_webpush_proto_goTypes = []interface{}{
- (*MessageData)(nil), // 0: webpush.MessageData
- (*WebpushMessage)(nil), // 1: webpush.WebpushMessage
- (*Via)(nil), // 2: webpush.Via
- (*Vapid)(nil), // 3: webpush.Vapid
- (*PushRequest)(nil), // 4: webpush.PushRequest
- (*PushResponse)(nil), // 5: webpush.PushResponse
- nil, // 6: webpush.MessageData.MetaEntry
-}
-var file_webpush_webpush_proto_depIdxs = []int32{
- 6, // 0: webpush.MessageData.meta:type_name -> webpush.MessageData.MetaEntry
- 2, // 1: webpush.WebpushMessage.path:type_name -> webpush.Via
- 3, // 2: webpush.WebpushMessage.sender:type_name -> webpush.Vapid
- 3, // [3:3] is the sub-list for method output_type
- 3, // [3:3] is the sub-list for method input_type
- 3, // [3:3] is the sub-list for extension type_name
- 3, // [3:3] is the sub-list for extension extendee
- 0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_webpush_webpush_proto_init() }
-func file_webpush_webpush_proto_init() {
- if File_webpush_webpush_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_webpush_webpush_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MessageData); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_webpush_webpush_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WebpushMessage); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_webpush_webpush_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Via); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_webpush_webpush_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Vapid); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_webpush_webpush_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PushRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_webpush_webpush_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PushResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_webpush_webpush_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 7,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_webpush_webpush_proto_goTypes,
- DependencyIndexes: file_webpush_webpush_proto_depIdxs,
- MessageInfos: file_webpush_webpush_proto_msgTypes,
- }.Build()
- File_webpush_webpush_proto = out.File
- file_webpush_webpush_proto_rawDesc = nil
- file_webpush_webpush_proto_goTypes = nil
- file_webpush_webpush_proto_depIdxs = nil
-}
diff --git a/gen/proto/xds/base.pb.go b/gen/proto/xds/base.pb.go
deleted file mode 100644
index 0781595..0000000
--- a/gen/proto/xds/base.pb.go
+++ /dev/null
@@ -1,1063 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: xds/base.proto
-
-package xds
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// `NullValue` is a singleton enumeration to represent the null value for the
-// `Value` type union.
-//
-// The JSON representation for `NullValue` is JSON `null`.
-type NullValue int32
-
-const (
- // Null value.
- NullValue_NULL_VALUE NullValue = 0
-)
-
-// Enum value maps for NullValue.
-var (
- NullValue_name = map[int32]string{
- 0: "NULL_VALUE",
- }
- NullValue_value = map[string]int32{
- "NULL_VALUE": 0,
- }
-)
-
-func (x NullValue) Enum() *NullValue {
- p := new(NullValue)
- *p = x
- return p
-}
-
-func (x NullValue) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (NullValue) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_base_proto_enumTypes[0].Descriptor()
-}
-
-func (NullValue) Type() protoreflect.EnumType {
- return &file_xds_base_proto_enumTypes[0]
-}
-
-func (x NullValue) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use NullValue.Descriptor instead.
-func (NullValue) EnumDescriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{0}
-}
-
-// `Struct` represents a structured data value, consisting of fields
-// which map to dynamically typed values. In some languages, `Struct`
-// might be supported by a native representation. For example, in
-// scripting languages like JS a struct is represented as an
-// object. The details of that representation are described together
-// with the proto support for the language.
-//
-// The JSON representation for `Struct` is JSON object.
-type Struct struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Unordered map of dynamically typed values.
- Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Struct) Reset() {
- *x = Struct{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Struct) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Struct) ProtoMessage() {}
-
-func (x *Struct) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Struct.ProtoReflect.Descriptor instead.
-func (*Struct) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Struct) GetFields() map[string]*Value {
- if x != nil {
- return x.Fields
- }
- return nil
-}
-
-// `Value` represents a dynamically typed value which can be either
-// null, a number, a string, a boolean, a recursive struct value, or a
-// list of values. A producer of value is expected to set one of that
-// variants, absence of any variant indicates an error.
-//
-// The JSON representation for `Value` is JSON value.
-type Value struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The kind of value.
- //
- // Types that are assignable to Kind:
- // *Value_NullValue
- // *Value_NumberValue
- // *Value_StringValue
- // *Value_BoolValue
- // *Value_StructValue
- // *Value_ListValue
- Kind isValue_Kind `protobuf_oneof:"kind"`
-}
-
-func (x *Value) Reset() {
- *x = Value{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Value) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Value) ProtoMessage() {}
-
-func (x *Value) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Value.ProtoReflect.Descriptor instead.
-func (*Value) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{1}
-}
-
-func (m *Value) GetKind() isValue_Kind {
- if m != nil {
- return m.Kind
- }
- return nil
-}
-
-func (x *Value) GetNullValue() NullValue {
- if x, ok := x.GetKind().(*Value_NullValue); ok {
- return x.NullValue
- }
- return NullValue_NULL_VALUE
-}
-
-func (x *Value) GetNumberValue() float64 {
- if x, ok := x.GetKind().(*Value_NumberValue); ok {
- return x.NumberValue
- }
- return 0
-}
-
-func (x *Value) GetStringValue() string {
- if x, ok := x.GetKind().(*Value_StringValue); ok {
- return x.StringValue
- }
- return ""
-}
-
-func (x *Value) GetBoolValue() bool {
- if x, ok := x.GetKind().(*Value_BoolValue); ok {
- return x.BoolValue
- }
- return false
-}
-
-func (x *Value) GetStructValue() *Struct {
- if x, ok := x.GetKind().(*Value_StructValue); ok {
- return x.StructValue
- }
- return nil
-}
-
-func (x *Value) GetListValue() *ListValue {
- if x, ok := x.GetKind().(*Value_ListValue); ok {
- return x.ListValue
- }
- return nil
-}
-
-type isValue_Kind interface {
- isValue_Kind()
-}
-
-type Value_NullValue struct {
- // Represents a null value.
- NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,proto3,enum=xds.NullValue,oneof"`
-}
-
-type Value_NumberValue struct {
- // Represents a double value.
- NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,proto3,oneof"`
-}
-
-type Value_StringValue struct {
- // Represents a string value.
- StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"`
-}
-
-type Value_BoolValue struct {
- // Represents a boolean value.
- BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"`
-}
-
-type Value_StructValue struct {
- // Represents a structured value.
- StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof"`
-}
-
-type Value_ListValue struct {
- // Represents a repeated `Value`.
- ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,proto3,oneof"`
-}
-
-func (*Value_NullValue) isValue_Kind() {}
-
-func (*Value_NumberValue) isValue_Kind() {}
-
-func (*Value_StringValue) isValue_Kind() {}
-
-func (*Value_BoolValue) isValue_Kind() {}
-
-func (*Value_StructValue) isValue_Kind() {}
-
-func (*Value_ListValue) isValue_Kind() {}
-
-// `ListValue` is a wrapper around a repeated field of values.
-//
-// The JSON representation for `ListValue` is JSON array.
-type ListValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Repeated field of dynamically typed values.
- Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
-}
-
-func (x *ListValue) Reset() {
- *x = ListValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListValue) ProtoMessage() {}
-
-func (x *ListValue) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.
-func (*ListValue) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ListValue) GetValues() []*Value {
- if x != nil {
- return x.Values
- }
- return nil
-}
-
-// A Duration represents a signed, fixed-length span of time represented
-// as a count of seconds and fractions of seconds at nanosecond
-// resolution. It is independent of any calendar and concepts like "day"
-// or "month". It is related to Timestamp in that the difference between
-// two Timestamp values is a Duration and it can be added or subtracted
-// from a Timestamp. Range is approximately +-10,000 years.
-//
-// # Examples
-//
-// Example 1: Compute Duration from two Timestamps in pseudo code.
-//
-// Timestamp start = ...;
-// Timestamp end = ...;
-// Duration duration = ...;
-//
-// duration.seconds = end.seconds - start.seconds;
-// duration.nanos = end.nanos - start.nanos;
-//
-// if (duration.seconds < 0 && duration.nanos > 0) {
-// duration.seconds += 1;
-// duration.nanos -= 1000000000;
-// } else if (durations.seconds > 0 && duration.nanos < 0) {
-// duration.seconds -= 1;
-// duration.nanos += 1000000000;
-// }
-//
-// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
-//
-// Timestamp start = ...;
-// Duration duration = ...;
-// Timestamp end = ...;
-//
-// end.seconds = start.seconds + duration.seconds;
-// end.nanos = start.nanos + duration.nanos;
-//
-// if (end.nanos < 0) {
-// end.seconds -= 1;
-// end.nanos += 1000000000;
-// } else if (end.nanos >= 1000000000) {
-// end.seconds += 1;
-// end.nanos -= 1000000000;
-// }
-//
-// Example 3: Compute Duration from datetime.timedelta in Python.
-//
-// td = datetime.timedelta(days=3, minutes=10)
-// duration = Duration()
-// duration.FromTimedelta(td)
-//
-// # JSON Mapping
-//
-// In JSON format, the Duration type is encoded as a string rather than an
-// object, where the string ends in the suffix "s" (indicating seconds) and
-// is preceded by the number of seconds, with nanoseconds expressed as
-// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
-// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
-// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
-// microsecond should be expressed in JSON format as "3.000001s".
-//
-//
-type Duration struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Signed seconds of the span of time. Must be from -315,576,000,000
- // to +315,576,000,000 inclusive. Note: these bounds are computed from:
- // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
- Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
- // Signed fractions of a second at nanosecond resolution of the span
- // of time. Durations less than one second are represented with a 0
- // `seconds` field and a positive or negative `nanos` field. For durations
- // of one second or more, a non-zero value for the `nanos` field must be
- // of the same sign as the `seconds` field. Must be from -999,999,999
- // to +999,999,999 inclusive.
- Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
-}
-
-func (x *Duration) Reset() {
- *x = Duration{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Duration) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Duration) ProtoMessage() {}
-
-func (x *Duration) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Duration.ProtoReflect.Descriptor instead.
-func (*Duration) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Duration) GetSeconds() int64 {
- if x != nil {
- return x.Seconds
- }
- return 0
-}
-
-func (x *Duration) GetNanos() int32 {
- if x != nil {
- return x.Nanos
- }
- return 0
-}
-
-// The `Status` type defines a logical error model that is suitable for different
-// programming environments, including REST APIs and RPC APIs. It is used by
-// [gRPC](https://github.com/grpc). The error model is designed to be:
-//
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code, error message,
-// and error details. The error code should be an enum value of
-// [google.rpc.Code][google.rpc.Code], but it may accept additional error codes if needed. The
-// error message should be a developer-facing English message that helps
-// developers *understand* and *resolve* the error. If a localized user-facing
-// error message is needed, put the localized message in the error details or
-// localize it in the client. The optional error details may contain arbitrary
-// information about the error. There is a predefined set of error detail types
-// in the package `google.rpc` that can be used for common error conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error model, but it
-// is not necessarily the actual wire format. When the `Status` message is
-// exposed in different client libraries and different wire protocols, it can be
-// mapped differently. For example, it will likely be mapped to some exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the client,
-// it may embed the `Status` in the normal response to indicate the partial
-// errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step may
-// have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch response, the
-// `Status` message should be used directly inside batch response, one for
-// each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous operation
-// results in its response, the status of those operations should be
-// represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message `Status` could
-// be used directly after any stripping needed for security/privacy reasons.
-type Status struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
- Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
- // A developer-facing error message, which should be in English. Any
- // user-facing error message should be localized and sent in the
- // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
- Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
- // A list of messages that carry the error details. There is a common set of
- // message types for APIs to use.
- // google.protobuf.Any
- Details []*Any `protobuf:"bytes,3,rep,name=details,proto3" json:"details,omitempty"`
-}
-
-func (x *Status) Reset() {
- *x = Status{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Status) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Status) ProtoMessage() {}
-
-func (x *Status) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Status.ProtoReflect.Descriptor instead.
-func (*Status) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Status) GetCode() int32 {
- if x != nil {
- return x.Code
- }
- return 0
-}
-
-func (x *Status) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-func (x *Status) GetDetails() []*Any {
- if x != nil {
- return x.Details
- }
- return nil
-}
-
-// `Any` contains an arbitrary serialized protocol buffer message along with a
-// URL that describes the type of the serialized message.
-//
-// Protobuf library provides support to pack/unpack Any values in the form
-// of utility functions or additional generated methods of the Any type.
-//
-// Example 1: Pack and unpack a message in C++.
-//
-// Foo foo = ...;
-// Any any;
-// any.PackFrom(foo);
-// ...
-// if (any.UnpackTo(&foo)) {
-// ...
-// }
-//
-// Example 2: Pack and unpack a message in Java.
-//
-// Foo foo = ...;
-// Any any = Any.pack(foo);
-// ...
-// if (any.is(Foo.class)) {
-// foo = any.unpack(Foo.class);
-// }
-//
-// Example 3: Pack and unpack a message in Python.
-//
-// foo = Foo(...)
-// any = Any()
-// any.Pack(foo)
-// ...
-// if any.Is(Foo.DESCRIPTOR):
-// any.Unpack(foo)
-// ...
-//
-// Example 4: Pack and unpack a message in Go
-//
-// foo := &pb.Foo{...}
-// any, err := ptypes.MarshalAny(foo)
-// ...
-// foo := &pb.Foo{}
-// if err := ptypes.UnmarshalAny(any, foo); err != nil {
-// ...
-// }
-//
-// The pack methods provided by protobuf library will by default use
-// 'type.googleapis.com/full.type.name' as the type URL and the unpack
-// methods only use the fully qualified type name after the last '/'
-// in the type URL, for example "foo.bar.com/x/y.z" will yield type
-// name "y.z".
-//
-//
-// JSON
-// ====
-// The JSON representation of an `Any` value uses the regular
-// representation of the deserialized, embedded message, with an
-// additional field `@type` which contains the type URL. Example:
-//
-// package google.profile;
-// message Person {
-// string first_name = 1;
-// string last_name = 2;
-// }
-//
-// {
-// "@type": "type.googleapis.com/google.profile.Person",
-// "firstName": ,
-// "lastName":
-// }
-//
-// If the embedded message type is well-known and has a custom JSON
-// representation, that representation will be embedded adding a field
-// `value` which holds the custom JSON in addition to the `@type`
-// field. Example (for message [google.protobuf.Duration][]):
-//
-// {
-// "@type": "type.googleapis.com/google.protobuf.Duration",
-// "value": "1.212s"
-// }
-//
-type Any struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A URL/resource name whose content describes the type of the
- // serialized protocol buffer message.
- //
- // For URLs which use the scheme `http`, `https`, or no scheme, the
- // following restrictions and interpretations apply:
- //
- // * If no scheme is provided, `https` is assumed.
- // * The last segment of the URL's path must represent the fully
- // qualified name of the type (as in `path/google.protobuf.Duration`).
- // The name should be in a canonical form (e.g., leading "." is
- // not accepted).
- // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
- // value in binary format, or produce an error.
- // * Applications are allowed to cache lookup results based on the
- // URL, or have them precompiled into a binary to avoid any
- // lookup. Therefore, binary compatibility needs to be preserved
- // on changes to types. (Use versioned type names to manage
- // breaking changes.)
- //
- // Schemes other than `http`, `https` (or the empty scheme) might be
- // used with implementation specific semantics.
- //
- TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
- // Must be a valid serialized protocol buffer of the above specified type.
- Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Any) Reset() {
- *x = Any{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Any) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Any) ProtoMessage() {}
-
-func (x *Any) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Any.ProtoReflect.Descriptor instead.
-func (*Any) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Any) GetTypeUrl() string {
- if x != nil {
- return x.TypeUrl
- }
- return ""
-}
-
-func (x *Any) GetValue() []byte {
- if x != nil {
- return x.Value
- }
- return nil
-}
-
-// Wrapper message for `bool`.
-//
-// The JSON representation for `BoolValue` is JSON `true` and `false`.
-type BoolValue struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The bool value.
- Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *BoolValue) Reset() {
- *x = BoolValue{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *BoolValue) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BoolValue) ProtoMessage() {}
-
-func (x *BoolValue) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use BoolValue.ProtoReflect.Descriptor instead.
-func (*BoolValue) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *BoolValue) GetValue() bool {
- if x != nil {
- return x.Value
- }
- return false
-}
-
-// Wrapper message for `uint32`.
-//
-// The JSON representation for `UInt32Value` is JSON number.
-type UInt32Value struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The uint32 value.
- Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *UInt32Value) Reset() {
- *x = UInt32Value{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_base_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UInt32Value) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UInt32Value) ProtoMessage() {}
-
-func (x *UInt32Value) ProtoReflect() protoreflect.Message {
- mi := &file_xds_base_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UInt32Value.ProtoReflect.Descriptor instead.
-func (*UInt32Value) Descriptor() ([]byte, []int) {
- return file_xds_base_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *UInt32Value) GetValue() uint32 {
- if x != nil {
- return x.Value
- }
- return 0
-}
-
-var File_xds_base_proto protoreflect.FileDescriptor
-
-var file_xds_base_proto_rawDesc = []byte{
- 0x0a, 0x0e, 0x78, 0x64, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x12, 0x03, 0x78, 0x64, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74,
- 0x12, 0x2f, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x17, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x46, 0x69,
- 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
- 0x73, 0x1a, 0x45, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, 0x02, 0x0a, 0x05, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4e, 0x75, 0x6c,
- 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x75, 0x6d,
- 0x62, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69,
- 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a,
- 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30,
- 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63,
- 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x12, 0x2f, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x2f, 0x0a, 0x09, 0x4c, 0x69, 0x73,
- 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x08, 0x44, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
- 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x22, 0x5a, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
- 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22,
- 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x08, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69,
- 0x6c, 0x73, 0x22, 0x36, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70,
- 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x79, 0x70,
- 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x21, 0x0a, 0x09, 0x42, 0x6f,
- 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a,
- 0x0b, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x2a, 0x1b, 0x0a, 0x09, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
- 0x0e, 0x0a, 0x0a, 0x4e, 0x55, 0x4c, 0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x42,
- 0x32, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f,
- 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f,
- 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x78, 0x64, 0x73,
- 0x88, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_xds_base_proto_rawDescOnce sync.Once
- file_xds_base_proto_rawDescData = file_xds_base_proto_rawDesc
-)
-
-func file_xds_base_proto_rawDescGZIP() []byte {
- file_xds_base_proto_rawDescOnce.Do(func() {
- file_xds_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_xds_base_proto_rawDescData)
- })
- return file_xds_base_proto_rawDescData
-}
-
-var file_xds_base_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_xds_base_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_xds_base_proto_goTypes = []interface{}{
- (NullValue)(0), // 0: xds.NullValue
- (*Struct)(nil), // 1: xds.Struct
- (*Value)(nil), // 2: xds.Value
- (*ListValue)(nil), // 3: xds.ListValue
- (*Duration)(nil), // 4: xds.Duration
- (*Status)(nil), // 5: xds.Status
- (*Any)(nil), // 6: xds.Any
- (*BoolValue)(nil), // 7: xds.BoolValue
- (*UInt32Value)(nil), // 8: xds.UInt32Value
- nil, // 9: xds.Struct.FieldsEntry
-}
-var file_xds_base_proto_depIdxs = []int32{
- 9, // 0: xds.Struct.fields:type_name -> xds.Struct.FieldsEntry
- 0, // 1: xds.Value.null_value:type_name -> xds.NullValue
- 1, // 2: xds.Value.struct_value:type_name -> xds.Struct
- 3, // 3: xds.Value.list_value:type_name -> xds.ListValue
- 2, // 4: xds.ListValue.values:type_name -> xds.Value
- 6, // 5: xds.Status.details:type_name -> xds.Any
- 2, // 6: xds.Struct.FieldsEntry.value:type_name -> xds.Value
- 7, // [7:7] is the sub-list for method output_type
- 7, // [7:7] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_xds_base_proto_init() }
-func file_xds_base_proto_init() {
- if File_xds_base_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_xds_base_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Struct); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_base_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Value); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_base_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_base_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Duration); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_base_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Status); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_base_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Any); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_base_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BoolValue); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_base_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UInt32Value); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_xds_base_proto_msgTypes[1].OneofWrappers = []interface{}{
- (*Value_NullValue)(nil),
- (*Value_NumberValue)(nil),
- (*Value_StringValue)(nil),
- (*Value_BoolValue)(nil),
- (*Value_StructValue)(nil),
- (*Value_ListValue)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_xds_base_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 9,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_xds_base_proto_goTypes,
- DependencyIndexes: file_xds_base_proto_depIdxs,
- EnumInfos: file_xds_base_proto_enumTypes,
- MessageInfos: file_xds_base_proto_msgTypes,
- }.Build()
- File_xds_base_proto = out.File
- file_xds_base_proto_rawDesc = nil
- file_xds_base_proto_goTypes = nil
- file_xds_base_proto_depIdxs = nil
-}
diff --git a/gen/proto/xds/cds.pb.go b/gen/proto/xds/cds.pb.go
deleted file mode 100644
index a00bc05..0000000
--- a/gen/proto/xds/cds.pb.go
+++ /dev/null
@@ -1,1554 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: xds/cds.proto
-
-package xds
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Refer to :ref:`service discovery type `
-// for an explanation on each type.
-type Cluster_DiscoveryType int32
-
-const (
- // Refer to the :ref:`static discovery type`
- // for an explanation.
- Cluster_STATIC Cluster_DiscoveryType = 0
- // Refer to the :ref:`strict DNS discovery
- // type`
- // for an explanation.
- Cluster_STRICT_DNS Cluster_DiscoveryType = 1
- // Refer to the :ref:`logical DNS discovery
- // type`
- // for an explanation.
- Cluster_LOGICAL_DNS Cluster_DiscoveryType = 2
- // Refer to the :ref:`service discovery type`
- // for an explanation.
- Cluster_EDS Cluster_DiscoveryType = 3
- // Refer to the :ref:`original destination discovery
- // type`
- // for an explanation.
- Cluster_ORIGINAL_DST Cluster_DiscoveryType = 4
-)
-
-// Enum value maps for Cluster_DiscoveryType.
-var (
- Cluster_DiscoveryType_name = map[int32]string{
- 0: "STATIC",
- 1: "STRICT_DNS",
- 2: "LOGICAL_DNS",
- 3: "EDS",
- 4: "ORIGINAL_DST",
- }
- Cluster_DiscoveryType_value = map[string]int32{
- "STATIC": 0,
- "STRICT_DNS": 1,
- "LOGICAL_DNS": 2,
- "EDS": 3,
- "ORIGINAL_DST": 4,
- }
-)
-
-func (x Cluster_DiscoveryType) Enum() *Cluster_DiscoveryType {
- p := new(Cluster_DiscoveryType)
- *p = x
- return p
-}
-
-func (x Cluster_DiscoveryType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_DiscoveryType) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_cds_proto_enumTypes[0].Descriptor()
-}
-
-func (Cluster_DiscoveryType) Type() protoreflect.EnumType {
- return &file_xds_cds_proto_enumTypes[0]
-}
-
-func (x Cluster_DiscoveryType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_DiscoveryType.Descriptor instead.
-func (Cluster_DiscoveryType) EnumDescriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// Refer to :ref:`load balancer type ` architecture
-// overview section for information on each type.
-type Cluster_LbPolicy int32
-
-const (
- // Refer to the :ref:`round robin load balancing
- // policy`
- // for an explanation.
- Cluster_ROUND_ROBIN Cluster_LbPolicy = 0
- // Refer to the :ref:`least request load balancing
- // policy`
- // for an explanation.
- Cluster_LEAST_REQUEST Cluster_LbPolicy = 1
- // Refer to the :ref:`ring hash load balancing
- // policy`
- // for an explanation.
- Cluster_RING_HASH Cluster_LbPolicy = 2
- // Refer to the :ref:`random load balancing
- // policy`
- // for an explanation.
- Cluster_RANDOM Cluster_LbPolicy = 3
- // Refer to the :ref:`original destination load balancing
- // policy`
- // for an explanation.
- Cluster_ORIGINAL_DST_LB Cluster_LbPolicy = 4
- // Refer to the :ref:`Maglev load balancing policy`
- // for an explanation.
- Cluster_MAGLEV Cluster_LbPolicy = 5
-)
-
-// Enum value maps for Cluster_LbPolicy.
-var (
- Cluster_LbPolicy_name = map[int32]string{
- 0: "ROUND_ROBIN",
- 1: "LEAST_REQUEST",
- 2: "RING_HASH",
- 3: "RANDOM",
- 4: "ORIGINAL_DST_LB",
- 5: "MAGLEV",
- }
- Cluster_LbPolicy_value = map[string]int32{
- "ROUND_ROBIN": 0,
- "LEAST_REQUEST": 1,
- "RING_HASH": 2,
- "RANDOM": 3,
- "ORIGINAL_DST_LB": 4,
- "MAGLEV": 5,
- }
-)
-
-func (x Cluster_LbPolicy) Enum() *Cluster_LbPolicy {
- p := new(Cluster_LbPolicy)
- *p = x
- return p
-}
-
-func (x Cluster_LbPolicy) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_LbPolicy) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_cds_proto_enumTypes[1].Descriptor()
-}
-
-func (Cluster_LbPolicy) Type() protoreflect.EnumType {
- return &file_xds_cds_proto_enumTypes[1]
-}
-
-func (x Cluster_LbPolicy) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_LbPolicy.Descriptor instead.
-func (Cluster_LbPolicy) EnumDescriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 1}
-}
-
-// When V4_ONLY is selected, the DNS resolver will only perform a lookup for
-// addresses in the IPv4 family. If V6_ONLY is selected, the DNS resolver will
-// only perform a lookup for addresses in the IPv6 family. If AUTO is
-// specified, the DNS resolver will first perform a lookup for addresses in
-// the IPv6 family and fallback to a lookup for addresses in the IPv4 family.
-// For cluster types other than
-// :ref:`STRICT_DNS` and
-// :ref:`LOGICAL_DNS`,
-// this setting is
-// ignored.
-type Cluster_DnsLookupFamily int32
-
-const (
- Cluster_AUTO Cluster_DnsLookupFamily = 0
- Cluster_V4_ONLY Cluster_DnsLookupFamily = 1
- Cluster_V6_ONLY Cluster_DnsLookupFamily = 2
-)
-
-// Enum value maps for Cluster_DnsLookupFamily.
-var (
- Cluster_DnsLookupFamily_name = map[int32]string{
- 0: "AUTO",
- 1: "V4_ONLY",
- 2: "V6_ONLY",
- }
- Cluster_DnsLookupFamily_value = map[string]int32{
- "AUTO": 0,
- "V4_ONLY": 1,
- "V6_ONLY": 2,
- }
-)
-
-func (x Cluster_DnsLookupFamily) Enum() *Cluster_DnsLookupFamily {
- p := new(Cluster_DnsLookupFamily)
- *p = x
- return p
-}
-
-func (x Cluster_DnsLookupFamily) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_DnsLookupFamily) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_cds_proto_enumTypes[2].Descriptor()
-}
-
-func (Cluster_DnsLookupFamily) Type() protoreflect.EnumType {
- return &file_xds_cds_proto_enumTypes[2]
-}
-
-func (x Cluster_DnsLookupFamily) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_DnsLookupFamily.Descriptor instead.
-func (Cluster_DnsLookupFamily) EnumDescriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 2}
-}
-
-type Cluster_ClusterProtocolSelection int32
-
-const (
- // Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2).
- // If :ref:`http2_protocol_options ` are
- // present, HTTP2 will be used, otherwise HTTP1.1 will be used.
- Cluster_USE_CONFIGURED_PROTOCOL Cluster_ClusterProtocolSelection = 0
- // Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection.
- Cluster_USE_DOWNSTREAM_PROTOCOL Cluster_ClusterProtocolSelection = 1
-)
-
-// Enum value maps for Cluster_ClusterProtocolSelection.
-var (
- Cluster_ClusterProtocolSelection_name = map[int32]string{
- 0: "USE_CONFIGURED_PROTOCOL",
- 1: "USE_DOWNSTREAM_PROTOCOL",
- }
- Cluster_ClusterProtocolSelection_value = map[string]int32{
- "USE_CONFIGURED_PROTOCOL": 0,
- "USE_DOWNSTREAM_PROTOCOL": 1,
- }
-)
-
-func (x Cluster_ClusterProtocolSelection) Enum() *Cluster_ClusterProtocolSelection {
- p := new(Cluster_ClusterProtocolSelection)
- *p = x
- return p
-}
-
-func (x Cluster_ClusterProtocolSelection) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_ClusterProtocolSelection) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_cds_proto_enumTypes[3].Descriptor()
-}
-
-func (Cluster_ClusterProtocolSelection) Type() protoreflect.EnumType {
- return &file_xds_cds_proto_enumTypes[3]
-}
-
-func (x Cluster_ClusterProtocolSelection) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_ClusterProtocolSelection.Descriptor instead.
-func (Cluster_ClusterProtocolSelection) EnumDescriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 3}
-}
-
-// If NO_FALLBACK is selected, a result
-// equivalent to no healthy hosts is reported. If ANY_ENDPOINT is selected,
-// any cluster endpoint may be returned (subject to policy, health checks,
-// etc). If DEFAULT_SUBSET is selected, load balancing is performed over the
-// endpoints matching the values from the default_subset field.
-type Cluster_LbSubsetConfig_LbSubsetFallbackPolicy int32
-
-const (
- Cluster_LbSubsetConfig_NO_FALLBACK Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 0
- Cluster_LbSubsetConfig_ANY_ENDPOINT Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 1
- Cluster_LbSubsetConfig_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 2
-)
-
-// Enum value maps for Cluster_LbSubsetConfig_LbSubsetFallbackPolicy.
-var (
- Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name = map[int32]string{
- 0: "NO_FALLBACK",
- 1: "ANY_ENDPOINT",
- 2: "DEFAULT_SUBSET",
- }
- Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_value = map[string]int32{
- "NO_FALLBACK": 0,
- "ANY_ENDPOINT": 1,
- "DEFAULT_SUBSET": 2,
- }
-)
-
-func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Enum() *Cluster_LbSubsetConfig_LbSubsetFallbackPolicy {
- p := new(Cluster_LbSubsetConfig_LbSubsetFallbackPolicy)
- *p = x
- return p
-}
-
-func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_cds_proto_enumTypes[4].Descriptor()
-}
-
-func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Type() protoreflect.EnumType {
- return &file_xds_cds_proto_enumTypes[4]
-}
-
-func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_LbSubsetConfig_LbSubsetFallbackPolicy.Descriptor instead.
-func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) EnumDescriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 1, 0}
-}
-
-// Configuration for a single upstream cluster.
-// [#comment:next free field: 30]
-type Cluster struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Supplies the name of the cluster which must be unique across all clusters.
- // The cluster name is used when emitting
- // :ref:`statistics ` if :ref:`alt_stat_name
- // ` is not provided.
- // Any ``:`` in the cluster name will be converted to ``_`` when emitting statistics.
- // By default, the maximum length of a cluster name is limited to 60
- // characters. This limit can be increased by setting the
- // :option:`--max-obj-name-len` command line argument to the desired value.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // An optional alternative to the cluster name to be used while emitting stats.
- // Any ``:`` in the name will be converted to ``_`` when emitting statistics. This should not be
- // confused with :ref:`Router Filter Header
- // `.
- AltStatName string `protobuf:"bytes,28,opt,name=alt_stat_name,json=altStatName,proto3" json:"alt_stat_name,omitempty"`
- // The :ref:`service discovery type `
- // to use for resolving the cluster.
- Type Cluster_DiscoveryType `protobuf:"varint,2,opt,name=type,proto3,enum=xds.Cluster_DiscoveryType" json:"type,omitempty"`
- // Configuration to use for EDS updates for the Cluster.
- EdsClusterConfig *Cluster_EdsClusterConfig `protobuf:"bytes,3,opt,name=eds_cluster_config,json=edsClusterConfig,proto3" json:"eds_cluster_config,omitempty"`
- // The timeout for new network connections to hosts in the cluster.
- ConnectTimeout *Duration `protobuf:"bytes,4,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"`
- // Soft limit on size of the cluster’s connections read and write buffers. If
- // unspecified, an implementation defined default is applied (1MiB).
- PerConnectionBufferLimitBytes *UInt32Value `protobuf:"bytes,5,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"`
- // The :ref:`load balancer type ` to use
- // when picking a host in the cluster.
- LbPolicy Cluster_LbPolicy `protobuf:"varint,6,opt,name=lb_policy,json=lbPolicy,proto3,enum=xds.Cluster_LbPolicy" json:"lb_policy,omitempty"`
- // If the service discovery type is
- // :ref:`STATIC`,
- // :ref:`STRICT_DNS`
- // or :ref:`LOGICAL_DNS`,
- // then hosts is required.
- Hosts []*Address `protobuf:"bytes,7,rep,name=hosts,proto3" json:"hosts,omitempty"`
- // Optional maximum requests for a single upstream connection. This parameter
- // is respected by both the HTTP/1.1 and HTTP/2 connection pool
- // implementations. If not specified, there is no limit. Setting this
- // parameter to 1 will effectively disable keep alive.
- MaxRequestsPerConnection *UInt32Value `protobuf:"bytes,9,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"`
- // If the DNS refresh rate is specified and the cluster type is either
- // :ref:`STRICT_DNS`,
- // or :ref:`LOGICAL_DNS`,
- // this value is used as the cluster’s DNS refresh
- // rate. If this setting is not specified, the value defaults to 5000. For
- // cluster types other than
- // :ref:`STRICT_DNS`
- // and :ref:`LOGICAL_DNS`
- // this setting is ignored.
- DnsRefreshRate *Duration `protobuf:"bytes,16,opt,name=dns_refresh_rate,json=dnsRefreshRate,proto3" json:"dns_refresh_rate,omitempty"`
- // The DNS IP address resolution policy. If this setting is not specified, the
- // value defaults to
- // :ref:`AUTO`.
- DnsLookupFamily Cluster_DnsLookupFamily `protobuf:"varint,17,opt,name=dns_lookup_family,json=dnsLookupFamily,proto3,enum=xds.Cluster_DnsLookupFamily" json:"dns_lookup_family,omitempty"`
- // If DNS resolvers are specified and the cluster type is either
- // :ref:`STRICT_DNS`,
- // or :ref:`LOGICAL_DNS`,
- // this value is used to specify the cluster’s dns resolvers.
- // If this setting is not specified, the value defaults to the default
- // resolver, which uses /etc/resolv.conf for configuration. For cluster types
- // other than
- // :ref:`STRICT_DNS`
- // and :ref:`LOGICAL_DNS`
- // this setting is ignored.
- DnsResolvers []*Address `protobuf:"bytes,18,rep,name=dns_resolvers,json=dnsResolvers,proto3" json:"dns_resolvers,omitempty"`
- // The interval for removing stale hosts from a cluster type
- // :ref:`ORIGINAL_DST`.
- // Hosts are considered stale if they have not been used
- // as upstream destinations during this interval. New hosts are added
- // to original destination clusters on demand as new connections are
- // redirected to Envoy, causing the number of hosts in the cluster to
- // grow over time. Hosts that are not stale (they are actively used as
- // destinations) are kept in the cluster, which allows connections to
- // them remain open, saving the latency that would otherwise be spent
- // on opening new connections. If this setting is not specified, the
- // value defaults to 5000ms. For cluster types other than
- // :ref:`ORIGINAL_DST`
- // this setting is ignored.
- CleanupInterval *Duration `protobuf:"bytes,20,opt,name=cleanup_interval,json=cleanupInterval,proto3" json:"cleanup_interval,omitempty"`
- // Optional configuration used to bind newly established upstream connections.
- // This overrides any bind_config specified in the bootstrap proto.
- // If the address and port are empty, no bind will be performed.
- UpstreamBindConfig *BindConfig `protobuf:"bytes,21,opt,name=upstream_bind_config,json=upstreamBindConfig,proto3" json:"upstream_bind_config,omitempty"`
- // Configuration for load balancing subsetting.
- LbSubsetConfig *Cluster_LbSubsetConfig `protobuf:"bytes,22,opt,name=lb_subset_config,json=lbSubsetConfig,proto3" json:"lb_subset_config,omitempty"`
- // Optional configuration for the load balancing algorithm selected by
- // LbPolicy. Currently only
- // :ref:`RING_HASH`
- // has additional configuration options.
- // Specifying ring_hash_lb_config without setting the LbPolicy to
- // :ref:`RING_HASH`
- // will generate an error at runtime.
- //
- // Types that are assignable to LbConfig:
- // *Cluster_RingHashLbConfig_
- LbConfig isCluster_LbConfig `protobuf_oneof:"lb_config"`
- // Common configuration for all load balancer implementations.
- CommonLbConfig *Cluster_CommonLbConfig `protobuf:"bytes,27,opt,name=common_lb_config,json=commonLbConfig,proto3" json:"common_lb_config,omitempty"`
- // The Metadata field can be used to provide additional information about the
- // cluster. It can be used for stats, logging, and varying filter behavior.
- // Fields should use reverse DNS notation to denote which entity within Envoy
- // will need the information. For instance, if the metadata is intended for
- // the Router filter, the filter name should be specified as *envoy.router*.
- Metadata *Metadata `protobuf:"bytes,25,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // Determines how Envoy selects the protocol used to speak to upstream hosts.
- ProtocolSelection Cluster_ClusterProtocolSelection `protobuf:"varint,26,opt,name=protocol_selection,json=protocolSelection,proto3,enum=xds.Cluster_ClusterProtocolSelection" json:"protocol_selection,omitempty"`
-}
-
-func (x *Cluster) Reset() {
- *x = Cluster{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster) ProtoMessage() {}
-
-func (x *Cluster) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster.ProtoReflect.Descriptor instead.
-func (*Cluster) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Cluster) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Cluster) GetAltStatName() string {
- if x != nil {
- return x.AltStatName
- }
- return ""
-}
-
-func (x *Cluster) GetType() Cluster_DiscoveryType {
- if x != nil {
- return x.Type
- }
- return Cluster_STATIC
-}
-
-func (x *Cluster) GetEdsClusterConfig() *Cluster_EdsClusterConfig {
- if x != nil {
- return x.EdsClusterConfig
- }
- return nil
-}
-
-func (x *Cluster) GetConnectTimeout() *Duration {
- if x != nil {
- return x.ConnectTimeout
- }
- return nil
-}
-
-func (x *Cluster) GetPerConnectionBufferLimitBytes() *UInt32Value {
- if x != nil {
- return x.PerConnectionBufferLimitBytes
- }
- return nil
-}
-
-func (x *Cluster) GetLbPolicy() Cluster_LbPolicy {
- if x != nil {
- return x.LbPolicy
- }
- return Cluster_ROUND_ROBIN
-}
-
-func (x *Cluster) GetHosts() []*Address {
- if x != nil {
- return x.Hosts
- }
- return nil
-}
-
-func (x *Cluster) GetMaxRequestsPerConnection() *UInt32Value {
- if x != nil {
- return x.MaxRequestsPerConnection
- }
- return nil
-}
-
-func (x *Cluster) GetDnsRefreshRate() *Duration {
- if x != nil {
- return x.DnsRefreshRate
- }
- return nil
-}
-
-func (x *Cluster) GetDnsLookupFamily() Cluster_DnsLookupFamily {
- if x != nil {
- return x.DnsLookupFamily
- }
- return Cluster_AUTO
-}
-
-func (x *Cluster) GetDnsResolvers() []*Address {
- if x != nil {
- return x.DnsResolvers
- }
- return nil
-}
-
-func (x *Cluster) GetCleanupInterval() *Duration {
- if x != nil {
- return x.CleanupInterval
- }
- return nil
-}
-
-func (x *Cluster) GetUpstreamBindConfig() *BindConfig {
- if x != nil {
- return x.UpstreamBindConfig
- }
- return nil
-}
-
-func (x *Cluster) GetLbSubsetConfig() *Cluster_LbSubsetConfig {
- if x != nil {
- return x.LbSubsetConfig
- }
- return nil
-}
-
-func (m *Cluster) GetLbConfig() isCluster_LbConfig {
- if m != nil {
- return m.LbConfig
- }
- return nil
-}
-
-func (x *Cluster) GetRingHashLbConfig() *Cluster_RingHashLbConfig {
- if x, ok := x.GetLbConfig().(*Cluster_RingHashLbConfig_); ok {
- return x.RingHashLbConfig
- }
- return nil
-}
-
-func (x *Cluster) GetCommonLbConfig() *Cluster_CommonLbConfig {
- if x != nil {
- return x.CommonLbConfig
- }
- return nil
-}
-
-func (x *Cluster) GetMetadata() *Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *Cluster) GetProtocolSelection() Cluster_ClusterProtocolSelection {
- if x != nil {
- return x.ProtocolSelection
- }
- return Cluster_USE_CONFIGURED_PROTOCOL
-}
-
-type isCluster_LbConfig interface {
- isCluster_LbConfig()
-}
-
-type Cluster_RingHashLbConfig_ struct {
- // Optional configuration for the Ring Hash load balancing policy.
- RingHashLbConfig *Cluster_RingHashLbConfig `protobuf:"bytes,23,opt,name=ring_hash_lb_config,json=ringHashLbConfig,proto3,oneof"`
-}
-
-func (*Cluster_RingHashLbConfig_) isCluster_LbConfig() {}
-
-// An extensible structure containing the address Envoy should bind to when
-// establishing upstream connections.
-type UpstreamBindConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The address Envoy should bind to when establishing upstream connections.
- SourceAddress *Address `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3" json:"source_address,omitempty"`
-}
-
-func (x *UpstreamBindConfig) Reset() {
- *x = UpstreamBindConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UpstreamBindConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpstreamBindConfig) ProtoMessage() {}
-
-func (x *UpstreamBindConfig) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpstreamBindConfig.ProtoReflect.Descriptor instead.
-func (*UpstreamBindConfig) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *UpstreamBindConfig) GetSourceAddress() *Address {
- if x != nil {
- return x.SourceAddress
- }
- return nil
-}
-
-// Configuration for :ref:`listeners `, :ref:`clusters
-// `, :ref:`routes
-// `, :ref:`endpoints
-// ` etc. may either be sourced from the
-// filesystem or from an xDS API source. Filesystem configs are watched with
-// inotify for updates.
-type ConfigSource struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to ConfigSourceSpecifier:
- // *ConfigSource_Path
- // *ConfigSource_Ads
- ConfigSourceSpecifier isConfigSource_ConfigSourceSpecifier `protobuf_oneof:"config_source_specifier"`
-}
-
-func (x *ConfigSource) Reset() {
- *x = ConfigSource{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ConfigSource) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConfigSource) ProtoMessage() {}
-
-func (x *ConfigSource) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConfigSource.ProtoReflect.Descriptor instead.
-func (*ConfigSource) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{2}
-}
-
-func (m *ConfigSource) GetConfigSourceSpecifier() isConfigSource_ConfigSourceSpecifier {
- if m != nil {
- return m.ConfigSourceSpecifier
- }
- return nil
-}
-
-func (x *ConfigSource) GetPath() string {
- if x, ok := x.GetConfigSourceSpecifier().(*ConfigSource_Path); ok {
- return x.Path
- }
- return ""
-}
-
-func (x *ConfigSource) GetAds() *AggregatedConfigSource {
- if x, ok := x.GetConfigSourceSpecifier().(*ConfigSource_Ads); ok {
- return x.Ads
- }
- return nil
-}
-
-type isConfigSource_ConfigSourceSpecifier interface {
- isConfigSource_ConfigSourceSpecifier()
-}
-
-type ConfigSource_Path struct {
- // Path on the filesystem to source and watch for configuration updates.
- //
- // .. note::
- //
- // The path to the source must exist at config load time.
- //
- // .. note::
- //
- // Envoy will only watch the file path for *moves.* This is because in general only moves
- // are atomic. The same method of swapping files as is demonstrated in the
- // :ref:`runtime documentation ` can be used here also.
- Path string `protobuf:"bytes,1,opt,name=path,proto3,oneof"`
-}
-
-type ConfigSource_Ads struct {
- // API configuration source.
- //ApiConfigSource api_config_source = 2;
- // When set, ADS will be used to fetch resources. The ADS API configuration
- // source in the bootstrap configuration is used.
- Ads *AggregatedConfigSource `protobuf:"bytes,3,opt,name=ads,proto3,oneof"`
-}
-
-func (*ConfigSource_Path) isConfigSource_ConfigSourceSpecifier() {}
-
-func (*ConfigSource_Ads) isConfigSource_ConfigSourceSpecifier() {}
-
-type AggregatedConfigSource struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *AggregatedConfigSource) Reset() {
- *x = AggregatedConfigSource{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AggregatedConfigSource) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AggregatedConfigSource) ProtoMessage() {}
-
-func (x *AggregatedConfigSource) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AggregatedConfigSource.ProtoReflect.Descriptor instead.
-func (*AggregatedConfigSource) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{3}
-}
-
-// Only valid when discovery type is EDS.
-type Cluster_EdsClusterConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Configuration for the source of EDS updates for this Cluster.
- EdsConfig *ConfigSource `protobuf:"bytes,1,opt,name=eds_config,json=edsConfig,proto3" json:"eds_config,omitempty"`
- // Optional alternative to cluster name to present to EDS. This does not
- // have the same restrictions as cluster name, i.e. it may be arbitrary
- // length.
- ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
-}
-
-func (x *Cluster_EdsClusterConfig) Reset() {
- *x = Cluster_EdsClusterConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_EdsClusterConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_EdsClusterConfig) ProtoMessage() {}
-
-func (x *Cluster_EdsClusterConfig) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_EdsClusterConfig.ProtoReflect.Descriptor instead.
-func (*Cluster_EdsClusterConfig) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *Cluster_EdsClusterConfig) GetEdsConfig() *ConfigSource {
- if x != nil {
- return x.EdsConfig
- }
- return nil
-}
-
-func (x *Cluster_EdsClusterConfig) GetServiceName() string {
- if x != nil {
- return x.ServiceName
- }
- return ""
-}
-
-// Optionally divide the endpoints in this cluster into subsets defined by
-// endpoint metadata and selected by route and weighted cluster metadata.
-type Cluster_LbSubsetConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The behavior used when no endpoint subset matches the selected route's
- // metadata. The value defaults to
- // :ref:`NO_FALLBACK`.
- FallbackPolicy Cluster_LbSubsetConfig_LbSubsetFallbackPolicy `protobuf:"varint,1,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=xds.Cluster_LbSubsetConfig_LbSubsetFallbackPolicy" json:"fallback_policy,omitempty"`
- // Specifies the default subset of endpoints used during fallback if
- // fallback_policy is
- // :ref:`DEFAULT_SUBSET`.
- // Each field in default_subset is
- // compared to the matching LbEndpoint.Metadata under the *envoy.lb*
- // namespace. It is valid for no hosts to match, in which case the behavior
- // is the same as a fallback_policy of
- // :ref:`NO_FALLBACK`.
- DefaultSubset *Struct `protobuf:"bytes,2,opt,name=default_subset,json=defaultSubset,proto3" json:"default_subset,omitempty"`
- // For each entry, LbEndpoint.Metadata's
- // *envoy.lb* namespace is traversed and a subset is created for each unique
- // combination of key and value. For example:
- //
- // .. code-block:: json
- //
- // { "subset_selectors": [
- // { "keys": [ "version" ] },
- // { "keys": [ "stage", "hardware_type" ] }
- // ]}
- //
- // A subset is matched when the metadata from the selected route and
- // weighted cluster contains the same keys and values as the subset's
- // metadata. The same host may appear in multiple subsets.
- SubsetSelectors []*Cluster_LbSubsetConfig_LbSubsetSelector `protobuf:"bytes,3,rep,name=subset_selectors,json=subsetSelectors,proto3" json:"subset_selectors,omitempty"`
-}
-
-func (x *Cluster_LbSubsetConfig) Reset() {
- *x = Cluster_LbSubsetConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_LbSubsetConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_LbSubsetConfig) ProtoMessage() {}
-
-func (x *Cluster_LbSubsetConfig) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_LbSubsetConfig.ProtoReflect.Descriptor instead.
-func (*Cluster_LbSubsetConfig) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *Cluster_LbSubsetConfig) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetFallbackPolicy {
- if x != nil {
- return x.FallbackPolicy
- }
- return Cluster_LbSubsetConfig_NO_FALLBACK
-}
-
-func (x *Cluster_LbSubsetConfig) GetDefaultSubset() *Struct {
- if x != nil {
- return x.DefaultSubset
- }
- return nil
-}
-
-func (x *Cluster_LbSubsetConfig) GetSubsetSelectors() []*Cluster_LbSubsetConfig_LbSubsetSelector {
- if x != nil {
- return x.SubsetSelectors
- }
- return nil
-}
-
-// Specific configuration for the :ref:`RingHash`
-// load balancing policy.
-type Cluster_RingHashLbConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Deprecated settings from v1 config.
- // [#not-implemented-hide:] Hide from docs.
- //
- // Deprecated: Do not use.
- DeprecatedV1 *Cluster_RingHashLbConfig_DeprecatedV1 `protobuf:"bytes,2,opt,name=deprecated_v1,json=deprecatedV1,proto3" json:"deprecated_v1,omitempty"`
-}
-
-func (x *Cluster_RingHashLbConfig) Reset() {
- *x = Cluster_RingHashLbConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_RingHashLbConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_RingHashLbConfig) ProtoMessage() {}
-
-func (x *Cluster_RingHashLbConfig) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_RingHashLbConfig.ProtoReflect.Descriptor instead.
-func (*Cluster_RingHashLbConfig) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 2}
-}
-
-// Deprecated: Do not use.
-func (x *Cluster_RingHashLbConfig) GetDeprecatedV1() *Cluster_RingHashLbConfig_DeprecatedV1 {
- if x != nil {
- return x.DeprecatedV1
- }
- return nil
-}
-
-// Common configuration for all load balancer implementations.
-type Cluster_CommonLbConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *Cluster_CommonLbConfig) Reset() {
- *x = Cluster_CommonLbConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_CommonLbConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_CommonLbConfig) ProtoMessage() {}
-
-func (x *Cluster_CommonLbConfig) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_CommonLbConfig.ProtoReflect.Descriptor instead.
-func (*Cluster_CommonLbConfig) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 3}
-}
-
-// Specifications for subsets.
-type Cluster_LbSubsetConfig_LbSubsetSelector struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // List of keys to match with the weighted cluster metadata.
- Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
-}
-
-func (x *Cluster_LbSubsetConfig_LbSubsetSelector) Reset() {
- *x = Cluster_LbSubsetConfig_LbSubsetSelector{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_LbSubsetConfig_LbSubsetSelector) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_LbSubsetConfig_LbSubsetSelector) ProtoMessage() {}
-
-func (x *Cluster_LbSubsetConfig_LbSubsetSelector) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_LbSubsetConfig_LbSubsetSelector.ProtoReflect.Descriptor instead.
-func (*Cluster_LbSubsetConfig_LbSubsetSelector) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 1, 0}
-}
-
-func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetKeys() []string {
- if x != nil {
- return x.Keys
- }
- return nil
-}
-
-// [#not-implemented-hide:] Hide from docs.
-type Cluster_RingHashLbConfig_DeprecatedV1 struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Defaults to true, meaning that std::hash is used to hash hosts onto
- // the ketama ring. std::hash can vary by platform. For this reason,
- // Envoy will eventually use `xxHash `_
- // by default. This field exists for
- // migration purposes and will eventually be deprecated. Set it to false
- // to use `xxHash `_ now.
- UseStdHash *BoolValue `protobuf:"bytes,1,opt,name=use_std_hash,json=useStdHash,proto3" json:"use_std_hash,omitempty"`
-}
-
-func (x *Cluster_RingHashLbConfig_DeprecatedV1) Reset() {
- *x = Cluster_RingHashLbConfig_DeprecatedV1{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_cds_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_RingHashLbConfig_DeprecatedV1) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_RingHashLbConfig_DeprecatedV1) ProtoMessage() {}
-
-func (x *Cluster_RingHashLbConfig_DeprecatedV1) ProtoReflect() protoreflect.Message {
- mi := &file_xds_cds_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_RingHashLbConfig_DeprecatedV1.ProtoReflect.Descriptor instead.
-func (*Cluster_RingHashLbConfig_DeprecatedV1) Descriptor() ([]byte, []int) {
- return file_xds_cds_proto_rawDescGZIP(), []int{0, 2, 0}
-}
-
-func (x *Cluster_RingHashLbConfig_DeprecatedV1) GetUseStdHash() *BoolValue {
- if x != nil {
- return x.UseStdHash
- }
- return nil
-}
-
-var File_xds_cds_proto protoreflect.FileDescriptor
-
-var file_xds_cds_proto_rawDesc = []byte{
- 0x0a, 0x0d, 0x78, 0x64, 0x73, 0x2f, 0x63, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
- 0x03, 0x78, 0x64, 0x73, 0x1a, 0x0e, 0x78, 0x64, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f,
- 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x11, 0x0a, 0x07, 0x43,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x6c,
- 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e,
- 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f,
- 0x76, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4b,
- 0x0a, 0x12, 0x65, 0x64, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x64, 0x73,
- 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x65, 0x64, 0x73, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x0f, 0x63,
- 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65,
- 0x6f, 0x75, 0x74, 0x12, 0x5a, 0x0a, 0x21, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42,
- 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
- 0x32, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x2e, 0x4c, 0x62, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x6c, 0x62, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18,
- 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f,
- 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x10, 0x64, 0x6e, 0x73, 0x5f,
- 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x0e, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74,
- 0x65, 0x12, 0x48, 0x0a, 0x11, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f,
- 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6e, 0x73, 0x4c, 0x6f,
- 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x0f, 0x64, 0x6e, 0x73, 0x4c,
- 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x31, 0x0a, 0x0d, 0x64,
- 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x52, 0x0c, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x73, 0x12, 0x38,
- 0x0a, 0x10, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76,
- 0x61, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70,
- 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x14, 0x75, 0x70, 0x73, 0x74,
- 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42, 0x69, 0x6e,
- 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x45, 0x0a, 0x10, 0x6c,
- 0x62, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
- 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x52, 0x0e, 0x6c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x13, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f,
- 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x69,
- 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00,
- 0x52, 0x10, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x12, 0x45, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6c, 0x62, 0x5f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64,
- 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x25, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x67, 0x0a, 0x10, 0x45, 0x64,
- 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30,
- 0x0a, 0x0a, 0x65, 0x64, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x65, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x1a, 0xf3, 0x02, 0x0a, 0x0e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5b, 0x0a, 0x0f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61,
- 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x32, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62,
- 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x62, 0x53,
- 0x75, 0x62, 0x73, 0x65, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x0e, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x12, 0x32, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73,
- 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x64,
- 0x73, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
- 0x74, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x57, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x65,
- 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
- 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c,
- 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52,
- 0x0f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73,
- 0x1a, 0x26, 0x0a, 0x10, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x4f, 0x0a, 0x16, 0x4c, 0x62, 0x53, 0x75,
- 0x62, 0x73, 0x65, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43,
- 0x4b, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x4e, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f,
- 0x49, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54,
- 0x5f, 0x53, 0x55, 0x42, 0x53, 0x45, 0x54, 0x10, 0x02, 0x1a, 0xa9, 0x01, 0x0a, 0x10, 0x52, 0x69,
- 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53,
- 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x31, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56,
- 0x31, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,
- 0x64, 0x56, 0x31, 0x1a, 0x40, 0x0a, 0x0c, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,
- 0x64, 0x56, 0x31, 0x12, 0x30, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x64, 0x5f, 0x68,
- 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x53, 0x74,
- 0x64, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x10, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c,
- 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x57, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x6f,
- 0x76, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54,
- 0x49, 0x43, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x5f, 0x44,
- 0x4e, 0x53, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f,
- 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x44, 0x53, 0x10, 0x03, 0x12, 0x10,
- 0x0a, 0x0c, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x10, 0x04,
- 0x22, 0x6a, 0x0a, 0x08, 0x4c, 0x62, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b,
- 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a,
- 0x0d, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01,
- 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x02, 0x12,
- 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4f,
- 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4c, 0x42, 0x10, 0x04,
- 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x47, 0x4c, 0x45, 0x56, 0x10, 0x05, 0x22, 0x35, 0x0a, 0x0f,
- 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12,
- 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x34, 0x5f,
- 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x36, 0x5f, 0x4f, 0x4e, 0x4c,
- 0x59, 0x10, 0x02, 0x22, 0x54, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x1b, 0x0a, 0x17, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45,
- 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17,
- 0x55, 0x53, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x50,
- 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x6c, 0x62, 0x5f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0f,
- 0x10, 0x10, 0x22, 0x49, 0x0a, 0x12, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x69,
- 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x0c, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0d,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x70, 0x0a,
- 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a,
- 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70,
- 0x61, 0x74, 0x68, 0x12, 0x2f, 0x0a, 0x03, 0x61, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1b, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
- 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52,
- 0x03, 0x61, 0x64, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22,
- 0x18, 0x0a, 0x16, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x32, 0x5a, 0x2d, 0x67, 0x69, 0x74,
- 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f,
- 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x78, 0x64, 0x73, 0x88, 0x01, 0x01, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_xds_cds_proto_rawDescOnce sync.Once
- file_xds_cds_proto_rawDescData = file_xds_cds_proto_rawDesc
-)
-
-func file_xds_cds_proto_rawDescGZIP() []byte {
- file_xds_cds_proto_rawDescOnce.Do(func() {
- file_xds_cds_proto_rawDescData = protoimpl.X.CompressGZIP(file_xds_cds_proto_rawDescData)
- })
- return file_xds_cds_proto_rawDescData
-}
-
-var file_xds_cds_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
-var file_xds_cds_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
-var file_xds_cds_proto_goTypes = []interface{}{
- (Cluster_DiscoveryType)(0), // 0: xds.Cluster.DiscoveryType
- (Cluster_LbPolicy)(0), // 1: xds.Cluster.LbPolicy
- (Cluster_DnsLookupFamily)(0), // 2: xds.Cluster.DnsLookupFamily
- (Cluster_ClusterProtocolSelection)(0), // 3: xds.Cluster.ClusterProtocolSelection
- (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy)(0), // 4: xds.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy
- (*Cluster)(nil), // 5: xds.Cluster
- (*UpstreamBindConfig)(nil), // 6: xds.UpstreamBindConfig
- (*ConfigSource)(nil), // 7: xds.ConfigSource
- (*AggregatedConfigSource)(nil), // 8: xds.AggregatedConfigSource
- (*Cluster_EdsClusterConfig)(nil), // 9: xds.Cluster.EdsClusterConfig
- (*Cluster_LbSubsetConfig)(nil), // 10: xds.Cluster.LbSubsetConfig
- (*Cluster_RingHashLbConfig)(nil), // 11: xds.Cluster.RingHashLbConfig
- (*Cluster_CommonLbConfig)(nil), // 12: xds.Cluster.CommonLbConfig
- (*Cluster_LbSubsetConfig_LbSubsetSelector)(nil), // 13: xds.Cluster.LbSubsetConfig.LbSubsetSelector
- (*Cluster_RingHashLbConfig_DeprecatedV1)(nil), // 14: xds.Cluster.RingHashLbConfig.DeprecatedV1
- (*Duration)(nil), // 15: xds.Duration
- (*UInt32Value)(nil), // 16: xds.UInt32Value
- (*Address)(nil), // 17: xds.Address
- (*BindConfig)(nil), // 18: xds.BindConfig
- (*Metadata)(nil), // 19: xds.Metadata
- (*Struct)(nil), // 20: xds.Struct
- (*BoolValue)(nil), // 21: xds.BoolValue
-}
-var file_xds_cds_proto_depIdxs = []int32{
- 0, // 0: xds.Cluster.type:type_name -> xds.Cluster.DiscoveryType
- 9, // 1: xds.Cluster.eds_cluster_config:type_name -> xds.Cluster.EdsClusterConfig
- 15, // 2: xds.Cluster.connect_timeout:type_name -> xds.Duration
- 16, // 3: xds.Cluster.per_connection_buffer_limit_bytes:type_name -> xds.UInt32Value
- 1, // 4: xds.Cluster.lb_policy:type_name -> xds.Cluster.LbPolicy
- 17, // 5: xds.Cluster.hosts:type_name -> xds.Address
- 16, // 6: xds.Cluster.max_requests_per_connection:type_name -> xds.UInt32Value
- 15, // 7: xds.Cluster.dns_refresh_rate:type_name -> xds.Duration
- 2, // 8: xds.Cluster.dns_lookup_family:type_name -> xds.Cluster.DnsLookupFamily
- 17, // 9: xds.Cluster.dns_resolvers:type_name -> xds.Address
- 15, // 10: xds.Cluster.cleanup_interval:type_name -> xds.Duration
- 18, // 11: xds.Cluster.upstream_bind_config:type_name -> xds.BindConfig
- 10, // 12: xds.Cluster.lb_subset_config:type_name -> xds.Cluster.LbSubsetConfig
- 11, // 13: xds.Cluster.ring_hash_lb_config:type_name -> xds.Cluster.RingHashLbConfig
- 12, // 14: xds.Cluster.common_lb_config:type_name -> xds.Cluster.CommonLbConfig
- 19, // 15: xds.Cluster.metadata:type_name -> xds.Metadata
- 3, // 16: xds.Cluster.protocol_selection:type_name -> xds.Cluster.ClusterProtocolSelection
- 17, // 17: xds.UpstreamBindConfig.source_address:type_name -> xds.Address
- 8, // 18: xds.ConfigSource.ads:type_name -> xds.AggregatedConfigSource
- 7, // 19: xds.Cluster.EdsClusterConfig.eds_config:type_name -> xds.ConfigSource
- 4, // 20: xds.Cluster.LbSubsetConfig.fallback_policy:type_name -> xds.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy
- 20, // 21: xds.Cluster.LbSubsetConfig.default_subset:type_name -> xds.Struct
- 13, // 22: xds.Cluster.LbSubsetConfig.subset_selectors:type_name -> xds.Cluster.LbSubsetConfig.LbSubsetSelector
- 14, // 23: xds.Cluster.RingHashLbConfig.deprecated_v1:type_name -> xds.Cluster.RingHashLbConfig.DeprecatedV1
- 21, // 24: xds.Cluster.RingHashLbConfig.DeprecatedV1.use_std_hash:type_name -> xds.BoolValue
- 25, // [25:25] is the sub-list for method output_type
- 25, // [25:25] is the sub-list for method input_type
- 25, // [25:25] is the sub-list for extension type_name
- 25, // [25:25] is the sub-list for extension extendee
- 0, // [0:25] is the sub-list for field type_name
-}
-
-func init() { file_xds_cds_proto_init() }
-func file_xds_cds_proto_init() {
- if File_xds_cds_proto != nil {
- return
- }
- file_xds_base_proto_init()
- file_xds_envoy_base_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_xds_cds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpstreamBindConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConfigSource); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AggregatedConfigSource); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_EdsClusterConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_LbSubsetConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_RingHashLbConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_CommonLbConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_LbSubsetConfig_LbSubsetSelector); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_cds_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_RingHashLbConfig_DeprecatedV1); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_xds_cds_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*Cluster_RingHashLbConfig_)(nil),
- }
- file_xds_cds_proto_msgTypes[2].OneofWrappers = []interface{}{
- (*ConfigSource_Path)(nil),
- (*ConfigSource_Ads)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_xds_cds_proto_rawDesc,
- NumEnums: 5,
- NumMessages: 10,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_xds_cds_proto_goTypes,
- DependencyIndexes: file_xds_cds_proto_depIdxs,
- EnumInfos: file_xds_cds_proto_enumTypes,
- MessageInfos: file_xds_cds_proto_msgTypes,
- }.Build()
- File_xds_cds_proto = out.File
- file_xds_cds_proto_rawDesc = nil
- file_xds_cds_proto_goTypes = nil
- file_xds_cds_proto_depIdxs = nil
-}
diff --git a/gen/proto/xds/eds.pb.go b/gen/proto/xds/eds.pb.go
deleted file mode 100644
index 9e41efb..0000000
--- a/gen/proto/xds/eds.pb.go
+++ /dev/null
@@ -1,488 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: xds/eds.proto
-
-package xds
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Each route from RDS will map to a single cluster or traffic split across
-// clusters using weights expressed in the RDS WeightedCluster.
-//
-// With EDS, each cluster is treated independently from a LB perspective, with
-// LB taking place between the Localities within a cluster and at a finer
-// granularity between the hosts within a locality. For a given cluster, the
-// effective weight of a host is its load_balancing_weight multiplied by the
-// load_balancing_weight of its Locality.
-type ClusterLoadAssignment struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Name of the cluster. This will be the :ref:`service_name
- // ` value if specified
- // in the cluster :ref:`EdsClusterConfig
- // `.
- ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
- // List of endpoints to load balance to.
- Endpoints []*LocalityLbEndpoints `protobuf:"bytes,2,rep,name=endpoints,proto3" json:"endpoints,omitempty"`
-}
-
-func (x *ClusterLoadAssignment) Reset() {
- *x = ClusterLoadAssignment{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_eds_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterLoadAssignment) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterLoadAssignment) ProtoMessage() {}
-
-func (x *ClusterLoadAssignment) ProtoReflect() protoreflect.Message {
- mi := &file_xds_eds_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterLoadAssignment.ProtoReflect.Descriptor instead.
-func (*ClusterLoadAssignment) Descriptor() ([]byte, []int) {
- return file_xds_eds_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ClusterLoadAssignment) GetClusterName() string {
- if x != nil {
- return x.ClusterName
- }
- return ""
-}
-
-func (x *ClusterLoadAssignment) GetEndpoints() []*LocalityLbEndpoints {
- if x != nil {
- return x.Endpoints
- }
- return nil
-}
-
-// A group of endpoints belonging to a Locality.
-// One can have multiple LocalityLbEndpoints for a locality, but this is
-// generally only done if the different groups need to have different load
-// balancing weights or different priorities.
-type LocalityLbEndpoints struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Identifies location of where the upstream hosts run.
- Locality *Locality `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"`
- // The group of endpoints belonging to the locality specified.
- LbEndpoints []*LbEndpoint `protobuf:"bytes,2,rep,name=lb_endpoints,json=lbEndpoints,proto3" json:"lb_endpoints,omitempty"`
- // Optional: Per priority/region/zone/sub_zone weight - range 1-128. The load
- // balancing weight for a locality is divided by the sum of the weights of all
- // localities at the same priority level to produce the effective percentage
- // of traffic for the locality.
- //
- // Weights must be specified for either all localities in a given priority
- // level or none.
- //
- // If unspecified, each locality is presumed to have equal weight in a
- // cluster.
- //
- // .. attention::
- //
- // The limit of 128 is somewhat arbitrary, but is applied due to performance
- // concerns with the current implementation and can be removed when
- // `this issue `_ is fixed.
- LoadBalancingWeight *UInt32Value `protobuf:"bytes,3,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"`
- // Optional: the priority for this LocalityLbEndpoints. If unspecified this will
- // default to the highest priority (0).
- //
- // Under usual circumstances, Envoy will only select endpoints for the highest
- // priority (0). In the event all endpoints for a particular priority are
- // unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
- // next highest priority group.
- //
- // Priorities should range from 0 (highest) to N (lowest) without skipping.
- Priority uint32 `protobuf:"varint,5,opt,name=priority,proto3" json:"priority,omitempty"`
-}
-
-func (x *LocalityLbEndpoints) Reset() {
- *x = LocalityLbEndpoints{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_eds_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LocalityLbEndpoints) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LocalityLbEndpoints) ProtoMessage() {}
-
-func (x *LocalityLbEndpoints) ProtoReflect() protoreflect.Message {
- mi := &file_xds_eds_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LocalityLbEndpoints.ProtoReflect.Descriptor instead.
-func (*LocalityLbEndpoints) Descriptor() ([]byte, []int) {
- return file_xds_eds_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *LocalityLbEndpoints) GetLocality() *Locality {
- if x != nil {
- return x.Locality
- }
- return nil
-}
-
-func (x *LocalityLbEndpoints) GetLbEndpoints() []*LbEndpoint {
- if x != nil {
- return x.LbEndpoints
- }
- return nil
-}
-
-func (x *LocalityLbEndpoints) GetLoadBalancingWeight() *UInt32Value {
- if x != nil {
- return x.LoadBalancingWeight
- }
- return nil
-}
-
-func (x *LocalityLbEndpoints) GetPriority() uint32 {
- if x != nil {
- return x.Priority
- }
- return 0
-}
-
-// An Endpoint that Envoy can route traffic to.
-type LbEndpoint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Upstream host identifier
- Endpoint *Endpoint `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
- // The endpoint metadata specifies values that may be used by the load
- // balancer to select endpoints in a cluster for a given request. The filter
- // name should be specified as *envoy.lb*. An example boolean key-value pair
- // is *canary*, providing the optional canary status of the upstream host.
- // This may be matched against in a route's ForwardAction metadata_match field
- // to subset the endpoints considered in cluster load balancing.
- Metadata *Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // The optional load balancing weight of the upstream host, in the range 1 -
- // 128. Envoy uses the load balancing weight in some of the built in load
- // balancers. The load balancing weight for an endpoint is divided by the sum
- // of the weights of all endpoints in the endpoint's locality to produce a
- // percentage of traffic for the endpoint. This percentage is then further
- // weighted by the endpoint's locality's load balancing weight from
- // LocalityLbEndpoints. If unspecified, each host is presumed to have equal
- // weight in a locality.
- //
- // .. attention::
- //
- // The limit of 128 is somewhat arbitrary, but is applied due to performance
- // concerns with the current implementation and can be removed when
- // `this issue `_ is fixed.
- LoadBalancingWeight *UInt32Value `protobuf:"bytes,4,opt,name=load_balancing_weight,json=loadBalancingWeight,proto3" json:"load_balancing_weight,omitempty"`
-}
-
-func (x *LbEndpoint) Reset() {
- *x = LbEndpoint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_eds_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LbEndpoint) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LbEndpoint) ProtoMessage() {}
-
-func (x *LbEndpoint) ProtoReflect() protoreflect.Message {
- mi := &file_xds_eds_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LbEndpoint.ProtoReflect.Descriptor instead.
-func (*LbEndpoint) Descriptor() ([]byte, []int) {
- return file_xds_eds_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *LbEndpoint) GetEndpoint() *Endpoint {
- if x != nil {
- return x.Endpoint
- }
- return nil
-}
-
-func (x *LbEndpoint) GetMetadata() *Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *LbEndpoint) GetLoadBalancingWeight() *UInt32Value {
- if x != nil {
- return x.LoadBalancingWeight
- }
- return nil
-}
-
-// Upstream host identifier.
-type Endpoint struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Address *Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
-}
-
-func (x *Endpoint) Reset() {
- *x = Endpoint{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_eds_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Endpoint) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Endpoint) ProtoMessage() {}
-
-func (x *Endpoint) ProtoReflect() protoreflect.Message {
- mi := &file_xds_eds_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Endpoint.ProtoReflect.Descriptor instead.
-func (*Endpoint) Descriptor() ([]byte, []int) {
- return file_xds_eds_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Endpoint) GetAddress() *Address {
- if x != nil {
- return x.Address
- }
- return nil
-}
-
-var File_xds_eds_proto protoreflect.FileDescriptor
-
-var file_xds_eds_proto_rawDesc = []byte{
- 0x0a, 0x0d, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
- 0x03, 0x78, 0x64, 0x73, 0x1a, 0x0e, 0x78, 0x64, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f,
- 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x72, 0x0a, 0x15, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x61, 0x64, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d,
- 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
- 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69,
- 0x6e, 0x74, 0x73, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xd6,
- 0x01, 0x0a, 0x13, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x62, 0x45, 0x6e, 0x64,
- 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
- 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4c,
- 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74,
- 0x79, 0x12, 0x32, 0x0a, 0x0c, 0x6c, 0x62, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4c, 0x62,
- 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x6c, 0x62, 0x45, 0x6e, 0x64, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61,
- 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33,
- 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
- 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
- 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70,
- 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xa8, 0x01, 0x0a, 0x0a, 0x4c, 0x62, 0x45, 0x6e,
- 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
- 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x45,
- 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x15,
- 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x77,
- 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x64,
- 0x73, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x6c,
- 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67,
- 0x68, 0x74, 0x22, 0x32, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26,
- 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x0c, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x32, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70,
- 0x63, 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2f, 0x67, 0x6f, 0x2f, 0x78, 0x64, 0x73, 0x88, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
-}
-
-var (
- file_xds_eds_proto_rawDescOnce sync.Once
- file_xds_eds_proto_rawDescData = file_xds_eds_proto_rawDesc
-)
-
-func file_xds_eds_proto_rawDescGZIP() []byte {
- file_xds_eds_proto_rawDescOnce.Do(func() {
- file_xds_eds_proto_rawDescData = protoimpl.X.CompressGZIP(file_xds_eds_proto_rawDescData)
- })
- return file_xds_eds_proto_rawDescData
-}
-
-var file_xds_eds_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_xds_eds_proto_goTypes = []interface{}{
- (*ClusterLoadAssignment)(nil), // 0: xds.ClusterLoadAssignment
- (*LocalityLbEndpoints)(nil), // 1: xds.LocalityLbEndpoints
- (*LbEndpoint)(nil), // 2: xds.LbEndpoint
- (*Endpoint)(nil), // 3: xds.Endpoint
- (*Locality)(nil), // 4: xds.Locality
- (*UInt32Value)(nil), // 5: xds.UInt32Value
- (*Metadata)(nil), // 6: xds.Metadata
- (*Address)(nil), // 7: xds.Address
-}
-var file_xds_eds_proto_depIdxs = []int32{
- 1, // 0: xds.ClusterLoadAssignment.endpoints:type_name -> xds.LocalityLbEndpoints
- 4, // 1: xds.LocalityLbEndpoints.locality:type_name -> xds.Locality
- 2, // 2: xds.LocalityLbEndpoints.lb_endpoints:type_name -> xds.LbEndpoint
- 5, // 3: xds.LocalityLbEndpoints.load_balancing_weight:type_name -> xds.UInt32Value
- 3, // 4: xds.LbEndpoint.endpoint:type_name -> xds.Endpoint
- 6, // 5: xds.LbEndpoint.metadata:type_name -> xds.Metadata
- 5, // 6: xds.LbEndpoint.load_balancing_weight:type_name -> xds.UInt32Value
- 7, // 7: xds.Endpoint.address:type_name -> xds.Address
- 8, // [8:8] is the sub-list for method output_type
- 8, // [8:8] is the sub-list for method input_type
- 8, // [8:8] is the sub-list for extension type_name
- 8, // [8:8] is the sub-list for extension extendee
- 0, // [0:8] is the sub-list for field type_name
-}
-
-func init() { file_xds_eds_proto_init() }
-func file_xds_eds_proto_init() {
- if File_xds_eds_proto != nil {
- return
- }
- file_xds_base_proto_init()
- file_xds_envoy_base_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_xds_eds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterLoadAssignment); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_eds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LocalityLbEndpoints); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_eds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LbEndpoint); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_eds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Endpoint); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_xds_eds_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 4,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_xds_eds_proto_goTypes,
- DependencyIndexes: file_xds_eds_proto_depIdxs,
- MessageInfos: file_xds_eds_proto_msgTypes,
- }.Build()
- File_xds_eds_proto = out.File
- file_xds_eds_proto_rawDesc = nil
- file_xds_eds_proto_goTypes = nil
- file_xds_eds_proto_depIdxs = nil
-}
diff --git a/gen/proto/xds/envoy_base.pb.go b/gen/proto/xds/envoy_base.pb.go
deleted file mode 100644
index aced6cf..0000000
--- a/gen/proto/xds/envoy_base.pb.go
+++ /dev/null
@@ -1,812 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: xds/envoy_base.proto
-
-package xds
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type SocketAddress_Protocol int32
-
-const (
- SocketAddress_TCP SocketAddress_Protocol = 0
- // [#not-implemented-hide:]
- SocketAddress_UDP SocketAddress_Protocol = 1
-)
-
-// Enum value maps for SocketAddress_Protocol.
-var (
- SocketAddress_Protocol_name = map[int32]string{
- 0: "TCP",
- 1: "UDP",
- }
- SocketAddress_Protocol_value = map[string]int32{
- "TCP": 0,
- "UDP": 1,
- }
-)
-
-func (x SocketAddress_Protocol) Enum() *SocketAddress_Protocol {
- p := new(SocketAddress_Protocol)
- *p = x
- return p
-}
-
-func (x SocketAddress_Protocol) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (SocketAddress_Protocol) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_envoy_base_proto_enumTypes[0].Descriptor()
-}
-
-func (SocketAddress_Protocol) Type() protoreflect.EnumType {
- return &file_xds_envoy_base_proto_enumTypes[0]
-}
-
-func (x SocketAddress_Protocol) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use SocketAddress_Protocol.Descriptor instead.
-func (SocketAddress_Protocol) EnumDescriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{1, 0}
-}
-
-// Identifies location of where either Envoy runs or where upstream hosts run.
-type Locality struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Region this :ref:`zone ` belongs to.
- Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
- // Defines the local service zone where Envoy is running. Though optional, it
- // should be set if discovery service routing is used and the discovery
- // service exposes :ref:`zone data `,
- // either in this message or via :option:`--service-zone`. The meaning of zone
- // is context dependent, e.g. `Availability Zone (AZ)
- // `_
- // on AWS, `Zone `_ on
- // GCP, etc.
- Zone string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"`
- // When used for locality of upstream hosts, this field further splits zone
- // into smaller chunks of sub-zones so they can be load balanced
- // independently.
- SubZone string `protobuf:"bytes,3,opt,name=sub_zone,json=subZone,proto3" json:"sub_zone,omitempty"`
-}
-
-func (x *Locality) Reset() {
- *x = Locality{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_base_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Locality) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Locality) ProtoMessage() {}
-
-func (x *Locality) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_base_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Locality.ProtoReflect.Descriptor instead.
-func (*Locality) Descriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Locality) GetRegion() string {
- if x != nil {
- return x.Region
- }
- return ""
-}
-
-func (x *Locality) GetZone() string {
- if x != nil {
- return x.Zone
- }
- return ""
-}
-
-func (x *Locality) GetSubZone() string {
- if x != nil {
- return x.SubZone
- }
- return ""
-}
-
-type SocketAddress struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Protocol SocketAddress_Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=xds.SocketAddress_Protocol" json:"protocol,omitempty"`
- // The address for this socket. :ref:`Listeners ` will bind
- // to the address or outbound connections will be made. An empty address is
- // not allowed, specify ``0.0.0.0`` or ``::`` to bind any. It's still possible to
- // distinguish on an address via the prefix/suffix matching in
- // FilterChainMatch after connection. For :ref:`clusters
- // `, an address may be either an IP or
- // hostname to be resolved via DNS. If it is a hostname, :ref:`resolver_name
- // ` should be set unless default
- // (i.e. DNS) resolution is expected.
- Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
- // Types that are assignable to PortSpecifier:
- // *SocketAddress_PortValue
- // *SocketAddress_NamedPort
- PortSpecifier isSocketAddress_PortSpecifier `protobuf_oneof:"port_specifier"`
- // The name of the resolver. This must have been registered with Envoy. If this is
- // empty, a context dependent default applies. If address is a hostname this
- // should be set for resolution other than DNS. If the address is a concrete
- // IP address, no resolution will occur.
- ResolverName string `protobuf:"bytes,5,opt,name=resolver_name,json=resolverName,proto3" json:"resolver_name,omitempty"`
- // When binding to an IPv6 address above, this enables `IPv4 compatibity
- // `_. Binding to ``::`` will
- // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
- // IPv6 space as ``::FFFF:``.
- Ipv4Compat bool `protobuf:"varint,6,opt,name=ipv4_compat,json=ipv4Compat,proto3" json:"ipv4_compat,omitempty"`
-}
-
-func (x *SocketAddress) Reset() {
- *x = SocketAddress{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_base_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SocketAddress) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SocketAddress) ProtoMessage() {}
-
-func (x *SocketAddress) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_base_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SocketAddress.ProtoReflect.Descriptor instead.
-func (*SocketAddress) Descriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *SocketAddress) GetProtocol() SocketAddress_Protocol {
- if x != nil {
- return x.Protocol
- }
- return SocketAddress_TCP
-}
-
-func (x *SocketAddress) GetAddress() string {
- if x != nil {
- return x.Address
- }
- return ""
-}
-
-func (m *SocketAddress) GetPortSpecifier() isSocketAddress_PortSpecifier {
- if m != nil {
- return m.PortSpecifier
- }
- return nil
-}
-
-func (x *SocketAddress) GetPortValue() uint32 {
- if x, ok := x.GetPortSpecifier().(*SocketAddress_PortValue); ok {
- return x.PortValue
- }
- return 0
-}
-
-func (x *SocketAddress) GetNamedPort() string {
- if x, ok := x.GetPortSpecifier().(*SocketAddress_NamedPort); ok {
- return x.NamedPort
- }
- return ""
-}
-
-func (x *SocketAddress) GetResolverName() string {
- if x != nil {
- return x.ResolverName
- }
- return ""
-}
-
-func (x *SocketAddress) GetIpv4Compat() bool {
- if x != nil {
- return x.Ipv4Compat
- }
- return false
-}
-
-type isSocketAddress_PortSpecifier interface {
- isSocketAddress_PortSpecifier()
-}
-
-type SocketAddress_PortValue struct {
- PortValue uint32 `protobuf:"varint,3,opt,name=port_value,json=portValue,proto3,oneof"`
-}
-
-type SocketAddress_NamedPort struct {
- // This is only valid if :ref:`resolver_name
- // ` is specified below and the
- // named resolver is capable of named port resolution.
- NamedPort string `protobuf:"bytes,4,opt,name=named_port,json=namedPort,proto3,oneof"`
-}
-
-func (*SocketAddress_PortValue) isSocketAddress_PortSpecifier() {}
-
-func (*SocketAddress_NamedPort) isSocketAddress_PortSpecifier() {}
-
-// Metadata provides additional inputs to filters based on matched listeners,
-// filter chains, routes and endpoints. It is structured as a map from filter
-// name (in reverse DNS format) to metadata specific to the filter. Metadata
-// key-values for a filter are merged as connection and request handling occurs,
-// with later values for the same key overriding earlier values.
-//
-// An example use of metadata is providing additional values to
-// http_connection_manager in the envoy.http_connection_manager.access_log
-// namespace.
-//
-// For load balancing, Metadata provides a means to subset cluster endpoints.
-// Endpoints have a Metadata object associated and routes contain a Metadata
-// object to match against. There are some well defined metadata used today for
-// this purpose:
-//
-// * ``{"envoy.lb": {"canary": }}`` This indicates the canary status of an
-// endpoint and is also used during header processing
-// (x-envoy-upstream-canary) and for stats purposes.
-type Metadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Key is the reverse DNS filter name, e.g. com.acme.widget. The envoy.*
- // namespace is reserved for Envoy's built-in filters.
- FilterMetadata map[string]*Struct `protobuf:"bytes,1,rep,name=filter_metadata,json=filterMetadata,proto3" json:"filter_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Metadata) Reset() {
- *x = Metadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_base_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Metadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Metadata) ProtoMessage() {}
-
-func (x *Metadata) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_base_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Metadata.ProtoReflect.Descriptor instead.
-func (*Metadata) Descriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Metadata) GetFilterMetadata() map[string]*Struct {
- if x != nil {
- return x.FilterMetadata
- }
- return nil
-}
-
-// Addresses specify either a logical or physical address and port, which are
-// used to tell Envoy where to bind/listen, connect to upstream and find
-// management servers.
-type Address struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Address:
- // *Address_SocketAddress
- // *Address_Pipe
- Address isAddress_Address `protobuf_oneof:"address"`
-}
-
-func (x *Address) Reset() {
- *x = Address{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_base_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Address) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Address) ProtoMessage() {}
-
-func (x *Address) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_base_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Address.ProtoReflect.Descriptor instead.
-func (*Address) Descriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{3}
-}
-
-func (m *Address) GetAddress() isAddress_Address {
- if m != nil {
- return m.Address
- }
- return nil
-}
-
-func (x *Address) GetSocketAddress() *SocketAddress {
- if x, ok := x.GetAddress().(*Address_SocketAddress); ok {
- return x.SocketAddress
- }
- return nil
-}
-
-func (x *Address) GetPipe() *Pipe {
- if x, ok := x.GetAddress().(*Address_Pipe); ok {
- return x.Pipe
- }
- return nil
-}
-
-type isAddress_Address interface {
- isAddress_Address()
-}
-
-type Address_SocketAddress struct {
- SocketAddress *SocketAddress `protobuf:"bytes,1,opt,name=socket_address,json=socketAddress,proto3,oneof"`
-}
-
-type Address_Pipe struct {
- Pipe *Pipe `protobuf:"bytes,2,opt,name=pipe,proto3,oneof"`
-}
-
-func (*Address_SocketAddress) isAddress_Address() {}
-
-func (*Address_Pipe) isAddress_Address() {}
-
-type Pipe struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Unix Domain Socket path. On Linux, paths starting with '@' will use the
- // abstract namespace. The starting '@' is replaced by a null byte by Envoy.
- // Paths starting with '@' will result in an error in environments other than
- // Linux.
- Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
-}
-
-func (x *Pipe) Reset() {
- *x = Pipe{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_base_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Pipe) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Pipe) ProtoMessage() {}
-
-func (x *Pipe) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_base_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Pipe.ProtoReflect.Descriptor instead.
-func (*Pipe) Descriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Pipe) GetPath() string {
- if x != nil {
- return x.Path
- }
- return ""
-}
-
-type BindConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The address to bind to when creating a socket.
- SourceAddress *SocketAddress `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3" json:"source_address,omitempty"`
-}
-
-func (x *BindConfig) Reset() {
- *x = BindConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_base_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *BindConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BindConfig) ProtoMessage() {}
-
-func (x *BindConfig) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_base_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use BindConfig.ProtoReflect.Descriptor instead.
-func (*BindConfig) Descriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *BindConfig) GetSourceAddress() *SocketAddress {
- if x != nil {
- return x.SourceAddress
- }
- return nil
-}
-
-// CidrRange specifies an IP Address and a prefix length to construct
-// the subnet mask for a `CIDR `_ range.
-type CidrRange struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
- AddressPrefix string `protobuf:"bytes,1,opt,name=address_prefix,json=addressPrefix,proto3" json:"address_prefix,omitempty"`
- // Length of prefix, e.g. 0, 32.
- PrefixLen *UInt32Value `protobuf:"bytes,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"`
-}
-
-func (x *CidrRange) Reset() {
- *x = CidrRange{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_base_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CidrRange) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CidrRange) ProtoMessage() {}
-
-func (x *CidrRange) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_base_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CidrRange.ProtoReflect.Descriptor instead.
-func (*CidrRange) Descriptor() ([]byte, []int) {
- return file_xds_envoy_base_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *CidrRange) GetAddressPrefix() string {
- if x != nil {
- return x.AddressPrefix
- }
- return ""
-}
-
-func (x *CidrRange) GetPrefixLen() *UInt32Value {
- if x != nil {
- return x.PrefixLen
- }
- return nil
-}
-
-var File_xds_envoy_base_proto protoreflect.FileDescriptor
-
-var file_xds_envoy_base_proto_rawDesc = []byte{
- 0x0a, 0x14, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x61, 0x73, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x78, 0x64, 0x73, 0x1a, 0x0e, 0x78, 0x64, 0x73,
- 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x51, 0x0a, 0x08, 0x4c,
- 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f,
- 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12,
- 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a,
- 0x6f, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x5a, 0x6f, 0x6e, 0x65, 0x22, 0x9a,
- 0x02, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52,
- 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72,
- 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x70, 0x6f,
- 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65,
- 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
- 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x70,
- 0x76, 0x34, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0a, 0x69, 0x70, 0x76, 0x34, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x22, 0x1c, 0x0a, 0x08, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x00,
- 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x6f, 0x72,
- 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xa6, 0x01, 0x0a, 0x08,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4a, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4e, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x22, 0x72, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
- 0x3b, 0x0a, 0x0e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x53, 0x6f,
- 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73,
- 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x04,
- 0x70, 0x69, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x78, 0x64, 0x73,
- 0x2e, 0x50, 0x69, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x70, 0x65, 0x42, 0x09, 0x0a,
- 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x1a, 0x0a, 0x04, 0x50, 0x69, 0x70, 0x65,
- 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x70, 0x61, 0x74, 0x68, 0x22, 0x47, 0x0a, 0x0a, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x78, 0x64, 0x73,
- 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0d,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x63, 0x0a,
- 0x09, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69,
- 0x78, 0x12, 0x2f, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x55, 0x49, 0x6e, 0x74,
- 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c,
- 0x65, 0x6e, 0x42, 0x32, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65,
- 0x73, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f,
- 0x78, 0x64, 0x73, 0x88, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_xds_envoy_base_proto_rawDescOnce sync.Once
- file_xds_envoy_base_proto_rawDescData = file_xds_envoy_base_proto_rawDesc
-)
-
-func file_xds_envoy_base_proto_rawDescGZIP() []byte {
- file_xds_envoy_base_proto_rawDescOnce.Do(func() {
- file_xds_envoy_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_xds_envoy_base_proto_rawDescData)
- })
- return file_xds_envoy_base_proto_rawDescData
-}
-
-var file_xds_envoy_base_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_xds_envoy_base_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_xds_envoy_base_proto_goTypes = []interface{}{
- (SocketAddress_Protocol)(0), // 0: xds.SocketAddress.Protocol
- (*Locality)(nil), // 1: xds.Locality
- (*SocketAddress)(nil), // 2: xds.SocketAddress
- (*Metadata)(nil), // 3: xds.Metadata
- (*Address)(nil), // 4: xds.Address
- (*Pipe)(nil), // 5: xds.Pipe
- (*BindConfig)(nil), // 6: xds.BindConfig
- (*CidrRange)(nil), // 7: xds.CidrRange
- nil, // 8: xds.Metadata.FilterMetadataEntry
- (*UInt32Value)(nil), // 9: xds.UInt32Value
- (*Struct)(nil), // 10: xds.Struct
-}
-var file_xds_envoy_base_proto_depIdxs = []int32{
- 0, // 0: xds.SocketAddress.protocol:type_name -> xds.SocketAddress.Protocol
- 8, // 1: xds.Metadata.filter_metadata:type_name -> xds.Metadata.FilterMetadataEntry
- 2, // 2: xds.Address.socket_address:type_name -> xds.SocketAddress
- 5, // 3: xds.Address.pipe:type_name -> xds.Pipe
- 2, // 4: xds.BindConfig.source_address:type_name -> xds.SocketAddress
- 9, // 5: xds.CidrRange.prefix_len:type_name -> xds.UInt32Value
- 10, // 6: xds.Metadata.FilterMetadataEntry.value:type_name -> xds.Struct
- 7, // [7:7] is the sub-list for method output_type
- 7, // [7:7] is the sub-list for method input_type
- 7, // [7:7] is the sub-list for extension type_name
- 7, // [7:7] is the sub-list for extension extendee
- 0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_xds_envoy_base_proto_init() }
-func file_xds_envoy_base_proto_init() {
- if File_xds_envoy_base_proto != nil {
- return
- }
- file_xds_base_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_xds_envoy_base_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Locality); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_base_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SocketAddress); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_base_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Metadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_base_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Address); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_base_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Pipe); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_base_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BindConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_base_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CidrRange); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_xds_envoy_base_proto_msgTypes[1].OneofWrappers = []interface{}{
- (*SocketAddress_PortValue)(nil),
- (*SocketAddress_NamedPort)(nil),
- }
- file_xds_envoy_base_proto_msgTypes[3].OneofWrappers = []interface{}{
- (*Address_SocketAddress)(nil),
- (*Address_Pipe)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_xds_envoy_base_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 8,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_xds_envoy_base_proto_goTypes,
- DependencyIndexes: file_xds_envoy_base_proto_depIdxs,
- EnumInfos: file_xds_envoy_base_proto_enumTypes,
- MessageInfos: file_xds_envoy_base_proto_msgTypes,
- }.Build()
- File_xds_envoy_base_proto = out.File
- file_xds_envoy_base_proto_rawDesc = nil
- file_xds_envoy_base_proto_goTypes = nil
- file_xds_envoy_base_proto_depIdxs = nil
-}
diff --git a/gen/proto/xds/envoy_simplified.pb.go b/gen/proto/xds/envoy_simplified.pb.go
deleted file mode 100644
index cfbedc8..0000000
--- a/gen/proto/xds/envoy_simplified.pb.go
+++ /dev/null
@@ -1,511 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: xds/envoy_simplified.proto
-
-package xds
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// Identifies a specific Envoy instance. The node identifier is presented to the
-// management server, which may use this identifier to distinguish per Envoy
-// configuration for serving.
-type Node struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // An opaque node identifier for the Envoy node. This also provides the local
- // service node name. It should be set if any of the following features are
- // used: :ref:`statsd `, :ref:`CDS
- // `, and :ref:`HTTP tracing
- // `, either in this message or via
- // :option:`--service-node`.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // Defines the local service cluster name where Envoy is running. Though
- // optional, it should be set if any of the following features are used:
- // :ref:`statsd `, :ref:`health check cluster
- // verification `,
- // :ref:`runtime override directory `,
- // :ref:`user agent addition `,
- // :ref:`HTTP global rate limiting `,
- // :ref:`CDS `, and :ref:`HTTP tracing
- // `, either in this message or via
- // :option:`--service-cluster`.
- Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"`
- // Opaque metadata extending the node identifier. Envoy will pass this
- // directly to the management server.
- Metadata *Struct `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // Locality specifying where the Envoy instance is running.
- Locality *Locality `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"`
- // This is motivated by informing a management server during canary which
- // version of Envoy is being tested in a heterogeneous fleet. This will be set
- // by Envoy in management server RPCs.
- BuildVersion string `protobuf:"bytes,5,opt,name=build_version,json=buildVersion,proto3" json:"build_version,omitempty"`
-}
-
-func (x *Node) Reset() {
- *x = Node{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_simplified_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Node) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Node) ProtoMessage() {}
-
-func (x *Node) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_simplified_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Node.ProtoReflect.Descriptor instead.
-func (*Node) Descriptor() ([]byte, []int) {
- return file_xds_envoy_simplified_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Node) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Node) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-func (x *Node) GetMetadata() *Struct {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *Node) GetLocality() *Locality {
- if x != nil {
- return x.Locality
- }
- return nil
-}
-
-func (x *Node) GetBuildVersion() string {
- if x != nil {
- return x.BuildVersion
- }
- return ""
-}
-
-// A DiscoveryRequest requests a set of versioned resources of the same type for
-// a given Envoy node on some API.
-type DiscoveryRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The version_info provided in the request messages will be the version_info
- // received with the most recent successfully processed response or empty on
- // the first request. It is expected that no new request is sent after a
- // response is received until the Envoy instance is ready to ACK/NACK the new
- // configuration. ACK/NACK takes place by returning the new API config version
- // as applied or the previous API config version respectively. Each type_url
- // (see below) has an independent version associated with it.
- VersionInfo string `protobuf:"bytes,1,opt,name=version_info,json=versionInfo,proto3" json:"version_info,omitempty"`
- // The node making the request.
- Node *Node `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"`
- // List of resources to subscribe to, e.g. list of cluster names or a route
- // configuration name. If this is empty, all resources for the API are
- // returned. LDS/CDS expect empty resource_names, since this is global
- // discovery for the Envoy instance. The LDS and CDS responses will then imply
- // a number of resources that need to be fetched via EDS/RDS, which will be
- // explicitly enumerated in resource_names.
- ResourceNames []string `protobuf:"bytes,3,rep,name=resource_names,json=resourceNames,proto3" json:"resource_names,omitempty"`
- // Type of the resource that is being requested, e.g.
- // "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This is implicit
- // in requests made via singleton xDS APIs such as CDS, LDS, etc. but is
- // required for ADS.
- TypeUrl string `protobuf:"bytes,4,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
- // nonce corresponding to DiscoveryResponse being ACK/NACKed. See above
- // discussion on version_info and the DiscoveryResponse nonce comment. This
- // may be empty if no nonce is available, e.g. at startup or for non-stream
- // xDS implementations.
- ResponseNonce string `protobuf:"bytes,5,opt,name=response_nonce,json=responseNonce,proto3" json:"response_nonce,omitempty"`
- // This is populated when the previous :ref:`DiscoveryResponse `
- // failed to update configuration. The *message* field in *error_details* provides the Envoy
- // internal exception related to the failure. It is only intended for consumption during manual
- // debugging, the string provided is not guaranteed to be stable across Envoy versions.
- // google.rpc.Status
- ErrorDetail *Status `protobuf:"bytes,6,opt,name=error_detail,json=errorDetail,proto3" json:"error_detail,omitempty"`
- // Extension to Envoy - allow push
- Resources []*Any `protobuf:"bytes,7,rep,name=resources,proto3" json:"resources,omitempty"`
-}
-
-func (x *DiscoveryRequest) Reset() {
- *x = DiscoveryRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_simplified_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DiscoveryRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DiscoveryRequest) ProtoMessage() {}
-
-func (x *DiscoveryRequest) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_simplified_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DiscoveryRequest.ProtoReflect.Descriptor instead.
-func (*DiscoveryRequest) Descriptor() ([]byte, []int) {
- return file_xds_envoy_simplified_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *DiscoveryRequest) GetVersionInfo() string {
- if x != nil {
- return x.VersionInfo
- }
- return ""
-}
-
-func (x *DiscoveryRequest) GetNode() *Node {
- if x != nil {
- return x.Node
- }
- return nil
-}
-
-func (x *DiscoveryRequest) GetResourceNames() []string {
- if x != nil {
- return x.ResourceNames
- }
- return nil
-}
-
-func (x *DiscoveryRequest) GetTypeUrl() string {
- if x != nil {
- return x.TypeUrl
- }
- return ""
-}
-
-func (x *DiscoveryRequest) GetResponseNonce() string {
- if x != nil {
- return x.ResponseNonce
- }
- return ""
-}
-
-func (x *DiscoveryRequest) GetErrorDetail() *Status {
- if x != nil {
- return x.ErrorDetail
- }
- return nil
-}
-
-func (x *DiscoveryRequest) GetResources() []*Any {
- if x != nil {
- return x.Resources
- }
- return nil
-}
-
-type DiscoveryResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The version of the response data.
- VersionInfo string `protobuf:"bytes,1,opt,name=version_info,json=versionInfo,proto3" json:"version_info,omitempty"`
- // The response resources. These resources are typed and depend on the API being called.
- // google.protobuf.Any
- Resources []*Any `protobuf:"bytes,2,rep,name=resources,proto3" json:"resources,omitempty"`
- // [#not-implemented-hide:]
- // Canary is used to support two Envoy command line flags:
- //
- // * --terminate-on-canary-transition-failure. When set, Envoy is able to
- // terminate if it detects that configuration is stuck at canary. Consider
- // this example sequence of updates:
- // - Management server applies a canary config successfully.
- // - Management server rolls back to a production config.
- // - Envoy rejects the new production config.
- // Since there is no sensible way to continue receiving configuration
- // updates, Envoy will then terminate and apply production config from a
- // clean slate.
- // * --dry-run-canary. When set, a canary response will never be applied, only
- // validated via a dry run.
- Canary bool `protobuf:"varint,3,opt,name=canary,proto3" json:"canary,omitempty"`
- // Type URL for resources. This must be consistent with the type_url in the
- // Any messages for resources if resources is non-empty. This effectively
- // identifies the xDS API when muxing over ADS.
- TypeUrl string `protobuf:"bytes,4,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
- // For gRPC based subscriptions, the nonce provides a way to explicitly ack a
- // specific DiscoveryResponse in a following DiscoveryRequest. Additional
- // messages may have been sent by Envoy to the management server for the
- // previous version on the stream prior to this DiscoveryResponse, that were
- // unprocessed at response send time. The nonce allows the management server
- // to ignore any further DiscoveryRequests for the previous version until a
- // DiscoveryRequest bearing the nonce. The nonce is optional and is not
- // required for non-stream based xDS implementations.
- Nonce string `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"`
-}
-
-func (x *DiscoveryResponse) Reset() {
- *x = DiscoveryResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_envoy_simplified_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DiscoveryResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DiscoveryResponse) ProtoMessage() {}
-
-func (x *DiscoveryResponse) ProtoReflect() protoreflect.Message {
- mi := &file_xds_envoy_simplified_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DiscoveryResponse.ProtoReflect.Descriptor instead.
-func (*DiscoveryResponse) Descriptor() ([]byte, []int) {
- return file_xds_envoy_simplified_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *DiscoveryResponse) GetVersionInfo() string {
- if x != nil {
- return x.VersionInfo
- }
- return ""
-}
-
-func (x *DiscoveryResponse) GetResources() []*Any {
- if x != nil {
- return x.Resources
- }
- return nil
-}
-
-func (x *DiscoveryResponse) GetCanary() bool {
- if x != nil {
- return x.Canary
- }
- return false
-}
-
-func (x *DiscoveryResponse) GetTypeUrl() string {
- if x != nil {
- return x.TypeUrl
- }
- return ""
-}
-
-func (x *DiscoveryResponse) GetNonce() string {
- if x != nil {
- return x.Nonce
- }
- return ""
-}
-
-var File_xds_envoy_simplified_proto protoreflect.FileDescriptor
-
-var file_xds_envoy_simplified_proto_rawDesc = []byte{
- 0x0a, 0x1a, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x73, 0x69, 0x6d, 0x70,
- 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x78, 0x64,
- 0x73, 0x1a, 0x0e, 0x78, 0x64, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x14, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x61, 0x73,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61,
- 0x6c, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x23,
- 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x02, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x04, 0x6e,
- 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65,
- 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e,
- 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4e, 0x6f,
- 0x6e, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x74,
- 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74,
- 0x61, 0x69, 0x6c, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
- 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x6e, 0x79,
- 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x11,
- 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66,
- 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x41, 0x6e,
- 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06,
- 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x61,
- 0x6e, 0x61, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12,
- 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x42, 0x32, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63,
- 0x2d, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
- 0x67, 0x6f, 0x2f, 0x78, 0x64, 0x73, 0x88, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
-}
-
-var (
- file_xds_envoy_simplified_proto_rawDescOnce sync.Once
- file_xds_envoy_simplified_proto_rawDescData = file_xds_envoy_simplified_proto_rawDesc
-)
-
-func file_xds_envoy_simplified_proto_rawDescGZIP() []byte {
- file_xds_envoy_simplified_proto_rawDescOnce.Do(func() {
- file_xds_envoy_simplified_proto_rawDescData = protoimpl.X.CompressGZIP(file_xds_envoy_simplified_proto_rawDescData)
- })
- return file_xds_envoy_simplified_proto_rawDescData
-}
-
-var file_xds_envoy_simplified_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_xds_envoy_simplified_proto_goTypes = []interface{}{
- (*Node)(nil), // 0: xds.Node
- (*DiscoveryRequest)(nil), // 1: xds.DiscoveryRequest
- (*DiscoveryResponse)(nil), // 2: xds.DiscoveryResponse
- (*Struct)(nil), // 3: xds.Struct
- (*Locality)(nil), // 4: xds.Locality
- (*Status)(nil), // 5: xds.Status
- (*Any)(nil), // 6: xds.Any
-}
-var file_xds_envoy_simplified_proto_depIdxs = []int32{
- 3, // 0: xds.Node.metadata:type_name -> xds.Struct
- 4, // 1: xds.Node.locality:type_name -> xds.Locality
- 0, // 2: xds.DiscoveryRequest.node:type_name -> xds.Node
- 5, // 3: xds.DiscoveryRequest.error_detail:type_name -> xds.Status
- 6, // 4: xds.DiscoveryRequest.resources:type_name -> xds.Any
- 6, // 5: xds.DiscoveryResponse.resources:type_name -> xds.Any
- 6, // [6:6] is the sub-list for method output_type
- 6, // [6:6] is the sub-list for method input_type
- 6, // [6:6] is the sub-list for extension type_name
- 6, // [6:6] is the sub-list for extension extendee
- 0, // [0:6] is the sub-list for field type_name
-}
-
-func init() { file_xds_envoy_simplified_proto_init() }
-func file_xds_envoy_simplified_proto_init() {
- if File_xds_envoy_simplified_proto != nil {
- return
- }
- file_xds_base_proto_init()
- file_xds_envoy_base_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_xds_envoy_simplified_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Node); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_simplified_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DiscoveryRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_envoy_simplified_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DiscoveryResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_xds_envoy_simplified_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_xds_envoy_simplified_proto_goTypes,
- DependencyIndexes: file_xds_envoy_simplified_proto_depIdxs,
- MessageInfos: file_xds_envoy_simplified_proto_msgTypes,
- }.Build()
- File_xds_envoy_simplified_proto = out.File
- file_xds_envoy_simplified_proto_rawDesc = nil
- file_xds_envoy_simplified_proto_goTypes = nil
- file_xds_envoy_simplified_proto_depIdxs = nil
-}
diff --git a/gen/proto/xds/lds.pb.go b/gen/proto/xds/lds.pb.go
deleted file mode 100644
index 1b8de72..0000000
--- a/gen/proto/xds/lds.pb.go
+++ /dev/null
@@ -1,1908 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.0
-// protoc (unknown)
-// source: xds/lds.proto
-
-package xds
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type Listener_DrainType int32
-
-const (
- // Drain in response to calling /healthcheck/fail admin endpoint (along with the health check
- // filter), listener removal/modification, and hot restart.
- Listener_DEFAULT Listener_DrainType = 0
- // Drain in response to listener removal/modification and hot restart. This setting does not
- // include /healthcheck/fail. This setting may be desirable if Envoy is hosting both ingress
- // and egress listeners.
- Listener_MODIFY_ONLY Listener_DrainType = 1
-)
-
-// Enum value maps for Listener_DrainType.
-var (
- Listener_DrainType_name = map[int32]string{
- 0: "DEFAULT",
- 1: "MODIFY_ONLY",
- }
- Listener_DrainType_value = map[string]int32{
- "DEFAULT": 0,
- "MODIFY_ONLY": 1,
- }
-)
-
-func (x Listener_DrainType) Enum() *Listener_DrainType {
- p := new(Listener_DrainType)
- *p = x
- return p
-}
-
-func (x Listener_DrainType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Listener_DrainType) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_lds_proto_enumTypes[0].Descriptor()
-}
-
-func (Listener_DrainType) Type() protoreflect.EnumType {
- return &file_xds_lds_proto_enumTypes[0]
-}
-
-func (x Listener_DrainType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Listener_DrainType.Descriptor instead.
-func (Listener_DrainType) EnumDescriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type TlsParameters_TlsProtocol int32
-
-const (
- // Envoy will choose the optimal TLS version.
- TlsParameters_TLS_AUTO TlsParameters_TlsProtocol = 0
- // TLS 1.0
- TlsParameters_TLSv1_0 TlsParameters_TlsProtocol = 1
- // TLS 1.1
- TlsParameters_TLSv1_1 TlsParameters_TlsProtocol = 2
- // TLS 1.2
- TlsParameters_TLSv1_2 TlsParameters_TlsProtocol = 3
- // TLS 1.3
- TlsParameters_TLSv1_3 TlsParameters_TlsProtocol = 4
-)
-
-// Enum value maps for TlsParameters_TlsProtocol.
-var (
- TlsParameters_TlsProtocol_name = map[int32]string{
- 0: "TLS_AUTO",
- 1: "TLSv1_0",
- 2: "TLSv1_1",
- 3: "TLSv1_2",
- 4: "TLSv1_3",
- }
- TlsParameters_TlsProtocol_value = map[string]int32{
- "TLS_AUTO": 0,
- "TLSv1_0": 1,
- "TLSv1_1": 2,
- "TLSv1_2": 3,
- "TLSv1_3": 4,
- }
-)
-
-func (x TlsParameters_TlsProtocol) Enum() *TlsParameters_TlsProtocol {
- p := new(TlsParameters_TlsProtocol)
- *p = x
- return p
-}
-
-func (x TlsParameters_TlsProtocol) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TlsParameters_TlsProtocol) Descriptor() protoreflect.EnumDescriptor {
- return file_xds_lds_proto_enumTypes[1].Descriptor()
-}
-
-func (TlsParameters_TlsProtocol) Type() protoreflect.EnumType {
- return &file_xds_lds_proto_enumTypes[1]
-}
-
-func (x TlsParameters_TlsProtocol) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use TlsParameters_TlsProtocol.Descriptor instead.
-func (TlsParameters_TlsProtocol) EnumDescriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{10, 0}
-}
-
-type Listener struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The unique name by which this listener is known. If no name is provided,
- // Envoy will allocate an internal UUID for the listener. If the listener is to be dynamically
- // updated or removed via :ref:`LDS ` a unique name must be provided.
- // By default, the maximum length of a listener's name is limited to 60 characters. This limit can
- // be increased by setting the :option:`--max-obj-name-len` command line argument to the desired
- // value.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // The address that the listener should listen on. In general, the address must be unique, though
- // that is governed by the bind rules of the OS. E.g., multiple listeners can listen on port 0 on
- // Linux as the actual port will be allocated by the OS.
- Address *Address `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
- // A list of filter chains to consider for this listener. The
- // :ref:`FilterChain ` with the most specific
- // :ref:`FilterChainMatch ` criteria is used on a
- // connection.
- //
- // .. attention::
- //
- // In the current version, multiple filter chains are supported **only** so that SNI can be
- // configured. See the :ref:`FAQ entry ` on how to configure SNI for more
- // information. When multiple filter chains are configured, each filter chain must have an
- // **identical** set of :ref:`filters `. If the
- // filters differ, the configuration will fail to load. In the future, this limitation will be
- // relaxed such that different filters can be used depending on which filter chain matches
- // (based on SNI or some other parameter).
- FilterChains []*FilterChain `protobuf:"bytes,3,rep,name=filter_chains,json=filterChains,proto3" json:"filter_chains,omitempty"`
- // If a connection is redirected using *iptables*, the port on which the proxy
- // receives it might be different from the original destination address. When this flag is set to
- // true, the listener hands off redirected connections to the listener associated with the
- // original destination address. If there is no listener associated with the original destination
- // address, the connection is handled by the listener that receives it. Defaults to false.
- //
- // .. attention::
- //
- // This field is deprecated. Use :ref:`an original_dst `
- // :ref:`listener filter ` instead.
- //
- // Note that hand off to another listener is *NOT* performed without this flag. Once
- // :ref:`FilterChainMatch ` is implemented this flag
- // will be removed, as filter chain matching can be used to select a filter chain based on the
- // restored destination address.
- //
- // Deprecated: Do not use.
- UseOriginalDst *BoolValue `protobuf:"bytes,4,opt,name=use_original_dst,json=useOriginalDst,proto3" json:"use_original_dst,omitempty"`
- // Soft limit on size of the listener’s new connection read and write buffers.
- // If unspecified, an implementation defined default is applied (1MiB).
- PerConnectionBufferLimitBytes *UInt32Value `protobuf:"bytes,5,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"`
- // Listener metadata.
- Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // [#not-implemented-hide:]
- DeprecatedV1 *Listener_DeprecatedV1 `protobuf:"bytes,7,opt,name=deprecated_v1,json=deprecatedV1,proto3" json:"deprecated_v1,omitempty"`
- // The type of draining to perform at a listener-wide level.
- DrainType Listener_DrainType `protobuf:"varint,8,opt,name=drain_type,json=drainType,proto3,enum=xds.Listener_DrainType" json:"drain_type,omitempty"`
- // Whether the listener should be set as a transparent socket. When this flag is set to true,
- // connections can be redirected to the listener using an *iptables* *TPROXY* target, in which
- // case the original source and destination addresses and ports are preserved on accepted
- // connections. Requires Envoy to run with the *CAP_NET_ADMIN* capability. Defaults to false.
- Transparent bool `protobuf:"varint,10,opt,name=transparent,proto3" json:"transparent,omitempty"`
-}
-
-func (x *Listener) Reset() {
- *x = Listener{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Listener) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Listener) ProtoMessage() {}
-
-func (x *Listener) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Listener.ProtoReflect.Descriptor instead.
-func (*Listener) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Listener) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Listener) GetAddress() *Address {
- if x != nil {
- return x.Address
- }
- return nil
-}
-
-func (x *Listener) GetFilterChains() []*FilterChain {
- if x != nil {
- return x.FilterChains
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *Listener) GetUseOriginalDst() *BoolValue {
- if x != nil {
- return x.UseOriginalDst
- }
- return nil
-}
-
-func (x *Listener) GetPerConnectionBufferLimitBytes() *UInt32Value {
- if x != nil {
- return x.PerConnectionBufferLimitBytes
- }
- return nil
-}
-
-func (x *Listener) GetMetadata() *Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *Listener) GetDeprecatedV1() *Listener_DeprecatedV1 {
- if x != nil {
- return x.DeprecatedV1
- }
- return nil
-}
-
-func (x *Listener) GetDrainType() Listener_DrainType {
- if x != nil {
- return x.DrainType
- }
- return Listener_DEFAULT
-}
-
-func (x *Listener) GetTransparent() bool {
- if x != nil {
- return x.Transparent
- }
- return false
-}
-
-// A filter chain wraps a set of match criteria, an option TLS context, a set of filters, and
-// various other parameters.
-type FilterChain struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The criteria to use when matching a connection to this filter chain.
- FilterChainMatch *FilterChainMatch `protobuf:"bytes,1,opt,name=filter_chain_match,json=filterChainMatch,proto3" json:"filter_chain_match,omitempty"`
- // The TLS context for this filter chain.
- TlsContext *DownstreamTlsContext `protobuf:"bytes,2,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"`
- // A list of individual network filters that make up the filter chain for
- // connections established with the listener. Order matters as the filters are
- // processed sequentially as connection events happen. Note: If the filter
- // list is empty, the connection will close by default.
- Filters []*Filter `protobuf:"bytes,3,rep,name=filters,proto3" json:"filters,omitempty"`
- // Whether the listener should expect a PROXY protocol V1 header on new
- // connections. If this option is enabled, the listener will assume that that
- // remote address of the connection is the one specified in the header. Some
- // load balancers including the AWS ELB support this option. If the option is
- // absent or set to false, Envoy will use the physical peer address of the
- // connection as the remote address.
- UseProxyProto *BoolValue `protobuf:"bytes,4,opt,name=use_proxy_proto,json=useProxyProto,proto3" json:"use_proxy_proto,omitempty"`
- // [#not-implemented-hide:] filter chain metadata.
- Metadata *Metadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"`
- // See :ref:`base.TransportSocket` description.
- TransportSocket *TransportSocket `protobuf:"bytes,6,opt,name=transport_socket,json=transportSocket,proto3" json:"transport_socket,omitempty"`
-}
-
-func (x *FilterChain) Reset() {
- *x = FilterChain{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FilterChain) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FilterChain) ProtoMessage() {}
-
-func (x *FilterChain) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FilterChain.ProtoReflect.Descriptor instead.
-func (*FilterChain) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *FilterChain) GetFilterChainMatch() *FilterChainMatch {
- if x != nil {
- return x.FilterChainMatch
- }
- return nil
-}
-
-func (x *FilterChain) GetTlsContext() *DownstreamTlsContext {
- if x != nil {
- return x.TlsContext
- }
- return nil
-}
-
-func (x *FilterChain) GetFilters() []*Filter {
- if x != nil {
- return x.Filters
- }
- return nil
-}
-
-func (x *FilterChain) GetUseProxyProto() *BoolValue {
- if x != nil {
- return x.UseProxyProto
- }
- return nil
-}
-
-func (x *FilterChain) GetMetadata() *Metadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *FilterChain) GetTransportSocket() *TransportSocket {
- if x != nil {
- return x.TransportSocket
- }
- return nil
-}
-
-// Specifies the match criteria for selecting a specific filter chain for a
-// listener.
-type FilterChainMatch struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // If non-empty, the SNI domains to consider. May contain a wildcard prefix,
- // e.g. ``*.example.com``.
- //
- // .. attention::
- //
- // See the :ref:`FAQ entry ` on how to configure SNI for more
- // information.
- SniDomains []string `protobuf:"bytes,1,rep,name=sni_domains,json=sniDomains,proto3" json:"sni_domains,omitempty"`
- // If non-empty, an IP address and prefix length to match addresses when the
- // listener is bound to 0.0.0.0/:: or when use_original_dst is specified.
- // [#not-implemented-hide:]
- PrefixRanges []*CidrRange `protobuf:"bytes,3,rep,name=prefix_ranges,json=prefixRanges,proto3" json:"prefix_ranges,omitempty"`
- // If non-empty, an IP address and suffix length to match addresses when the
- // listener is bound to 0.0.0.0/:: or when use_original_dst is specified.
- // [#not-implemented-hide:]
- AddressSuffix string `protobuf:"bytes,4,opt,name=address_suffix,json=addressSuffix,proto3" json:"address_suffix,omitempty"`
- // [#not-implemented-hide:]
- SuffixLen *UInt32Value `protobuf:"bytes,5,opt,name=suffix_len,json=suffixLen,proto3" json:"suffix_len,omitempty"`
- // The criteria is satisfied if the source IP address of the downstream
- // connection is contained in at least one of the specified subnets. If the
- // parameter is not specified or the list is empty, the source IP address is
- // ignored.
- // [#not-implemented-hide:]
- SourcePrefixRanges []*CidrRange `protobuf:"bytes,6,rep,name=source_prefix_ranges,json=sourcePrefixRanges,proto3" json:"source_prefix_ranges,omitempty"`
- // The criteria is satisfied if the source port of the downstream connection
- // is contained in at least one of the specified ports. If the parameter is
- // not specified, the source port is ignored.
- // [#not-implemented-hide:]
- SourcePorts []*UInt32Value `protobuf:"bytes,7,rep,name=source_ports,json=sourcePorts,proto3" json:"source_ports,omitempty"`
- // Optional destination port to consider when use_original_dst is set on the
- // listener in determining a filter chain match.
- // [#not-implemented-hide:]
- DestinationPort *UInt32Value `protobuf:"bytes,8,opt,name=destination_port,json=destinationPort,proto3" json:"destination_port,omitempty"`
-}
-
-func (x *FilterChainMatch) Reset() {
- *x = FilterChainMatch{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FilterChainMatch) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FilterChainMatch) ProtoMessage() {}
-
-func (x *FilterChainMatch) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FilterChainMatch.ProtoReflect.Descriptor instead.
-func (*FilterChainMatch) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *FilterChainMatch) GetSniDomains() []string {
- if x != nil {
- return x.SniDomains
- }
- return nil
-}
-
-func (x *FilterChainMatch) GetPrefixRanges() []*CidrRange {
- if x != nil {
- return x.PrefixRanges
- }
- return nil
-}
-
-func (x *FilterChainMatch) GetAddressSuffix() string {
- if x != nil {
- return x.AddressSuffix
- }
- return ""
-}
-
-func (x *FilterChainMatch) GetSuffixLen() *UInt32Value {
- if x != nil {
- return x.SuffixLen
- }
- return nil
-}
-
-func (x *FilterChainMatch) GetSourcePrefixRanges() []*CidrRange {
- if x != nil {
- return x.SourcePrefixRanges
- }
- return nil
-}
-
-func (x *FilterChainMatch) GetSourcePorts() []*UInt32Value {
- if x != nil {
- return x.SourcePorts
- }
- return nil
-}
-
-func (x *FilterChainMatch) GetDestinationPort() *UInt32Value {
- if x != nil {
- return x.DestinationPort
- }
- return nil
-}
-
-type Filter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the filter to instantiate. The name must match a supported
- // filter. The built-in filters are:
- //
- // [#comment:TODO(mattklein123): Auto generate the following list]
- // * :ref:`envoy.client_ssl_auth`
- // * :ref:`envoy.echo `
- // * :ref:`envoy.http_connection_manager `
- // * :ref:`envoy.mongo_proxy `
- // * :ref:`envoy.ratelimit `
- // * :ref:`envoy.redis_proxy `
- // * :ref:`envoy.tcp_proxy `
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Filter specific configuration which depends on the filter being
- // instantiated. See the supported filters for further documentation.
- Config *Struct `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
- // [#not-implemented-hide:]
- //
- // Deprecated: Do not use.
- DeprecatedV1 *Filter_DeprecatedV1 `protobuf:"bytes,3,opt,name=deprecated_v1,json=deprecatedV1,proto3" json:"deprecated_v1,omitempty"`
-}
-
-func (x *Filter) Reset() {
- *x = Filter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Filter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Filter) ProtoMessage() {}
-
-func (x *Filter) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Filter.ProtoReflect.Descriptor instead.
-func (*Filter) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Filter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Filter) GetConfig() *Struct {
- if x != nil {
- return x.Config
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *Filter) GetDeprecatedV1() *Filter_DeprecatedV1 {
- if x != nil {
- return x.DeprecatedV1
- }
- return nil
-}
-
-// Configuration for transport socket in :ref:`listeners ` and
-// :ref:`clusters `. If the configuration is
-// empty, a default transport socket implementation and configuration will be
-// chosen based on the platform and existence of tls_context.
-type TransportSocket struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The name of the transport socket to instantiate. The name must match a supported transport
- // socket implementation.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Implementation specific configuration which depends on the implementation being instantiated.
- // See the supported transport socket implementations for further documentation.
- Config *Struct `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
-}
-
-func (x *TransportSocket) Reset() {
- *x = TransportSocket{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TransportSocket) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TransportSocket) ProtoMessage() {}
-
-func (x *TransportSocket) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TransportSocket.ProtoReflect.Descriptor instead.
-func (*TransportSocket) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *TransportSocket) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *TransportSocket) GetConfig() *Struct {
- if x != nil {
- return x.Config
- }
- return nil
-}
-
-type DownstreamTlsContext struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Common TLS context settings.
- CommonTlsContext *CommonTlsContext `protobuf:"bytes,1,opt,name=common_tls_context,json=commonTlsContext,proto3" json:"common_tls_context,omitempty"`
- // If specified, Envoy will reject connections without a valid client
- // certificate.
- RequireClientCertificate *BoolValue `protobuf:"bytes,2,opt,name=require_client_certificate,json=requireClientCertificate,proto3" json:"require_client_certificate,omitempty"`
- // If specified, Envoy will reject connections without a valid and matching SNI.
- // [#not-implemented-hide:]
- RequireSni *BoolValue `protobuf:"bytes,3,opt,name=require_sni,json=requireSni,proto3" json:"require_sni,omitempty"`
-}
-
-func (x *DownstreamTlsContext) Reset() {
- *x = DownstreamTlsContext{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DownstreamTlsContext) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DownstreamTlsContext) ProtoMessage() {}
-
-func (x *DownstreamTlsContext) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DownstreamTlsContext.ProtoReflect.Descriptor instead.
-func (*DownstreamTlsContext) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *DownstreamTlsContext) GetCommonTlsContext() *CommonTlsContext {
- if x != nil {
- return x.CommonTlsContext
- }
- return nil
-}
-
-func (x *DownstreamTlsContext) GetRequireClientCertificate() *BoolValue {
- if x != nil {
- return x.RequireClientCertificate
- }
- return nil
-}
-
-func (x *DownstreamTlsContext) GetRequireSni() *BoolValue {
- if x != nil {
- return x.RequireSni
- }
- return nil
-}
-
-// TLS context shared by both client and server TLS contexts.
-type CommonTlsContext struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // TLS protocol versions, cipher suites etc.
- TlsParams *TlsParameters `protobuf:"bytes,1,opt,name=tls_params,json=tlsParams,proto3" json:"tls_params,omitempty"`
- // Multiple TLS certificates can be associated with the same context.
- // E.g. to allow both RSA and ECDSA certificates, two TLS certificates can be configured.
- //
- // .. attention::
- //
- // Although this is a list, currently only a single certificate is supported. This will be
- // relaxed in the future.
- TlsCertificates []*TlsCertificate `protobuf:"bytes,2,rep,name=tls_certificates,json=tlsCertificates,proto3" json:"tls_certificates,omitempty"`
- // How to validate peer certificates.
- ValidationContext *CertificateValidationContext `protobuf:"bytes,3,opt,name=validation_context,json=validationContext,proto3" json:"validation_context,omitempty"`
- // Supplies the list of ALPN protocols that the listener should expose. In
- // practice this is likely to be set to one of two values (see the
- // :ref:`codec_type ` parameter in the HTTP connection
- // manager for more information):
- //
- // * "h2,http/1.1" If the listener is going to support both HTTP/2 and HTTP/1.1.
- // * "http/1.1" If the listener is only going to support HTTP/1.1.
- //
- // There is no default for this parameter. If empty, Envoy will not expose ALPN.
- AlpnProtocols []string `protobuf:"bytes,4,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"`
- // [#not-implemented-hide:]
- //
- // Deprecated: Do not use.
- DeprecatedV1 *CommonTlsContext_DeprecatedV1 `protobuf:"bytes,5,opt,name=deprecated_v1,json=deprecatedV1,proto3" json:"deprecated_v1,omitempty"`
-}
-
-func (x *CommonTlsContext) Reset() {
- *x = CommonTlsContext{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CommonTlsContext) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CommonTlsContext) ProtoMessage() {}
-
-func (x *CommonTlsContext) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CommonTlsContext.ProtoReflect.Descriptor instead.
-func (*CommonTlsContext) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *CommonTlsContext) GetTlsParams() *TlsParameters {
- if x != nil {
- return x.TlsParams
- }
- return nil
-}
-
-func (x *CommonTlsContext) GetTlsCertificates() []*TlsCertificate {
- if x != nil {
- return x.TlsCertificates
- }
- return nil
-}
-
-func (x *CommonTlsContext) GetValidationContext() *CertificateValidationContext {
- if x != nil {
- return x.ValidationContext
- }
- return nil
-}
-
-func (x *CommonTlsContext) GetAlpnProtocols() []string {
- if x != nil {
- return x.AlpnProtocols
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *CommonTlsContext) GetDeprecatedV1() *CommonTlsContext_DeprecatedV1 {
- if x != nil {
- return x.DeprecatedV1
- }
- return nil
-}
-
-type CertificateValidationContext struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // TLS certificate data containing certificate authority certificates to use in verifying
- // a presented peer certificate (e.g. server certificate for clusters or client certificate
- // for listeners). If not specified and a peer certificate is presented it will not be
- // verified. By default, a client certificate is optional, unless one of the additional
- // options (:ref:`require_client_certificate
- // `,
- // :ref:`verify_certificate_hash
- // `, or
- // :ref:`verify_subject_alt_name
- // `) is also
- // specified.
- //
- // See :ref:`the TLS overview ` for a list of common
- // system CA locations.
- TrustedCa *DataSource `protobuf:"bytes,1,opt,name=trusted_ca,json=trustedCa,proto3" json:"trusted_ca,omitempty"`
- // If specified, Envoy will verify (pin) the hex-encoded SHA-256 hash of
- // the presented certificate.
- VerifyCertificateHash []string `protobuf:"bytes,2,rep,name=verify_certificate_hash,json=verifyCertificateHash,proto3" json:"verify_certificate_hash,omitempty"`
- // If specified, Envoy will verify (pin) base64-encoded SHA-256 hash of
- // the Subject Public Key Information (SPKI) of the presented certificate.
- // This is the same format as used in HTTP Public Key Pinning.
- // [#not-implemented-hide:]
- VerifySpkiSha256 []string `protobuf:"bytes,3,rep,name=verify_spki_sha256,json=verifySpkiSha256,proto3" json:"verify_spki_sha256,omitempty"`
- // An optional list of subject alternative names. If specified, Envoy will verify that
- // the certificate’s subject alternative name matches one of the specified values.
- VerifySubjectAltName []string `protobuf:"bytes,4,rep,name=verify_subject_alt_name,json=verifySubjectAltName,proto3" json:"verify_subject_alt_name,omitempty"`
- // [#not-implemented-hide:] Must present a signed time-stamped OCSP response.
- RequireOcspStaple *BoolValue `protobuf:"bytes,5,opt,name=require_ocsp_staple,json=requireOcspStaple,proto3" json:"require_ocsp_staple,omitempty"`
- // [#not-implemented-hide:] Must present signed certificate time-stamp.
- RequireSignedCertificateTimestamp *BoolValue `protobuf:"bytes,6,opt,name=require_signed_certificate_timestamp,json=requireSignedCertificateTimestamp,proto3" json:"require_signed_certificate_timestamp,omitempty"`
- // An optional `certificate revocation list
- // `_
- // (in PEM format). If specified, Envoy will verify that the presented peer
- // certificate has not been revoked by this CRL. If this DataSource contains
- // multiple CRLs, all of them will be used.
- Crl *DataSource `protobuf:"bytes,7,opt,name=crl,proto3" json:"crl,omitempty"`
-}
-
-func (x *CertificateValidationContext) Reset() {
- *x = CertificateValidationContext{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateValidationContext) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateValidationContext) ProtoMessage() {}
-
-func (x *CertificateValidationContext) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateValidationContext.ProtoReflect.Descriptor instead.
-func (*CertificateValidationContext) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *CertificateValidationContext) GetTrustedCa() *DataSource {
- if x != nil {
- return x.TrustedCa
- }
- return nil
-}
-
-func (x *CertificateValidationContext) GetVerifyCertificateHash() []string {
- if x != nil {
- return x.VerifyCertificateHash
- }
- return nil
-}
-
-func (x *CertificateValidationContext) GetVerifySpkiSha256() []string {
- if x != nil {
- return x.VerifySpkiSha256
- }
- return nil
-}
-
-func (x *CertificateValidationContext) GetVerifySubjectAltName() []string {
- if x != nil {
- return x.VerifySubjectAltName
- }
- return nil
-}
-
-func (x *CertificateValidationContext) GetRequireOcspStaple() *BoolValue {
- if x != nil {
- return x.RequireOcspStaple
- }
- return nil
-}
-
-func (x *CertificateValidationContext) GetRequireSignedCertificateTimestamp() *BoolValue {
- if x != nil {
- return x.RequireSignedCertificateTimestamp
- }
- return nil
-}
-
-func (x *CertificateValidationContext) GetCrl() *DataSource {
- if x != nil {
- return x.Crl
- }
- return nil
-}
-
-type TlsCertificate struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The TLS certificate chain.
- CertificateChain *DataSource `protobuf:"bytes,1,opt,name=certificate_chain,json=certificateChain,proto3" json:"certificate_chain,omitempty"`
- // The TLS private key.
- PrivateKey *DataSource `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
- // [#not-implemented-hide:]
- Password *DataSource `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
- // [#not-implemented-hide:]
- OcspStaple *DataSource `protobuf:"bytes,4,opt,name=ocsp_staple,json=ocspStaple,proto3" json:"ocsp_staple,omitempty"`
- // [#not-implemented-hide:]
- SignedCertificateTimestamp []*DataSource `protobuf:"bytes,5,rep,name=signed_certificate_timestamp,json=signedCertificateTimestamp,proto3" json:"signed_certificate_timestamp,omitempty"`
-}
-
-func (x *TlsCertificate) Reset() {
- *x = TlsCertificate{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TlsCertificate) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TlsCertificate) ProtoMessage() {}
-
-func (x *TlsCertificate) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TlsCertificate.ProtoReflect.Descriptor instead.
-func (*TlsCertificate) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *TlsCertificate) GetCertificateChain() *DataSource {
- if x != nil {
- return x.CertificateChain
- }
- return nil
-}
-
-func (x *TlsCertificate) GetPrivateKey() *DataSource {
- if x != nil {
- return x.PrivateKey
- }
- return nil
-}
-
-func (x *TlsCertificate) GetPassword() *DataSource {
- if x != nil {
- return x.Password
- }
- return nil
-}
-
-func (x *TlsCertificate) GetOcspStaple() *DataSource {
- if x != nil {
- return x.OcspStaple
- }
- return nil
-}
-
-func (x *TlsCertificate) GetSignedCertificateTimestamp() []*DataSource {
- if x != nil {
- return x.SignedCertificateTimestamp
- }
- return nil
-}
-
-// Data source consisting of either a file or an inline value.
-type DataSource struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Specifier:
- // *DataSource_Filename
- // *DataSource_InlineBytes
- // *DataSource_InlineString
- Specifier isDataSource_Specifier `protobuf_oneof:"specifier"`
-}
-
-func (x *DataSource) Reset() {
- *x = DataSource{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DataSource) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DataSource) ProtoMessage() {}
-
-func (x *DataSource) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DataSource.ProtoReflect.Descriptor instead.
-func (*DataSource) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{9}
-}
-
-func (m *DataSource) GetSpecifier() isDataSource_Specifier {
- if m != nil {
- return m.Specifier
- }
- return nil
-}
-
-func (x *DataSource) GetFilename() string {
- if x, ok := x.GetSpecifier().(*DataSource_Filename); ok {
- return x.Filename
- }
- return ""
-}
-
-func (x *DataSource) GetInlineBytes() []byte {
- if x, ok := x.GetSpecifier().(*DataSource_InlineBytes); ok {
- return x.InlineBytes
- }
- return nil
-}
-
-func (x *DataSource) GetInlineString() string {
- if x, ok := x.GetSpecifier().(*DataSource_InlineString); ok {
- return x.InlineString
- }
- return ""
-}
-
-type isDataSource_Specifier interface {
- isDataSource_Specifier()
-}
-
-type DataSource_Filename struct {
- // Local filesystem data source.
- Filename string `protobuf:"bytes,1,opt,name=filename,proto3,oneof"`
-}
-
-type DataSource_InlineBytes struct {
- // Bytes inlined in the configuration.
- InlineBytes []byte `protobuf:"bytes,2,opt,name=inline_bytes,json=inlineBytes,proto3,oneof"`
-}
-
-type DataSource_InlineString struct {
- // String inlined in the configuration.
- InlineString string `protobuf:"bytes,3,opt,name=inline_string,json=inlineString,proto3,oneof"`
-}
-
-func (*DataSource_Filename) isDataSource_Specifier() {}
-
-func (*DataSource_InlineBytes) isDataSource_Specifier() {}
-
-func (*DataSource_InlineString) isDataSource_Specifier() {}
-
-type TlsParameters struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Minimum TLS protocol version.
- TlsMinimumProtocolVersion TlsParameters_TlsProtocol `protobuf:"varint,1,opt,name=tls_minimum_protocol_version,json=tlsMinimumProtocolVersion,proto3,enum=xds.TlsParameters_TlsProtocol" json:"tls_minimum_protocol_version,omitempty"`
- // Maximum TLS protocol version.
- TlsMaximumProtocolVersion TlsParameters_TlsProtocol `protobuf:"varint,2,opt,name=tls_maximum_protocol_version,json=tlsMaximumProtocolVersion,proto3,enum=xds.TlsParameters_TlsProtocol" json:"tls_maximum_protocol_version,omitempty"`
- // If specified, the TLS listener will only support the specified `cipher list
- // `_.
- // If not specified, the default list:
- //
- // .. code-block:: none
- //
- // [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
- // [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]
- // ECDHE-ECDSA-AES128-SHA256
- // ECDHE-RSA-AES128-SHA256
- // ECDHE-ECDSA-AES128-SHA
- // ECDHE-RSA-AES128-SHA
- // AES128-GCM-SHA256
- // AES128-SHA256
- // AES128-SHA
- // ECDHE-ECDSA-AES256-GCM-SHA384
- // ECDHE-RSA-AES256-GCM-SHA384
- // ECDHE-ECDSA-AES256-SHA384
- // ECDHE-RSA-AES256-SHA384
- // ECDHE-ECDSA-AES256-SHA
- // ECDHE-RSA-AES256-SHA
- // AES256-GCM-SHA384
- // AES256-SHA256
- // AES256-SHA
- //
- // will be used.
- CipherSuites []string `protobuf:"bytes,3,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"`
- // If specified, the TLS connection will only support the specified ECDH
- // curves. If not specified, the default curves (X25519, P-256) will be used.
- EcdhCurves []string `protobuf:"bytes,4,rep,name=ecdh_curves,json=ecdhCurves,proto3" json:"ecdh_curves,omitempty"`
-}
-
-func (x *TlsParameters) Reset() {
- *x = TlsParameters{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TlsParameters) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TlsParameters) ProtoMessage() {}
-
-func (x *TlsParameters) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TlsParameters.ProtoReflect.Descriptor instead.
-func (*TlsParameters) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *TlsParameters) GetTlsMinimumProtocolVersion() TlsParameters_TlsProtocol {
- if x != nil {
- return x.TlsMinimumProtocolVersion
- }
- return TlsParameters_TLS_AUTO
-}
-
-func (x *TlsParameters) GetTlsMaximumProtocolVersion() TlsParameters_TlsProtocol {
- if x != nil {
- return x.TlsMaximumProtocolVersion
- }
- return TlsParameters_TLS_AUTO
-}
-
-func (x *TlsParameters) GetCipherSuites() []string {
- if x != nil {
- return x.CipherSuites
- }
- return nil
-}
-
-func (x *TlsParameters) GetEcdhCurves() []string {
- if x != nil {
- return x.EcdhCurves
- }
- return nil
-}
-
-// [#not-implemented-hide:]
-type Listener_DeprecatedV1 struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Whether the listener should bind to the port. A listener that doesn’t
- // bind can only receive connections redirected from other listeners that
- // set use_original_dst parameter to true. Default is true.
- //
- // [V2-API-DIFF] This is deprecated in v2, all Listeners will bind to their
- // port. An additional filter chain must be created for every original
- // destination port this listener may redirect to in v2, with the original
- // port specified in the FilterChainMatch destination_port field.
- BindToPort *BoolValue `protobuf:"bytes,1,opt,name=bind_to_port,json=bindToPort,proto3" json:"bind_to_port,omitempty"`
-}
-
-func (x *Listener_DeprecatedV1) Reset() {
- *x = Listener_DeprecatedV1{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Listener_DeprecatedV1) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Listener_DeprecatedV1) ProtoMessage() {}
-
-func (x *Listener_DeprecatedV1) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Listener_DeprecatedV1.ProtoReflect.Descriptor instead.
-func (*Listener_DeprecatedV1) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *Listener_DeprecatedV1) GetBindToPort() *BoolValue {
- if x != nil {
- return x.BindToPort
- }
- return nil
-}
-
-// [#not-implemented-hide:]
-type Filter_DeprecatedV1 struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
-}
-
-func (x *Filter_DeprecatedV1) Reset() {
- *x = Filter_DeprecatedV1{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Filter_DeprecatedV1) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Filter_DeprecatedV1) ProtoMessage() {}
-
-func (x *Filter_DeprecatedV1) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Filter_DeprecatedV1.ProtoReflect.Descriptor instead.
-func (*Filter_DeprecatedV1) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{3, 0}
-}
-
-func (x *Filter_DeprecatedV1) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-// These fields are deprecated and only are used during the interim v1 -> v2
-// transition period for internal purposes. They should not be used outside of
-// the Envoy binary. [#not-implemented-hide:]
-type CommonTlsContext_DeprecatedV1 struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- AltAlpnProtocols string `protobuf:"bytes,1,opt,name=alt_alpn_protocols,json=altAlpnProtocols,proto3" json:"alt_alpn_protocols,omitempty"`
-}
-
-func (x *CommonTlsContext_DeprecatedV1) Reset() {
- *x = CommonTlsContext_DeprecatedV1{}
- if protoimpl.UnsafeEnabled {
- mi := &file_xds_lds_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CommonTlsContext_DeprecatedV1) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CommonTlsContext_DeprecatedV1) ProtoMessage() {}
-
-func (x *CommonTlsContext_DeprecatedV1) ProtoReflect() protoreflect.Message {
- mi := &file_xds_lds_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CommonTlsContext_DeprecatedV1.ProtoReflect.Descriptor instead.
-func (*CommonTlsContext_DeprecatedV1) Descriptor() ([]byte, []int) {
- return file_xds_lds_proto_rawDescGZIP(), []int{6, 0}
-}
-
-func (x *CommonTlsContext_DeprecatedV1) GetAltAlpnProtocols() string {
- if x != nil {
- return x.AltAlpnProtocols
- }
- return ""
-}
-
-var File_xds_lds_proto protoreflect.FileDescriptor
-
-var file_xds_lds_proto_rawDesc = []byte{
- 0x0a, 0x0d, 0x78, 0x64, 0x73, 0x2f, 0x6c, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
- 0x03, 0x78, 0x64, 0x73, 0x1a, 0x0e, 0x78, 0x64, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x78, 0x64, 0x73, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f,
- 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xca, 0x04, 0x0a, 0x08, 0x4c,
- 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x61,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72,
- 0x65, 0x73, 0x73, 0x12, 0x35, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x64, 0x73,
- 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x0c, 0x66, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x10, 0x75, 0x73,
- 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x4f, 0x72, 0x69,
- 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x21, 0x70, 0x65, 0x72, 0x5f,
- 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65,
- 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42,
- 0x79, 0x74, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x3f, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x31,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x65, 0x6e, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
- 0x56, 0x31, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x31,
- 0x12, 0x36, 0x0a, 0x0a, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65,
- 0x6e, 0x65, 0x72, 0x2e, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x64,
- 0x72, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e,
- 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x74,
- 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x1a, 0x40, 0x0a, 0x0c, 0x44, 0x65,
- 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x31, 0x12, 0x30, 0x0a, 0x0c, 0x62, 0x69,
- 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x54, 0x6f, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x29, 0x0a, 0x09,
- 0x44, 0x72, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46,
- 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x59,
- 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x22, 0xd9, 0x02, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x43, 0x0a, 0x12, 0x66, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x10, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3a, 0x0a, 0x0b,
- 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x74, 0x6c,
- 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x25, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12,
- 0x36, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42,
- 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x50, 0x72, 0x6f,
- 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x12, 0x3f, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f,
- 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b,
- 0x65, 0x74, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63,
- 0x6b, 0x65, 0x74, 0x22, 0xf4, 0x02, 0x0a, 0x10, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x68,
- 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x69, 0x5f,
- 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73,
- 0x6e, 0x69, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0d, 0x70, 0x72, 0x65,
- 0x66, 0x69, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65,
- 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x25,
- 0x0a, 0x0e, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53,
- 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x2f, 0x0a, 0x0a, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x5f,
- 0x6c, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x73, 0x75, 0x66,
- 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x12, 0x40, 0x0a, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x06,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x69, 0x64, 0x72, 0x52,
- 0x61, 0x6e, 0x67, 0x65, 0x52, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66,
- 0x69, 0x78, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x3b, 0x0a,
- 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72,
- 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x55, 0x49,
- 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x22, 0xa8, 0x01, 0x0a, 0x06, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x64, 0x73, 0x2e,
- 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41,
- 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x31, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x31, 0x42,
- 0x02, 0x18, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56,
- 0x31, 0x1a, 0x22, 0x0a, 0x0c, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56,
- 0x31, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
- 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x06,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78,
- 0x64, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x22, 0xda, 0x01, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x43, 0x0a, 0x12, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x10, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12,
- 0x4c, 0x0a, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
- 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x18, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x43, 0x6c, 0x69, 0x65,
- 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a,
- 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x73, 0x6e, 0x69, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x53, 0x6e, 0x69, 0x22, 0x89,
- 0x03, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74,
- 0x65, 0x78, 0x74, 0x12, 0x31, 0x0a, 0x0a, 0x74, 0x6c, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x54, 0x6c,
- 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x09, 0x74, 0x6c, 0x73,
- 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3e, 0x0a, 0x10, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x13, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x54, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
- 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x70, 0x6e,
- 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0d, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12,
- 0x4b, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x31,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x44, 0x65,
- 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x31, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c,
- 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x31, 0x1a, 0x3c, 0x0a, 0x0c,
- 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x31, 0x12, 0x2c, 0x0a, 0x12,
- 0x61, 0x6c, 0x74, 0x5f, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x74, 0x41, 0x6c, 0x70,
- 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0xaf, 0x03, 0x0a, 0x1c, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2e, 0x0a, 0x0a, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x52, 0x09, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x12, 0x36, 0x0a, 0x17, 0x76,
- 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x76, 0x65,
- 0x72, 0x69, 0x66, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48,
- 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x73, 0x70,
- 0x6b, 0x69, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x10, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x70, 0x6b, 0x69, 0x53, 0x68, 0x61, 0x32, 0x35,
- 0x36, 0x12, 0x35, 0x0a, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x14, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x13, 0x72, 0x65, 0x71, 0x75,
- 0x69, 0x72, 0x65, 0x5f, 0x6f, 0x63, 0x73, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x4f, 0x63,
- 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x12, 0x5f, 0x0a, 0x24, 0x72, 0x65, 0x71, 0x75,
- 0x69, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x42, 0x6f, 0x6f,
- 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x21, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x53,
- 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x03, 0x63, 0x72, 0x6c,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74,
- 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x03, 0x63, 0x72, 0x6c, 0x22, 0xb2, 0x02, 0x0a,
- 0x0e, 0x54, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12,
- 0x3c, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73,
- 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x63, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a,
- 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12,
- 0x2b, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x0b,
- 0x6f, 0x63, 0x73, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x52, 0x0a, 0x6f, 0x63, 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x12, 0x51,
- 0x0a, 0x1c, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x1a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x22, 0x83, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x12, 0x1c, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23,
- 0x0a, 0x0c, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x79,
- 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74,
- 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e,
- 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x70,
- 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xe8, 0x02, 0x0a, 0x0d, 0x54, 0x6c, 0x73, 0x50,
- 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5f, 0x0a, 0x1c, 0x74, 0x6c, 0x73,
- 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x1e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x54, 0x6c, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
- 0x65, 0x72, 0x73, 0x2e, 0x54, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52,
- 0x19, 0x74, 0x6c, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x1c, 0x74, 0x6c,
- 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x1e, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x54, 0x6c, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
- 0x74, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x52, 0x19, 0x74, 0x6c, 0x73, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63,
- 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73,
- 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x63, 0x64, 0x68, 0x5f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x73, 0x18,
- 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x63, 0x64, 0x68, 0x43, 0x75, 0x72, 0x76, 0x65,
- 0x73, 0x22, 0x4f, 0x0a, 0x0b, 0x54, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4c, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b,
- 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54,
- 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76,
- 0x31, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x4c, 0x53, 0x76, 0x31, 0x5f, 0x33,
- 0x10, 0x04, 0x42, 0x32, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x63, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x6d, 0x65,
- 0x73, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f,
- 0x78, 0x64, 0x73, 0x88, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_xds_lds_proto_rawDescOnce sync.Once
- file_xds_lds_proto_rawDescData = file_xds_lds_proto_rawDesc
-)
-
-func file_xds_lds_proto_rawDescGZIP() []byte {
- file_xds_lds_proto_rawDescOnce.Do(func() {
- file_xds_lds_proto_rawDescData = protoimpl.X.CompressGZIP(file_xds_lds_proto_rawDescData)
- })
- return file_xds_lds_proto_rawDescData
-}
-
-var file_xds_lds_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_xds_lds_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
-var file_xds_lds_proto_goTypes = []interface{}{
- (Listener_DrainType)(0), // 0: xds.Listener.DrainType
- (TlsParameters_TlsProtocol)(0), // 1: xds.TlsParameters.TlsProtocol
- (*Listener)(nil), // 2: xds.Listener
- (*FilterChain)(nil), // 3: xds.FilterChain
- (*FilterChainMatch)(nil), // 4: xds.FilterChainMatch
- (*Filter)(nil), // 5: xds.Filter
- (*TransportSocket)(nil), // 6: xds.TransportSocket
- (*DownstreamTlsContext)(nil), // 7: xds.DownstreamTlsContext
- (*CommonTlsContext)(nil), // 8: xds.CommonTlsContext
- (*CertificateValidationContext)(nil), // 9: xds.CertificateValidationContext
- (*TlsCertificate)(nil), // 10: xds.TlsCertificate
- (*DataSource)(nil), // 11: xds.DataSource
- (*TlsParameters)(nil), // 12: xds.TlsParameters
- (*Listener_DeprecatedV1)(nil), // 13: xds.Listener.DeprecatedV1
- (*Filter_DeprecatedV1)(nil), // 14: xds.Filter.DeprecatedV1
- (*CommonTlsContext_DeprecatedV1)(nil), // 15: xds.CommonTlsContext.DeprecatedV1
- (*Address)(nil), // 16: xds.Address
- (*BoolValue)(nil), // 17: xds.BoolValue
- (*UInt32Value)(nil), // 18: xds.UInt32Value
- (*Metadata)(nil), // 19: xds.Metadata
- (*CidrRange)(nil), // 20: xds.CidrRange
- (*Struct)(nil), // 21: xds.Struct
-}
-var file_xds_lds_proto_depIdxs = []int32{
- 16, // 0: xds.Listener.address:type_name -> xds.Address
- 3, // 1: xds.Listener.filter_chains:type_name -> xds.FilterChain
- 17, // 2: xds.Listener.use_original_dst:type_name -> xds.BoolValue
- 18, // 3: xds.Listener.per_connection_buffer_limit_bytes:type_name -> xds.UInt32Value
- 19, // 4: xds.Listener.metadata:type_name -> xds.Metadata
- 13, // 5: xds.Listener.deprecated_v1:type_name -> xds.Listener.DeprecatedV1
- 0, // 6: xds.Listener.drain_type:type_name -> xds.Listener.DrainType
- 4, // 7: xds.FilterChain.filter_chain_match:type_name -> xds.FilterChainMatch
- 7, // 8: xds.FilterChain.tls_context:type_name -> xds.DownstreamTlsContext
- 5, // 9: xds.FilterChain.filters:type_name -> xds.Filter
- 17, // 10: xds.FilterChain.use_proxy_proto:type_name -> xds.BoolValue
- 19, // 11: xds.FilterChain.metadata:type_name -> xds.Metadata
- 6, // 12: xds.FilterChain.transport_socket:type_name -> xds.TransportSocket
- 20, // 13: xds.FilterChainMatch.prefix_ranges:type_name -> xds.CidrRange
- 18, // 14: xds.FilterChainMatch.suffix_len:type_name -> xds.UInt32Value
- 20, // 15: xds.FilterChainMatch.source_prefix_ranges:type_name -> xds.CidrRange
- 18, // 16: xds.FilterChainMatch.source_ports:type_name -> xds.UInt32Value
- 18, // 17: xds.FilterChainMatch.destination_port:type_name -> xds.UInt32Value
- 21, // 18: xds.Filter.config:type_name -> xds.Struct
- 14, // 19: xds.Filter.deprecated_v1:type_name -> xds.Filter.DeprecatedV1
- 21, // 20: xds.TransportSocket.config:type_name -> xds.Struct
- 8, // 21: xds.DownstreamTlsContext.common_tls_context:type_name -> xds.CommonTlsContext
- 17, // 22: xds.DownstreamTlsContext.require_client_certificate:type_name -> xds.BoolValue
- 17, // 23: xds.DownstreamTlsContext.require_sni:type_name -> xds.BoolValue
- 12, // 24: xds.CommonTlsContext.tls_params:type_name -> xds.TlsParameters
- 10, // 25: xds.CommonTlsContext.tls_certificates:type_name -> xds.TlsCertificate
- 9, // 26: xds.CommonTlsContext.validation_context:type_name -> xds.CertificateValidationContext
- 15, // 27: xds.CommonTlsContext.deprecated_v1:type_name -> xds.CommonTlsContext.DeprecatedV1
- 11, // 28: xds.CertificateValidationContext.trusted_ca:type_name -> xds.DataSource
- 17, // 29: xds.CertificateValidationContext.require_ocsp_staple:type_name -> xds.BoolValue
- 17, // 30: xds.CertificateValidationContext.require_signed_certificate_timestamp:type_name -> xds.BoolValue
- 11, // 31: xds.CertificateValidationContext.crl:type_name -> xds.DataSource
- 11, // 32: xds.TlsCertificate.certificate_chain:type_name -> xds.DataSource
- 11, // 33: xds.TlsCertificate.private_key:type_name -> xds.DataSource
- 11, // 34: xds.TlsCertificate.password:type_name -> xds.DataSource
- 11, // 35: xds.TlsCertificate.ocsp_staple:type_name -> xds.DataSource
- 11, // 36: xds.TlsCertificate.signed_certificate_timestamp:type_name -> xds.DataSource
- 1, // 37: xds.TlsParameters.tls_minimum_protocol_version:type_name -> xds.TlsParameters.TlsProtocol
- 1, // 38: xds.TlsParameters.tls_maximum_protocol_version:type_name -> xds.TlsParameters.TlsProtocol
- 17, // 39: xds.Listener.DeprecatedV1.bind_to_port:type_name -> xds.BoolValue
- 40, // [40:40] is the sub-list for method output_type
- 40, // [40:40] is the sub-list for method input_type
- 40, // [40:40] is the sub-list for extension type_name
- 40, // [40:40] is the sub-list for extension extendee
- 0, // [0:40] is the sub-list for field type_name
-}
-
-func init() { file_xds_lds_proto_init() }
-func file_xds_lds_proto_init() {
- if File_xds_lds_proto != nil {
- return
- }
- file_xds_base_proto_init()
- file_xds_envoy_base_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_xds_lds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Listener); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FilterChain); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FilterChainMatch); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Filter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TransportSocket); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DownstreamTlsContext); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CommonTlsContext); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateValidationContext); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TlsCertificate); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DataSource); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TlsParameters); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Listener_DeprecatedV1); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Filter_DeprecatedV1); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_xds_lds_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CommonTlsContext_DeprecatedV1); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_xds_lds_proto_msgTypes[9].OneofWrappers = []interface{}{
- (*DataSource_Filename)(nil),
- (*DataSource_InlineBytes)(nil),
- (*DataSource_InlineString)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_xds_lds_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 14,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_xds_lds_proto_goTypes,
- DependencyIndexes: file_xds_lds_proto_depIdxs,
- EnumInfos: file_xds_lds_proto_enumTypes,
- MessageInfos: file_xds_lds_proto_msgTypes,
- }.Build()
- File_xds_lds_proto = out.File
- file_xds_lds_proto_rawDesc = nil
- file_xds_lds_proto_goTypes = nil
- file_xds_lds_proto_depIdxs = nil
-}
diff --git a/go.mod b/go.mod
index b61a29d..0802046 100644
--- a/go.mod
+++ b/go.mod
@@ -1,29 +1,20 @@
module github.com/costinm/ugate
-go 1.18
-
-replace github.com/costinm/hbone => ../hbone
-
-replace github.com/costinm/meshauth => ../meshauth
+go 1.21
require (
- github.com/coreos/go-oidc v2.2.1+incompatible
- github.com/costinm/hbone v0.0.0-20221011174620-f25926c0b194
- github.com/costinm/meshauth v0.0.0-20221013185453-bb5aae6632f8
+ github.com/costinm/meshauth v0.0.0-20240105003042-ccb7c7765ee0
+ github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d
github.com/miekg/dns v1.1.50
- golang.org/x/net v0.1.0
- golang.org/x/sys v0.1.0
+ golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc
+ golang.org/x/net v0.19.0
+ golang.org/x/sys v0.16.0
+ sigs.k8s.io/yaml v1.4.0
)
require (
- github.com/golang/protobuf v1.5.2 // indirect
- github.com/pquerna/cachecontrol v0.1.0 // indirect
- golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
- golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
- golang.org/x/oauth2 v0.1.0 // indirect
- golang.org/x/text v0.4.0 // indirect
- golang.org/x/tools v0.1.12 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/protobuf v1.28.0 // indirect
- gopkg.in/square/go-jose.v2 v2.6.0 // indirect
+ golang.org/x/crypto v0.17.0 // indirect
+ golang.org/x/mod v0.14.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ golang.org/x/tools v0.16.0 // indirect
)
diff --git a/go.sum b/go.sum
index 7a83bae..9a0a973 100644
--- a/go.sum
+++ b/go.sum
@@ -1,42 +1,31 @@
-github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk=
-github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
+github.com/costinm/meshauth v0.0.0-20240105003042-ccb7c7765ee0 h1:o8CM8eNRGDSFS1QrFN8Wb7pSfEFQFtdIk61smVNxTHQ=
+github.com/costinm/meshauth v0.0.0-20240105003042-ccb7c7765ee0/go.mod h1:DyjbOGzDaVKYEQhuv4CrS/wZqplESvKaLCvF11hRgPs=
+github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d h1:SsxuU+DSeqPeY2JHrBp5qfG3PdIjlrfb2VZck7V7OnE=
+github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d/go.mod h1:Ez/sUx4fAqKWesQrTaoVjH6Lyi2x6QWW0fhcKvhe28g=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=
github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc=
-github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
+golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM=
+golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
-golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y=
-golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
+golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
+golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
+golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
+golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -44,32 +33,25 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
+golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
+golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM=
+golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
-google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
-google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
-gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
+sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/hbone.go b/hbone.go
new file mode 100644
index 0000000..b03b268
--- /dev/null
+++ b/hbone.go
@@ -0,0 +1,183 @@
+package ugate
+
+// HBone for compatibility with Istio
+
+
+// MuxDialer creates an association with a node and returns a mechanism to
+// make roundtrips. This is focused on HBone-like connections - but the mux
+// can make any HTTP requests as well.
+//type MuxDialer interface {
+// // DialMux creates a bi-directional multiplexed association with the node.
+// // The node must support a multiplexing protocol - the fallback is H2.
+// //
+// // Fallback:
+// // For non-mesh nodes the H2 connection may not allow incoming streams or
+// // messages. Mesh nodes emulate incoming streams using /h2r/ and send/receive
+// // messages using /.dm/msg/
+// DialMux(ctx context.Context, node *MeshCluster, meta http.Header,
+// ev func(t string, stream util.Stream)) (http.RoundTripper, error)
+//}
+
+
+// Implements HttpClient, HttpDoer, etc from multiple packages (connect, k8s, etc)
+// MeshCluster represents a single destination - hostname will not be used to connect,
+// but will be sent. For example the cluster can be an egress gateway or ztunnel.
+//func (c *MeshCluster) Do(req *http.Request) (*http.Response, error) {
+// return c.RoundTrip(req)
+//}
+
+//// DoRequest will do a RoundTrip and read the response.
+//func (c *MeshCluster) DoRequest(req *http.Request) ([]byte, error) {
+// var resp *http.Response
+// var err error
+//
+// resp, err = c.RoundTrip(req) // Client.Do(req)
+// if Debug {
+// log.Println("DoRequest", req, resp, err)
+// }
+//
+// if err != nil {
+// return nil, err
+// }
+//
+// defer resp.Body.Close()
+// data, err := ioutil.ReadAll(resp.Body)
+// if err != nil {
+// log.Println("readall", err)
+// return nil, err
+// }
+// if len(data) == 0 {
+// log.Println("readall", err)
+// return nil, io.EOF
+// }
+//
+// if resp.StatusCode >= 300 || resp.StatusCode < 200 {
+// return nil, errors.New(fmt.Sprintf("kconfig: unable to get %v, status code %v",
+// req.URL, resp.StatusCode))
+// }
+//
+// return data, nil
+//}
+
+//func (c *MeshCluster) RoundTrip(req *http.Request) (*http.Response, error) {
+// epc, err := c.UGate.H2Transport.FindMux(req.Context(), c)
+// if err != nil {
+// return nil, err
+// }
+//
+// r, _, err := c.rt(epc, req)
+// // TODO: grpc RoundTripper doesn't wait for headers !
+// return r, err
+//}
+
+// rt is the low level rountdrip implementation, after finding a connection to one endpoint
+//func (c *MeshCluster) rt(epc *EndpointCon, req *http.Request) (*http.Response, *EndpointCon, error) {
+// var resp *http.Response
+// var rterr, err error
+//
+// c.AddToken(c.UGate.Auth, req, "https://"+c.Addr)
+//
+// for i := 0; i < 3; i++ {
+//
+// // Find a channel - LB would go here if multiple addresses and sockets
+// if epc == nil || epc.RoundTripper == nil {
+// epc, err = c.UGate.H2Transport.FindMux(req.Context(), c)
+// if err != nil {
+// return nil, nil, err
+// }
+// }
+//
+// // IMPORTANT: some servers will not return the headers until the first byte of the response is sent, which
+// // may not happen until request bytes have been sent.
+// // For CONNECT, we will require that the server is flushing the headers as soon as the request is received,
+// // to emulate the connection semantics - at least initially.
+// // For POST and other methods - we can't assume this. That means read() on the conn will need to be blocked
+// // and wait for the Header frame to be received, and any metadata too.
+// resp, rterr = epc.RoundTripper.RoundTrip(req)
+// if Debug {
+// log.Println("RoundTrip", req, resp, rterr)
+// }
+//
+// if rterr != nil {
+// // retry on different mux
+// epc.RoundTripper = nil
+// continue
+// }
+//
+// return resp, epc, err
+// }
+// return nil, nil, rterr
+//}
+
+
+
+//// dialHbone implements the tunnel over H2. Returns a net.Conn implementation.
+//// TODO(costin): use the hostname, get IP override from x-original-dst header or cookie.
+//func (c *MeshCluster) dialHbone(ctx context.Context, req *http.Request) (*EndpointCon, util.Stream, error) {
+// // Find an endpoint and create a H2 connection for it.
+// epc, err := c.UGate.H2Transport.FindMux(ctx, c)
+// if err != nil {
+// return nil, nil, err
+// }
+//
+// if epc.Endpoint.Labels["http_proxy"] != "" {
+// // TODO: only POST mode supported right now, address not from label.
+//
+// hostPort := epc.Endpoint.HboneAddress()
+//
+// // Tunnel mode, untrusted proxy authentication.
+// req, _ := http.NewRequestWithContext(ctx, "POST", "https://"+hostPort, nil)
+//
+// err = c.AddToken(c.UGate.Auth, req, "https://"+hostPort)
+// if err != nil {
+// return nil, nil, err
+// }
+//
+// req.Header.Add("x-service", c.Addr)
+// req.Header.Add("x-tun", epc.Endpoint.Address)
+//
+// res, err := epc.RoundTripper.RoundTrip(req)
+// if err != nil {
+// epc.RoundTripper = nil
+// return nil, nil, err
+// }
+//
+// nc := res.Body.(net.Conn)
+// // Do the mTLS handshake for the tunneled connection
+// // SNI is based on the service name - or the SNI override.
+// sni := c.SNI
+// if sni == "" {
+// sni, _, _ = net.SplitHostPort(c.Addr)
+// }
+//
+// // Create a TLS connection to the endpoint.
+// // Using the sni of the service (frontend), but check the FQDN hostname identity
+// tlsClientConfig := c.UGate.Auth.TLSClientConf(&epc.Cluster.Dest, sni, epc.Endpoint.Hostname)
+// tlsTun := tls.Client(nc, tlsClientConfig)
+// err = util.HandshakeTimeout(tlsTun, c.UGate.HandsahakeTimeout, nil)
+// if err != nil {
+// return nil, nil, err
+// }
+// return epc, util.NewStreamConn(tlsTun), err
+//
+// // TLS wrapper will be added on response.
+// //return epc, res.Body.(net.Conn), err //
+// // &HTTPConn{R: res.Body, W: o, Conn: epc.TLSConn, Req: req, Res: res,
+// // MeshCluster: c}, err
+// }
+//
+// if req == nil {
+// req, _ = http.NewRequestWithContext(ctx, "CONNECT", "https://"+epc.Endpoint.Address, nil)
+// }
+//
+// req.Header.Add("x-service", c.Addr)
+//
+// res, _, err := c.rt(epc, req)
+// if err != nil {
+// return nil, nil, err
+// }
+//
+// nc := res.Body.(util.Stream)
+// // TODO: return nc directly instead of HTTPConn
+// return epc, nc, err
+//}
diff --git a/manifests/Chart.yaml b/manifests/Chart.yaml
deleted file mode 100644
index 3e6ee6d..0000000
--- a/manifests/Chart.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-apiVersion: v1
-name: ugate-all
-version: 0.1.1
-description: Install all ugate charts and probers
-keywords:
- - ugate
-engine: gotpl
diff --git a/manifests/charts/skaffold.yaml b/manifests/charts/skaffold.yaml
new file mode 100644
index 0000000..074161d
--- /dev/null
+++ b/manifests/charts/skaffold.yaml
@@ -0,0 +1,40 @@
+apiVersion: skaffold/v2beta19
+kind: Config
+metadata:
+ name: dev
+#build:
+# artifacts:
+# - image: gcr.io/dmeshgate/sshc
+# context: ..
+# custom:
+# buildCommand: make build gcp/push
+# dependencies:
+# paths:
+# - sshc/**
+# - manifests/sshd/**
+deploy:
+ helm:
+ releases:
+ - name: dev
+ chartPath: dev
+ #artifactOverrides:
+ # image: gcr.io/dmeshgate/sshc:latest
+
+ namespace: dev
+ createNamespace: true
+#portForward:
+#- resourceType: deployment
+# resourceName: ssh-ca
+# namespace: ssh-ca
+# port: 8080
+# localPort: 14021
+#- resourceType: deployment
+# resourceName: ssh-ca
+# namespace: ssh-ca
+# port: 8081
+# localPort: 14020
+#- resourceType: deployment
+# resourceName: sshd
+# namespace: sshd
+# port: 15022
+# localPort: 14022
diff --git a/manifests/charts/ugate-knative/Chart.yaml b/manifests/charts/ugate-knative/Chart.yaml
deleted file mode 100644
index 536dca5..0000000
--- a/manifests/charts/ugate-knative/Chart.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-apiVersion: v1
-name: ugate-knative
-version: 0.1.1
-description: Install uGate as a KNative/CloudRun service
-keywords:
- - ugate
-engine: gotpl
diff --git a/manifests/kustomize/hpa.yaml b/manifests/charts/ugate/templates/hpa.yaml
similarity index 100%
rename from manifests/kustomize/hpa.yaml
rename to manifests/charts/ugate/templates/hpa.yaml
diff --git a/manifests/charts/ugate-knative/templates/knative-ugate.yaml b/manifests/charts/ugate/templates/knative-ugate.yaml
similarity index 97%
rename from manifests/charts/ugate-knative/templates/knative-ugate.yaml
rename to manifests/charts/ugate/templates/knative-ugate.yaml
index 8afa07a..7974153 100644
--- a/manifests/charts/ugate-knative/templates/knative-ugate.yaml
+++ b/manifests/charts/ugate/templates/knative-ugate.yaml
@@ -1,3 +1,4 @@
+{{ if .Values.Knative }}
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
@@ -43,3 +44,4 @@ spec:
traffic:
- percent: 100
latestRevision: true
+{{ end }}
\ No newline at end of file
diff --git a/manifests/kustomize/lb-service.yaml b/manifests/charts/ugate/templates/lb-service.yaml
similarity index 100%
rename from manifests/kustomize/lb-service.yaml
rename to manifests/charts/ugate/templates/lb-service.yaml
diff --git a/manifests/monitoring.yaml b/manifests/charts/ugate/templates/monitoring.yaml
similarity index 100%
rename from manifests/monitoring.yaml
rename to manifests/charts/ugate/templates/monitoring.yaml
diff --git a/manifests/kustomize/pdb.yaml b/manifests/charts/ugate/templates/pdb.yaml
similarity index 100%
rename from manifests/kustomize/pdb.yaml
rename to manifests/charts/ugate/templates/pdb.yaml
diff --git a/tools/setup/cluster.sh b/manifests/cluster.sh
similarity index 100%
rename from tools/setup/cluster.sh
rename to manifests/cluster.sh
diff --git a/manifests/create_cluster.sh b/manifests/create_cluster.sh
index 1f27563..100a917 100644
--- a/manifests/create_cluster.sh
+++ b/manifests/create_cluster.sh
@@ -1 +1,29 @@
-gcloud beta container --project "costin-asm1" clusters create "istio" --zone "us-central1-c" --no-enable-basic-auth --cluster-version "1.25.1-gke.500" --release-channel "rapid" --machine-type "e2-standard-4" --image-type "COS_CONTAINERD" --disk-type "pd-balanced" --disk-size "100" --metadata disable-legacy-endpoints=true --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --max-pods-per-node "255" --spot --num-nodes "1" --logging=SYSTEM,WORKLOAD --monitoring=SYSTEM --enable-ip-alias --network "projects/costin-asm1/global/networks/default" --subnetwork "projects/costin-asm1/regions/us-central1/subnetworks/default" --no-enable-intra-node-visibility --enable-autoscaling --min-nodes "0" --max-nodes "4" --enable-dataplane-v2 --no-enable-master-authorized-networks --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver --enable-autoupgrade --enable-autorepair --max-surge-upgrade 1 --max-unavailable-upgrade 0 --enable-managed-prometheus --workload-pool "costin-asm1.svc.id.goog" --enable-shielded-nodes --no-shielded-integrity-monitoring --enable-image-streaming --node-locations "us-central1-c"
+function basic_cluster() {
+ gcloud beta container --project "costin-asm1" clusters create "istio" --zone "us-central1-c" \
+ --no-enable-basic-auth --cluster-version "1.25.1-gke.500" --release-channel "rapid" \
+ --machine-type "e2-standard-4" --image-type "COS_CONTAINERD" --disk-type "pd-balanced" \
+ --disk-size "100" --metadata disable-legacy-endpoints=true \
+ --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" \
+ --max-pods-per-node "255" --spot --num-nodes "1" \
+ --logging=SYSTEM,WORKLOAD --monitoring=SYSTEM --enable-ip-alias --network "projects/costin-asm1/global/networks/default" --subnetwork "projects/costin-asm1/regions/us-central1/subnetworks/default" \
+ --no-enable-intra-node-visibility --enable-autoscaling --min-nodes "0" --max-nodes "4" --enable-dataplane-v2 --no-enable-master-authorized-networks \
+ --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver --enable-autoupgrade --enable-autorepair --max-surge-upgrade 1 --max-unavailable-upgrade 0 \
+ --enable-managed-prometheus --workload-pool "costin-asm1.svc.id.goog" --enable-shielded-nodes --no-shielded-integrity-monitoring --enable-image-streaming --node-locations "us-central1-c"
+}
+
+# Minimal
+# 2 CPU one node
+# For fleet enrolled: 722mCPU out of 940
+# - event-exporter-gke 3
+# - fluentbit-gke 100
+# - gke-metrics-agent 11
+# - mdp-controller 50 ???
+# Without fleet:
+# 558 out of 940
+# -
+
+function create_net6() {
+ gcloud compute networks create ip6 --project=costin-istio3 --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
+
+ gcloud compute networks subnets create NAME --project=costin-istio3 --range=IP_RANGE --stack-type=IPV4_ONLY --network=ip6 --region=REGION
+}
\ No newline at end of file
diff --git a/manifests/kustomize/expose-istiod.yaml b/manifests/kustomize/expose-istiod.yaml
deleted file mode 100644
index 46b0380..0000000
--- a/manifests/kustomize/expose-istiod.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1alpha2
-kind: Gateway
-metadata:
- name: eastwestgateway
- namespace: istio-system
-spec:
- gatewayClassName: istio
- listeners:
- - name: istiod-grpc
- port: 15012
- protocol: TLS
- tls:
- mode: Passthrough
----
-apiVersion: gateway.networking.k8s.io/v1alpha2
-kind: TLSRoute
-metadata:
- name: eastwestgateway-grpc
- namespace: istio-system
-spec:
- parentRefs:
- - name: eastwestgateway
- kind: Gateway
- sectionName: istiod-grpc
- rules:
- - backendRefs:
- - name: istiod
- port: 15012
-
----
-apiVersion: gateway.networking.k8s.io/v1alpha2
-kind: Gateway
-metadata:
- name: eastwestgateway-ilb
- namespace: istio-system
- annotations:
- networking.gke.io/load-balancer-type: "Internal"
-spec:
- gatewayClassName: istio
- listeners:
- - name: istiod-grpc-ilb
- port: 15012
- protocol: TLS
- tls:
- mode: Passthrough
----
-apiVersion: gateway.networking.k8s.io/v1alpha2
-kind: TLSRoute
-metadata:
- name: eastwestgateway-grpc-ilb
- namespace: istio-system
-spec:
- parentRefs:
- - name: eastwestgateway-ilb
- kind: Gateway
- sectionName: istiod-grpc-ilb
- rules:
- - backendRefs:
- - name: istiod
- port: 15012
----
-apiVersion: networking.istio.io/v1alpha3
-kind: DestinationRule
-metadata:
- name: istiod-15012
- namespace: istio-system
-spec:
- host: istiod.istio-system.svc.cluster.local
- trafficPolicy:
- portLevelSettings:
- - port:
- number: 15012
- tls:
- mode: DISABLE
diff --git a/mesh.go b/mesh.go
new file mode 100644
index 0000000..7eaba47
--- /dev/null
+++ b/mesh.go
@@ -0,0 +1,261 @@
+package ugate
+
+import (
+ "context"
+ "crypto/x509"
+ "encoding/json"
+ "errors"
+
+ "github.com/costinm/meshauth"
+)
+
+// mesh abstracts the 'clusters'/'services'/endpoints and connections.
+
+// MeshCluster represents a set of endpoints, with a common configuration.
+// Can be a K8S Service with VIP and DNS name, an external service, etc.
+//
+// Similar with Envoy Cluster or K8S service, can also represent single
+// endpoint with multiple paths/IPs.
+// It includes node information, based on registration info or discovery.
+//
+// Also used for 'mesh' nodes, where we have a public key and other info, as well
+// as non-mesh nodes.
+//
+// This struct includes statistics about the node and current active association/mux
+// connections.
+type MeshCluster struct {
+ // Dest includes the address and auth-related info for the MeshCluster.
+ // The meshauth package includes helpers around authentication and certificates, decoupled from mesh.
+ meshauth.Dest
+
+ // MeshCluster WorkloadID - the cluster name in kube config, hub, gke - cluster name in XDS
+ // Defaults to Base addr - but it is possible to have multiple clusters for
+ // same address ( ex. different users / token providers).
+ //
+ // Examples:
+ // GKE cluster: gke_PROJECT_LOCATION_NAME
+ //
+ // For mesh nodes:
+ // ID is the (best) primary id known for the node. Format is:
+ // base32(SHA256(EC_256_pub)) - 32 bytes binary, 52 bytes encoded
+ // base32(ED_pub) - same size, for nodes with ED keys.
+ //
+ // For non-mesh nodes, it is a (real) domain name or IP if unknown.
+ // It may include port, or even be a URL - the external destinations may
+ // have different public keys on different ports.
+ //
+ // The node may be a virtual IP ( ex. K8S/Istio service ) or name
+ // of a virtual service.
+ //
+ // If IPs are used, they must be either truncated SHA or included
+ // in the node cert or the control plane must return metadata and
+ // secure low-level network is used (like wireguard)
+ //
+ // Required for secure communication.
+ //
+ // Examples:
+ // - [B32_SHA]
+ // - [B32_SHA].reviews.bookinfo.svc.example.com
+ // - IP6 (based on SHA or 'trusted' IP)
+ // - IP4 ('trusted' IP)
+ //
+ ID string `json:"id,omitempty"`
+
+ // IPFS:
+ // http:///ipfs/CID/path
+ // http://.ipfs./
+ // http://gateway/ipns/IPNDS_ID/path
+ // ipfs:///, ipns:///, and dweb://
+ //
+ // Multiaddr: TLV
+
+ // Active connections to endpoints, each is a multiplexed H2 connection.
+ //EndpointCon []*EndpointCon
+
+ // Hosts are workload addresses associated with the backend service.
+ //
+ // If empty, the MeshCluster Addr will be used directly - it is expected to be
+ // a FQDN or VIP that is routable - either a service backed by an LB or handled by
+ // ambient or K8S.
+ //
+ // This may be pre-configured or result of discovery (IPs, extra properties).
+ Hosts []*Host
+
+ // Parent.
+ //UGate *UGate
+
+ // TODO: UserAgent, DefaultHeaders
+
+ // TLS config used when dialing using workload identity, shared per dest.
+ //TLSClientConfig *tls.Config
+
+ //LastUsed time.Time
+
+
+}
+
+
+// GetCluster returns a cluster for the given address, or nil if not found.
+func (hb *UGate) GetCluster(addr string) *MeshCluster {
+ hb.m.RLock()
+ c := hb.Clusters[addr]
+ // Make sure it is set correctly.
+ if c != nil && c.ID == "" {
+ c.ID = addr
+ }
+
+ hb.m.RUnlock()
+ return c
+}
+
+
+// Cluster will get an existing cluster or create a dynamic one.
+// Dynamic clusters can be GC and loaded on-demand.
+func (hb *UGate) Cluster(ctx context.Context, addr string) (*MeshCluster, error) {
+ // TODO: extract cluster from addr, allow URL with params to indicate how to connect.
+ //host := ""
+ //if strings.Contains(dest, "//") {
+ // u, _ := url.Parse(dest)
+ //
+ // host, _, _ = net.SplitHostPort(u.Host)
+ //} else {
+ // host, _, _ = net.SplitHostPort(dest)
+ //}
+ //if strings.HasSuffix(host, ".svc") {
+ // hc.H2Gate = hg + ":15008" // hbone/mtls
+ // hc.ExternalMTLSConfig = auth.GenerateTLSConfigServer()
+ //}
+ //// Initialization done - starting the proxy either on a listener or stdin.
+
+ // 1. Find the cluster for the address. If not found, create one with the defaults or use on-demand
+ // if XDS server is configured
+ hb.m.RLock()
+ c, ok := hb.Clusters[addr]
+ hb.m.RUnlock()
+
+ // TODO: use discovery to find info about service addr, populate from XDS on-demand or DNS
+ if !ok {
+ // TODO: on-demand, DNS lookups, etc
+ c = &MeshCluster{Dest: meshauth.Dest{Addr: addr, Dynamic: true}, ID: addr}
+ hb.AddCluster(c)
+ }
+ //c.LastUsed = time.Now()
+ return c, nil
+}
+
+// AddCluster will add a cluster to be used for Dial and RoundTrip.
+// The 'Addr' field can be a host:port or IP:port.
+// If id is set, it can be host:port or hostname - will be added as a destination.
+// The service can be IP:port or URLs
+func (hb *UGate) AddCluster(c *MeshCluster, host ...*Host) *MeshCluster {
+ hb.m.Lock()
+ hb.Clusters[c.Addr] = c
+
+ if c.ID != "" {
+ hb.Clusters[c.ID] = c
+ }
+
+ //c.UGate = hb
+ if c.ConnectTimeout == 0 {
+ c.ConnectTimeout = hb.ConnectTimeout.Duration
+ }
+ hb.m.Unlock()
+
+ for _, s := range host {
+ c.Hosts = append(c.Hosts, s)
+ }
+ return c
+}
+
+//func (hb *UGate) AddDest(c *meshauth.Dest, host ...*Host) *MeshCluster {
+//
+// return hb.AddCluster(&MeshCluster{Dest: *c}, host...)
+//}
+
+
+
+// Textual representation of the node registration data.
+func (n *MeshCluster) String() string {
+ b, _ := json.Marshal(n)
+ return string(b)
+}
+
+// Host represents the properties of a single workload.
+// By default, clusters resolve the endpoints dynamically, using DNS or EDS or other
+// discovery mechanisms.
+type Host struct {
+ // Labels for the workload. Extracted from pod info - possibly TXT records
+ //
+ // 'hbone' can be used for a custom hbone endpoint (default 15008).
+ //
+ Labels map[string]string `json:"labels,omitempty"`
+
+ //LBWeight int `json:"lb_weight,omitempty"`
+ //Priority int
+
+ // Address is an IP where the host can be reached.
+ // It can be a real IP (in the mesh, direct) or a jump host.
+ //
+ Address string `json:"addr,omitempty"`
+
+ // FQDN of the host. Used to check host cert.
+ Hostname string
+}
+
+//func (e *Host) HboneAddress() string {
+// addr := e.Labels["hbone"]
+// if addr != "" {
+// return addr
+// }
+//
+// if addr == "" && e.Address != "" {
+// addr = e.Address
+// h, _, _ := net.SplitHostPort(addr)
+// addr = net.JoinHostPort(h, "15008")
+// return addr
+// }
+//
+// return addr
+//}
+//
+
+
+//// EndpointCon is a multiplexed H2 client for a specific destination instance part
+//// of a MeshCluster.
+////
+//// It wraps a real H2/QUIC implementation (RoundTripper), a connection, config and metadata.
+//type EndpointCon struct {
+// Cluster *MeshCluster
+// Endpoint *Host
+//
+// // Multiplex connection - may implement additional interfaces to open lighter
+// // streams, like Dial()
+// RoundTripper http.RoundTripper // *http2.ClientConn or custom (wrapper)
+//
+// TLSConn net.Conn
+// // The stream connection - may be a real TCP or not
+// streamCon net.Conn
+// ConnectionStart time.Time
+// SSLEnd time.Time
+//}
+
+//func (c *MeshCluster) UpdateEndpoints(ep []*Host) {
+// c.UGate.m.Lock()
+// // TODO: preserve unmodified endpoints connections, by IP, refresh pending
+// c.Hosts = ep
+// c.UGate.m.Unlock()
+//}
+
+// EndpointCon (peer) is over capacity or unavailable.
+var ServiceUnavailable = errors.New("Service Unavailable 503")
+
+
+// Return the custom cert pool, if cluster config specifies a list of trusted
+// roots, or nil if default trust is used.
+func (c *MeshCluster) trustRoots() *x509.CertPool {
+ return c.Dest.CertPool()
+}
+//
+//func (hc *EndpointCon) Close() error {
+// return hc.TLSConn.Close()
+//}
diff --git a/okteto.yml b/okteto.yml
deleted file mode 100644
index 50e7860..0000000
--- a/okteto.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-#name: ugate
-#namespace: ugate
-name: ugate-dev
-namespace: istio-system
-
-image: gcr.io/dmeshgate/ugate-dev:latest
-
-# Auto-create a deployment, if not found
-#
-autocreate: true
-workdir: /work
-command: ["bash"]
-environment:
- - TAG=16
- - HUB=costinm
- - BUILD_WITH_CONTAINER=0
- - HOME=/home/istio-proxy
- - USER=istio-proxy
-volumes: # Cached
- - /go/pkg/
- - /root/.cache/go-build/
-# - $HOME/.cache/go-build/
-# Default istiod is 2G/.5cpu - need to override
-resources:
- requests:
- memory: 2G
- cpu: 1000m
-
-persistentVolume:
- enabled: true
- size: 100Gi
-
-# No ssh in the dev image
-remote: 12022
-
-securityContext:
- capabilities:
- add:
- - SYS_PTRACE
- - NET_ADMIN
-# runAsUser: 1337
-# fsGroup: 3000
-# runAsGroup: 1337
-
-forward:
- - 12080:8080
- - 12012:15012
- - 12053:15053
-#reverse:
-# - 9000:9001
diff --git a/pkg/cfgfs/conf.go b/pkg/cfgfs/conf.go
deleted file mode 100644
index 9824195..0000000
--- a/pkg/cfgfs/conf.go
+++ /dev/null
@@ -1,124 +0,0 @@
-package cfgfs
-
-import (
- "io/ioutil"
- "log"
- "os"
- "path/filepath"
- "strings"
- "sync"
-
- "github.com/costinm/ugate"
-)
-
-// TODO: map FOO_BAR to foo.bar, construct yaml equivalent
-// Reload the files
-// Dynamic Flags - https://github.com/mwitkow/go-flagz, fortio:
-
-// Simple file-based config and secret store.
-//
-// Implements a ConfStore interface with List/Get/Set interface.
-//
-// TODO: Watch interface - using messages/pubsub !!!
-//
-// TODO: switch to yaml, support K8S style
-//
-// TODO: integrate with krun, use the REST as a config source, possibly with watcher
-type Conf struct {
- // Base directory. If not set, no config will be saved and read
- // will only return env or in-memory configs. First will be used for write.
- base []string
-
- // Conf is configured from Android side with the config (settings)
- // ssid, pass, vpn_ext
- Conf map[string]string `json:"Conf,omitempty"`
-
- // additional stores. Key is the prefix for the name.
- stores map[string]ugate.ConfStore
-
- m sync.RWMutex
- // if base is empty, this will be used to persist the configs.
- inMemory map[string][]byte
-}
-
-// NewConf Returns a config store.
-// Implements a basic auth.ConfStore interface
-func NewConf(base ...string) *Conf {
- // TODO: https for remote - possibly using local creds and K8S style or XDS
- env := os.Environ()
- envconf := map[string]string{}
- for _, ev := range env {
- kv := strings.SplitN(ev, "=", 2)
- if len(kv) == 2 {
- envconf[kv[0]] = kv[1]
- }
- }
- return &Conf{
- base: base,
- Conf: envconf,
- inMemory: map[string][]byte{},
- }
-}
-
-func (c *Conf) List(name string, tp string) ([]string, error) {
- res := []string{}
-
- return res, nil
-}
-
-// Secrets - pem, acl
-// From config dir, fallback to .ssh, .lego and /etc/certs
-//
-// "name" may be a hostname
-func (c *Conf) Get(name string) ([]byte, error) {
- c.m.RLock()
- inmd := c.inMemory[name]
- c.m.RUnlock()
- if inmd != nil {
- return inmd, nil
- }
-
- envName := strings.ReplaceAll(name, ".", "_")
- envName = strings.ReplaceAll(envName, "/", "_")
- envd := os.Getenv(envName)
- if envd != "" {
- return []byte(envd), nil
- }
-
- for _, b := range c.base {
- l := filepath.Join(b, name)
-
- if _, err := os.Stat(l); err == nil { // || !os.IsNotExist(err)
- res, err := ioutil.ReadFile(l)
- if err == nil {
- return res, nil
- }
- }
- if _, err := os.Stat(l + ".json"); err == nil { // || !os.IsNotExist(err)
- res, err := ioutil.ReadFile(l + ".json")
- if err == nil {
- return res, nil
- }
- }
- }
-
- // name may be a hostname - use it to load ACME certificate for the host.
-
- return nil, nil
-}
-
-func (c *Conf) Set(conf string, data []byte) error {
- if c == nil || c.base == nil || len(c.base) == 0 {
- // In memory
- c.m.Lock()
- c.inMemory[conf] = data
- c.m.Unlock()
-
- return nil
- }
- err := ioutil.WriteFile(c.base[0]+conf, data, 0700)
- if err != nil {
- log.Println("Error saving ", err, c.base, conf)
- }
- return err
-}
diff --git a/pkg/dhcp/README.md b/pkg/dhcp/README.md
new file mode 100644
index 0000000..d2729c6
--- /dev/null
+++ b/pkg/dhcp/README.md
@@ -0,0 +1,17 @@
+# DHCP server
+
+For home network and VMs - and experimenting.
+
+Goals:
+- act as DHCP4/6 server, using the mesh control plane as source of info for
+ registered MACs/hostnames
+- for new hosts, register with the mesh at DHCP time
+- for VMs / machines without OS - experiment with automatic provisioning (tftp, https)
+
+Alternative:
+- watch /tmp/leases and update on change
+- mount /tmp/leases as a 9P ?
+
+Others:
+- https://coredhcp.io/
+ - redis plugin, etc. Can be used standalone and extended.
diff --git a/pkg/dhcp/go.mod b/pkg/dhcp/go.mod
new file mode 100644
index 0000000..8de28bd
--- /dev/null
+++ b/pkg/dhcp/go.mod
@@ -0,0 +1,13 @@
+module dhcp
+
+go 1.21
+
+require github.com/insomniacslk/dhcp v0.0.0-20231206064809-8c70d406f6d2
+
+require (
+ github.com/josharian/native v1.1.0 // indirect
+ github.com/pierrec/lz4/v4 v4.1.14 // indirect
+ github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
+ golang.org/x/net v0.17.0 // indirect
+ golang.org/x/sys v0.13.0 // indirect
+)
diff --git a/pkg/dhcp/ugate_dhcp.go b/pkg/dhcp/ugate_dhcp.go
new file mode 100644
index 0000000..231919c
--- /dev/null
+++ b/pkg/dhcp/ugate_dhcp.go
@@ -0,0 +1,47 @@
+package main
+
+import (
+ "net"
+
+ "github.com/insomniacslk/dhcp/dhcpv4"
+ "github.com/insomniacslk/dhcp/dhcpv4/server4"
+ "github.com/insomniacslk/dhcp/dhcpv6"
+ "github.com/insomniacslk/dhcp/dhcpv6/server6"
+)
+
+import (
+ "log"
+)
+
+func handler(conn net.PacketConn, peer net.Addr, m dhcpv6.DHCPv6) {
+ // this function will just print the received DHCPv6 message, without replying
+ log.Print(m.Summary())
+}
+func handler4(conn net.PacketConn, peer net.Addr, m *dhcpv4.DHCPv4) {
+ // this function will just print the received DHCPv6 message, without replying
+ log.Print(m.Summary())
+}
+
+func main() {
+ if false {
+ laddr := &net.UDPAddr{
+ IP: net.ParseIP("::1"),
+ Port: dhcpv6.DefaultServerPort,
+ }
+ server, err := server6.NewServer("", laddr, handler)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ go server.Serve()
+ }
+
+ laddr4 := &net.UDPAddr{
+ Port: dhcpv4.ServerPort,
+ }
+ s4, err := server4.NewServer("", laddr4, handler4)
+ if err != nil {
+ log.Fatal(err)
+ }
+ s4.Serve()
+}
diff --git a/dns/dns.go b/pkg/dns/dns.go
similarity index 98%
rename from dns/dns.go
rename to pkg/dns/dns.go
index 025b826..2f2dd45 100644
--- a/dns/dns.go
+++ b/pkg/dns/dns.go
@@ -32,10 +32,6 @@ var (
return make([]byte, 0, 32*1024)
}}
- bufferPoolUdp = sync.Pool{New: func() interface{} {
- return make([]byte, 0, 1600)
- }}
-
bufferPoolHttp = sync.Pool{New: func() interface{} {
return make([]byte, 0, 4096)
}}
@@ -49,7 +45,6 @@ type UdpWriter interface {
WriteTo(data []byte, dstAddr *net.UDPAddr, srcAddr *net.UDPAddr) (int, error)
}
-
type DmDns struct {
// used by the dns proxy for forwarding queries to real DNS/UDP clients
dnsUDPclient *dns.Client
@@ -149,7 +144,7 @@ func (s *DmDns) IPResolve(ip string) string {
// New DNS server, listening on port.
func NewDmDns(port int) (*DmDns, error) {
d := &DmDns{
- Port: port,
+ Port: port,
dnsUDPclient: &dns.Client{},
dnsEntries: map[string]map[uint16]dns.RR{},
dnsByAddr: make(map[string]*DnsEntry),
@@ -177,7 +172,7 @@ func NewDmDns(port int) (*DmDns, error) {
ReadTimeout: 15 * time.Minute}
dns.HandleFunc(".", func(w dns.ResponseWriter, req *dns.Msg) {
- m := d.Process(req)
+ m := d.Process(req)
writeMsg(w, m)
})
@@ -189,7 +184,9 @@ func NewDmDns(port int) (*DmDns, error) {
if err != nil {
return d, err
}
+
log.Println("Starting DNS server ", port)
+
d.UDPConn = l
err6 := ipv6.NewPacketConn(l).SetControlMessage(ipv6.FlagDst|ipv6.FlagInterface, true)
err4 := ipv4.NewPacketConn(l).SetControlMessage(ipv4.FlagDst|ipv4.FlagInterface, true)
@@ -383,7 +380,6 @@ func (s *DmDns) Process(req *dns.Msg) *dns.Msg {
return res
}
-// Actual processing of the request (wrapped in Process with stats)
func (s *DmDns) process(req *dns.Msg) *dns.Msg {
name := req.Question[0].Name
@@ -510,7 +506,7 @@ func (s *DmDns) ForwardRealDNS(req *dns.Msg) (*dns.Msg, error) {
}
if err != nil {
- //log.Println("DNS err:", req.Id, nservers[nsIdx], req.Question[0].Name, err)
+ //log.Println("DNS err:", req.muxID, nservers[nsIdx], req.Question[0].Name, err)
}
// Continue with next available DmDns
diff --git a/dns/dns_http.go b/pkg/dns/dns_http.go
similarity index 98%
rename from dns/dns_http.go
rename to pkg/dns/dns_http.go
index f9022ec..83823dc 100644
--- a/dns/dns_http.go
+++ b/pkg/dns/dns_http.go
@@ -1,5 +1,3 @@
-//+build DNS_HTTP
-
package dns
import (
@@ -17,8 +15,6 @@ import (
"github.com/miekg/dns"
)
-//mux.Handle("/dns/", s)
-
var (
debugHttp = os.Getenv("DEBUG_DNS") == "1"
)
@@ -150,4 +146,3 @@ func (s *DmDns) ForwardHttp(req *dns.Msg) (*dns.Msg, error) {
dm.Id = id
return dm, nil
}
-
diff --git a/dns/dns_test.go b/pkg/dns/dns_test.go
similarity index 100%
rename from dns/dns_test.go
rename to pkg/dns/dns_test.go
diff --git a/pkg/echo/echo.go b/pkg/echo/echo.go
new file mode 100644
index 0000000..d29a05d
--- /dev/null
+++ b/pkg/echo/echo.go
@@ -0,0 +1,209 @@
+package echo
+
+import (
+ "bytes"
+ "encoding/binary"
+ "encoding/json"
+ "io"
+ "log"
+ "net"
+ "net/http"
+ "time"
+
+ "github.com/costinm/meshauth"
+ "github.com/costinm/ssh-mesh/nio"
+ "github.com/costinm/ugate"
+)
+
+// Control handler, also used for testing
+type EchoHandler struct {
+ UGate *ugate.UGate
+
+ Debug bool
+ ServerFirst bool
+ WaitFirst time.Duration
+
+ Received int
+}
+
+var DebugEcho = false
+
+func EchoPortHandler(ug *ugate.UGate, ph *meshauth.PortListener) error {
+ e := &EchoHandler{}
+ nio.ListenAndServe(ph.Address, func(conn net.Conn) {
+ if e.Debug {
+ log.Println("Echo ", e.ServerFirst, conn.RemoteAddr())
+ }
+ e.handleStreams(conn, conn)
+ })
+ return nil
+}
+
+func (eh *EchoHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ if eh.Debug {
+ log.Println("ECHOH ", r)
+ }
+ w.WriteHeader(200)
+
+ // H2 requests require write to be flushed - buffering happens !
+
+ if r.URL.Port() == "/raw" {
+ // Similar with echo TCP - but can't close
+ eh.handleStreams(r.Body, w)
+ return
+ }
+
+ w.(http.Flusher).Flush()
+ //// Wrap w.Body into Stream which does this automatically
+ str := nio.NewStreamServerRequest(r, w)
+ //
+ eh.handle(str, false)
+}
+
+// StreamInfo tracks information about one stream.
+type StreamInfo struct {
+ LocalAddr net.Addr
+ RemoteAddr net.Addr
+
+ Meta http.Header
+
+ RemoteID string
+
+ ALPN string
+
+ Dest string
+
+ Type string
+}
+
+func GetStreamInfo(str net.Conn) *StreamInfo {
+ si := &StreamInfo{
+ LocalAddr: str.LocalAddr(),
+ RemoteAddr: str.RemoteAddr(),
+ }
+ if s, ok := str.(nio.StreamMeta); ok {
+ si.Meta = s.RequestHeader()
+ // TODO: extract identity - including UDS
+ if tc := s.TLSConnectionState(); tc != nil {
+ si.ALPN = tc.NegotiatedProtocol
+ }
+ }
+
+ return si
+}
+
+
+func (e *EchoHandler) handleStreams(in io.Reader, out io.Writer) {
+ d := make([]byte, 2048)
+ b := &bytes.Buffer{}
+
+ b.WriteString("Hello world\n")
+
+ time.Sleep(e.WaitFirst)
+
+ if e.ServerFirst {
+ n, err := out.Write(b.Bytes())
+ if e.Debug {
+ log.Println("ServerFirst write()", n, err)
+ }
+ }
+ writeClosed := false
+ for {
+ n, err := in.Read(d)
+ e.Received += n
+ if e.Debug {
+ log.Println("Echo read()", n, err)
+ }
+ if err != nil {
+ if e.Debug {
+ log.Println("ECHO DONE", err)
+ }
+ if err == io.EOF && e.ServerFirst {
+ binary.BigEndian.PutUint32(d, uint32(n))
+ out.Write(d[0:4])
+ if cw, ok := out.(nio.CloseWriter); ok {
+ cw.CloseWrite()
+ }
+ } else {
+ if c, ok := in.(io.Closer); ok {
+ c.Close()
+ }
+ if c, ok := out.(io.Closer); ok {
+ c.Close()
+ }
+ }
+ return
+ }
+
+ // Client requests server graceful close
+ if d[0] == 0 {
+ if wc, ok := out.(nio.CloseWriter); ok {
+ wc.CloseWrite()
+ writeClosed = true
+ // Continue to read ! The test can check the read byte counts
+ }
+ }
+
+ if !writeClosed {
+ // TODO: add delay (based on req)
+ out.Write(d[0:n])
+ if e.Debug {
+ log.Println("ECHO write")
+ }
+ }
+ if f, ok := out.(http.Flusher); ok {
+ f.Flush()
+ }
+ }
+}
+
+func (e *EchoHandler) handle(str nio.Stream, serverFirst bool) error {
+ d := make([]byte, 2048)
+
+ si := GetStreamInfo(str)
+ si.RemoteID = e.UGate.RemoteID(str)
+
+ b1, _ := json.Marshal(si)
+ b := &bytes.Buffer{}
+
+ b.Write(b1)
+ b.Write([]byte{'\n'})
+
+ if serverFirst {
+ str.Write(b.Bytes())
+ }
+ //ac.SetDeadline(time.Now().StartListener(5 * time.Second))
+ n, err := str.Read(d)
+ if err != nil {
+ return err
+ }
+ if DebugEcho {
+ log.Println("ECHO rcv", n, "strid", str.State().StreamId)
+ }
+ if !serverFirst {
+ str.Write(b.Bytes())
+ }
+ str.Write(d[0:n])
+
+ io.Copy(str, str)
+ //if DebugClose {
+ // log.Println("ECHO DONE", str.StreamId)
+ //}
+ return nil
+}
+func (eh *EchoHandler) String() string {
+ return "Echo"
+}
+func (eh *EchoHandler) HandleConn(conn net.Conn) error {
+ s := conn.(nio.Stream)
+ return eh.Handle(s)
+}
+
+func (eh *EchoHandler) Handle(ac nio.Stream) error {
+ if DebugEcho {
+ log.Println("ECHOS ", ac)
+ }
+ defer ac.Close()
+ return eh.handle(ac, false)
+}
+
diff --git a/ugated/pkg/cfquiche/go.mod b/pkg/ext/cfquiche/go.mod
similarity index 91%
rename from ugated/pkg/cfquiche/go.mod
rename to pkg/ext/cfquiche/go.mod
index afc13de..1da0b88 100644
--- a/ugated/pkg/cfquiche/go.mod
+++ b/pkg/ext/cfquiche/go.mod
@@ -8,8 +8,6 @@ replace github.com/costinm/ugate/ugated => ./../..
replace github.com/costinm/ugate/ugatex => ./../../../ugatex
-replace github.com/costinm/hbone => ./../../../../hbone
-
replace github.com/costinm/meshauth => ./../../../../meshauth
require (
diff --git a/ugated/pkg/cfquiche/go.sum b/pkg/ext/cfquiche/go.sum
similarity index 100%
rename from ugated/pkg/cfquiche/go.sum
rename to pkg/ext/cfquiche/go.sum
diff --git a/ugated/pkg/cfquiche/quiche.go b/pkg/ext/cfquiche/quiche.go
similarity index 97%
rename from ugated/pkg/cfquiche/quiche.go
rename to pkg/ext/cfquiche/quiche.go
index 63e6d66..2f7b47b 100644
--- a/ugated/pkg/cfquiche/quiche.go
+++ b/pkg/ext/cfquiche/quiche.go
@@ -9,8 +9,6 @@ import (
"strings"
"time"
- "github.com/costinm/hbone/nio"
- "github.com/costinm/ugate"
"github.com/costinm/ugate/pkg/ugatesvc"
"github.com/goburrow/quiche"
)
@@ -18,7 +16,7 @@ import (
type Quiche struct {
}
-func (q Quiche) DialMux(ctx context.Context, node *ugate.Cluster, meta http.Header, ev func(t string, stream *nio.Stream)) (ugate.Muxer, error) {
+func (q Quiche) DialMux(ctx context.Context, node *ugatesvc.Cluster, meta http.Header, ev func(t string, stream *ugatesvc.Stream)) (ugatesvc.Muxer, error) {
//quiche.EnableDebugLogging()
config, err := newConfig(quiche.ProtocolVersion)
@@ -36,7 +34,7 @@ type client struct {
conn *quiche.Connection
}
-func New(ug *ugatesvc.UGate) *Quiche {
+func New(ug *ugate.UGate) *Quiche {
//os.Setenv("QUIC_GO_LOG_LEVEL", "DEBUG")
// We will only register a single QUIC server by default, and a factory for cons
diff --git a/ugated/pkg/cfquiche/quiche.md b/pkg/ext/cfquiche/quiche.md
similarity index 100%
rename from ugated/pkg/cfquiche/quiche.md
rename to pkg/ext/cfquiche/quiche.md
diff --git a/ugated/pkg/cfquiche/quiche_test.go b/pkg/ext/cfquiche/quiche_test.go
similarity index 77%
rename from ugated/pkg/cfquiche/quiche_test.go
rename to pkg/ext/cfquiche/quiche_test.go
index dbaaef6..bdef18f 100644
--- a/ugated/pkg/cfquiche/quiche_test.go
+++ b/pkg/ext/cfquiche/quiche_test.go
@@ -6,24 +6,23 @@ import (
"strconv"
"testing"
- "github.com/costinm/ugate"
"github.com/costinm/ugate/pkg/ugatesvc"
- "github.com/costinm/ugate/test"
+ "github.com/costinm/ugate/pkg/test"
)
func BenchmarkUGateQUIC(b *testing.B) {
// Fixed key, config from filesystem. Base is 14000
- alice := test.InitTestServer(test.ALICE_KEYS, &ugate.MeshSettings{BasePort: 6300, NoAccessLog: true, Name: "alice"}, func(gate *ugatesvc.UGate) {
+ alice := test.InitTestServer(test.ALICE_KEYS, &ugatesvc.MeshSettings{BasePort: 6300, AccessLog: true, Name: "alice"}, func(gate *ugate.UGate) {
New(gate)
})
// In memory config store. All options
- bob := test.InitTestServer(test.BOB_KEYS, &ugate.MeshSettings{BasePort: 6400, NoAccessLog: true, Name: "bob"}, func(bob *ugatesvc.UGate) {
+ bob := test.InitTestServer(test.BOB_KEYS, &ugatesvc.MeshSettings{BasePort: 6400, AccessLog: true, Name: "bob"}, func(bob *ugate.UGate) {
New(bob)
})
log.Println(bob.Auth.VIP6)
- bobAddr := "localhost:" + strconv.Itoa(bob.Config.BasePort+ugate.PORT_BTS)
+ bobAddr := "localhost:" + strconv.Itoa(bob.Config.BasePort+ugatesvc.PORT_BTS)
// Alice dials a MUX to bob
bobNode := alice.GetOrAddNode(bob.Auth.ID)
@@ -62,17 +61,17 @@ func BenchmarkUGateQUIC(b *testing.B) {
func TestQuic(t *testing.T) {
// Fixed key, config from filesystem. Base is 14000
- alice := test.InitTestServer(test.ALICE_KEYS, &ugate.MeshSettings{BasePort: 6300, Name: "alice"}, func(gate *ugatesvc.UGate) {
+ alice := test.InitTestServer(test.ALICE_KEYS, &ugatesvc.MeshSettings{BasePort: 6300, Name: "alice"}, func(gate *ugate.UGate) {
New(gate)
})
//// In memory config store. All options
- //bob := test.InitTestServer(test.BOB_KEYS, &ugate.MeshSettings{BasePort: 6400, Name: "bob"}, func(bob *ugatesvc.UGate) {
+ //bob := test.NewTestNode(test.BOB_KEYS, &ugate.MeshSettings{BasePort: 6400, Name: "bob"}, func(bob *ugate.UGate) {
// New(bob)
//})
//log.Println(bob.Auth.VIP6)
- bobAddr := "localhost:" + strconv.Itoa(6100+ugate.PORT_BTS)
+ bobAddr := "localhost:" + strconv.Itoa(6100+ugatesvc.PORT_BTS)
// Alice dials a MUX to bob
bobNode := alice.GetOrAddNode(test.BOB_ID)
@@ -94,7 +93,7 @@ func TestQuic(t *testing.T) {
//// Bob -> H3R -> Alice -> Echo
//// Bob did not dial Alice, doesn't have the address ( and alice didn't start server )
- //t.Run("reverse", func(t *testing.T) {
+ //t.Init("reverse", func(t *testing.T) {
// // Using DialContext interface - mesh address will use the node.
// ctx, cf := context.WithTimeout(context.Background(), 5000 * time.Second)
// defer cf()
diff --git a/pkg/ext/nft/go.mod b/pkg/ext/nft/go.mod
new file mode 100644
index 0000000..d7bb5d9
--- /dev/null
+++ b/pkg/ext/nft/go.mod
@@ -0,0 +1,20 @@
+module github.com/costinm/ugate/pkg/ext/nft
+
+go 1.21
+
+require (
+ github.com/google/nftables v0.1.0
+ github.com/greenpau/cni-plugins v1.0.12
+ golang.org/x/sys v0.6.0
+)
+
+require (
+ github.com/containernetworking/cni v1.1.2 // indirect
+ github.com/google/go-cmp v0.5.9 // indirect
+ github.com/josharian/native v1.1.0 // indirect
+ github.com/mdlayher/netlink v1.7.1 // indirect
+ github.com/mdlayher/socket v0.4.0 // indirect
+ github.com/vishvananda/netns v0.0.4 // indirect
+ golang.org/x/net v0.8.0 // indirect
+ golang.org/x/sync v0.1.0 // indirect
+)
diff --git a/pkg/ext/nft/nft.go b/pkg/ext/nft/nft.go
new file mode 100644
index 0000000..37629d1
--- /dev/null
+++ b/pkg/ext/nft/nft.go
@@ -0,0 +1,23 @@
+package nft
+
+import (
+ "github.com/google/nftables"
+ "github.com/greenpau/cni-plugins/pkg/utils"
+)
+
+/*
+
+nft list ruleset
+
+*/
+
+func Nft() {
+ nftables.New()
+
+ // They use /proc/%d/task/%d/ns/net to get the net NS.
+
+ // Named networks: /var/run/netns/NAME
+
+ utils.CreateTable("4", "mesh")
+ utils.CreateTable("6", "mesh")
+}
diff --git a/pkg/ext/nft/nft_test.go b/pkg/ext/nft/nft_test.go
new file mode 100644
index 0000000..129b6e6
--- /dev/null
+++ b/pkg/ext/nft/nft_test.go
@@ -0,0 +1,94 @@
+package nft
+
+import (
+ "log"
+ "net"
+ "testing"
+
+ "github.com/google/nftables"
+ "github.com/google/nftables/binaryutil"
+ "github.com/google/nftables/expr"
+ "golang.org/x/sys/unix"
+)
+
+func TestNFT(t *testing.T) {
+ nt, err := nftables.New()
+ if err != nil {
+ t.Fatal()
+ }
+ //nt.AddRule(&nftables.Rule{})
+
+ //cl, err := nt.ListChains()
+ //if err != nil {
+ // t.Fatal(err)
+ //}
+ //for _, c := range cl {
+ // log.Println("CHAIN", c.Table.Name, c.Policy, c.Type, c.Hooknum, c.Priority)
+ // rl, err := nt.GetRules(c.Table, c)
+ // if err != nil {
+ // t.Fatal(err)
+ // }
+ // for _, cr := range rl {
+ // log.Println(cr.Exprs, cr.UserData)
+ // }
+ //}
+
+ ft := &nftables.Table{Name: "costin", Family: nftables.TableFamilyIPv4}
+ nt.AddTable(ft)
+ if err := nt.Flush(); err != nil {
+ t.Fatal(err)
+ }
+
+ nt.AddChain(&nftables.Chain{Name: "divert", Table: ft, Type: nftables.ChainTypeFilter})
+
+ ll, err := nt.ListTables()
+ if err != nil {
+ t.Fatal(err)
+ }
+ for _, c := range ll {
+ log.Println(c.Name, c.Use, c.Flags, c.Flags)
+ }
+
+ // nft add rule filter divert ip protocol tcp tproxy to :50080
+ nt.AddRule(&nftables.Rule{
+ Table: &nftables.Table{Name: "costin", Family: nftables.TableFamilyIPv4},
+ Chain: &nftables.Chain{
+ Name: "divert",
+ Type: nftables.ChainTypeFilter,
+ Hooknum: nftables.ChainHookPrerouting,
+ Priority: nftables.ChainPriorityRef(-150),
+ },
+ Exprs: []expr.Any{
+ // payload load 4b @ network header + 12 => reg 1
+ &expr.Payload{
+ DestRegister: 1,
+ Base: expr.PayloadBaseNetworkHeader,
+ Offset: 12,
+ Len: 4,
+ },
+ // cmp eq reg 1 0x0245a8c0
+ &expr.Cmp{
+ Op: expr.CmpOpEq,
+ Register: 1,
+ Data: net.ParseIP("192.168.69.2").To4(),
+ },
+
+ // [ payload load 1b @ network header + 9 => reg 1 ]
+ &expr.Payload{DestRegister: 1, Base: expr.PayloadBaseNetworkHeader, Offset: 9, Len: 1},
+ // [ cmp eq reg 1 0x00000006 ]
+ &expr.Cmp{Op: expr.CmpOpEq, Register: 1, Data: []byte{unix.IPPROTO_TCP}},
+ // [ immediate reg 1 0x0000a0c3 ]
+ &expr.Immediate{Register: 1, Data: binaryutil.BigEndian.PutUint16(14001)},
+ // [ tproxy ip port reg 1 ]
+ &expr.TProxy{
+ Family: byte(nftables.TableFamilyIPv4),
+ TableFamily: byte(nftables.TableFamilyIPv4),
+ RegPort: 1,
+ },
+ },
+ })
+
+ if err := nt.Flush(); err != nil {
+ t.Fatal(err)
+ }
+}
diff --git a/pkg/ext/syncthing/syncthing.md b/pkg/ext/syncthing/syncthing.md
new file mode 100644
index 0000000..2f09225
--- /dev/null
+++ b/pkg/ext/syncthing/syncthing.md
@@ -0,0 +1,67 @@
+# Syncthing support
+
+Syncthing is a modern decentralised file/directory sync server.
+
+At it's core, it maintains a database for each sync root, and a protocol to send/receive changes.
+It runs as a server using inotify or periodic scans - so change propagation can be very fast if inotify is set properly.
+
+Besides the nice UI and well documented uses, there are few interesting concepts and more interesting uses.
+
+# Concerns
+
+Syncthing invents its own directory and relay systems, as well as a custom protocol.
+
+While the core rsync+database is great - it may work better on top of SSH or H2/H3, with
+standard mTLS.
+
+Also, a proper NFS-style with caching may be more effective in a lot of cases - syncthing is still
+an option for workloads with no priviledges to mount anything.
+
+## Proper use
+
+For multi-master sync - not friendly to databases or similar large files with multiple changes in the middle.
+That includes things like home directory - the chrome databases and a lot of other things would fail.
+
+It does work well enough for master-slave, with one computer doing writes and the rest have read-only copies.
+Still not ideal for replicating databases ( and structured files), better to use native protocols.
+
+Great for source files, doc dirs (with few concurrent writes), config files.
+
+
+## Identity
+
+- mTLS based
+- Device ID is SHA256 of certificate
+
+## Public or private infrastructure
+
+Syncthing can work in an isolated mode - using local discovery for node IPs - however this doesn't work
+very well in VPCs if broadcast is not supported.
+
+
+Like Tor, bittorrent or IPFS - it is possible to operate it independent of the public infra, or to use the public infra.
+
+
+## Protocols
+
+1. Discovery - Global Discovery v3
+ - JSON with []addresses
+ - tcp://:22000
+ - Local v4 - broadcast UDP on port 21027, MC on FF12:8384, 30 to 60 sec interval, retransmit when new discovered
+ - Magic, ID, []addresses, instance_id - to detect restart
+2. Relay -
+ - bep-relay TLS ALPN
+ - Join relay, wait for messages from relay to connect (SessionInvitation with key), sends JoinSessionRequest
+ - Connect and request a session with a waiting server.
+ - Both end do mTLS - but there is no certificate signed by common authority.
+3. Filesystem/Blob storage with sync - block exchange protocol v1
+
+
+## Others
+
+- rsync - no database, no realtime. Good for daily backups.
+ - librsync - used in duplicity and other tools
+ - rdiff and rdiff-backup - use rsync for backup
+ - duplicity - can save to S3, sftp, etc
+ - zsync - for downloads, iso images - over HTTP with .zsync files for the rolling hashes.
+ - rclone
diff --git a/pkg/fs/README.md b/pkg/fs/README.md
new file mode 100644
index 0000000..457c311
--- /dev/null
+++ b/pkg/fs/README.md
@@ -0,0 +1,43 @@
+# File servers
+
+Interfaces:
+- net.http.FileSystem - predates fs.FS interface, there is an adapter.
+
+# SFTP
+
+- chrome ssh extension
+- almost all linux machines
+
+https://github.com/pkg/sftp - only "/"
+
+# 9P
+
+- in kernel
+- no crypto - great for same machine and 'over secure L4'
+
+From http://9p.cat-v.org/implementations - 4 golang impl
+- https://github.com/docker-archive/go-p9p - archived 2020
+- https://code.google.com/archive/p/go9p/source/default/source - seems obsolete, 2015
+- https://github.com/Harvey-OS/ninep - 2019 - but claims to be stable
+
+Not listed:
+- https://github.com/droyo/styx - 2 year since last push
+
+Not listed but appears active:
+- https://github.com/knusbaum/go9p
+ - https://github.com/knusbaum/go9p/blob/master/cmd/mount9p/main.go - FUSE
+ - https://github.com/knusbaum/go9p/blob/master/cmd/import9p/main.go - uses kubectl to run export9p
+ - export9p can use stdin/stdout, uds, tcp
+
+
+## Servers
+
+
+## Client
+
+- v9fs - native kernel
+
+# APIs
+
+- os.File, etc - used by sshfs
+-
diff --git a/pkg/fs/ns9p/go.mod b/pkg/fs/ns9p/go.mod
new file mode 100644
index 0000000..98a591e
--- /dev/null
+++ b/pkg/fs/ns9p/go.mod
@@ -0,0 +1,13 @@
+module ns9p
+
+go 1.21
+
+require (
+ 9fans.net/go v0.0.2 // indirect
+ github.com/Plan9-Archive/libauth v0.0.0-20180917063427-d1ca9e94969d // indirect
+ github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect
+ github.com/fhs/mux9p v0.3.1 // indirect
+ github.com/hanwen/go-fuse/v2 v2.0.3 // indirect
+ github.com/knusbaum/go9p v1.18.0 // indirect
+ golang.org/x/sys v0.0.0-20201020230747-6e5568b54d1a // indirect
+)
diff --git a/pkg/fs/ns9p/ns9p.go b/pkg/fs/ns9p/ns9p.go
new file mode 100644
index 0000000..6c62872
--- /dev/null
+++ b/pkg/fs/ns9p/ns9p.go
@@ -0,0 +1,83 @@
+package ns9p
+
+import (
+ "crypto/rand"
+ "fmt"
+ "time"
+
+ "github.com/knusbaum/go9p"
+ "github.com/knusbaum/go9p/fs"
+ "github.com/knusbaum/go9p/proto"
+)
+
+type NS9P struct {
+ UID string
+ GID string
+
+ Address string
+}
+
+func (p *NS9P) InitNS9PS() error {
+ if p.UID == "" {
+ p.UID = "build"
+ }
+ if p.GID == "" {
+ p.GID = p.UID
+ }
+ utilFS, root := fs.NewFS("build", "build", 0777)
+
+ events := fs.NewStaticFile(utilFS.NewStat("events", "build", "build", 0444), []byte{})
+ root.AddChild(events)
+ root.AddChild(
+ WrapEvents(events, fs.NewDynamicFile(utilFS.NewStat("time", "glenda", "glenda", 0444),
+ func() []byte {
+ return []byte(time.Now().String() + "\n")
+ },
+ )),
+ )
+ root.AddChild(
+ WrapEvents(events, &fs.WrappedFile{
+ File: fs.NewBaseFile(utilFS.NewStat("random", "glenda", "glenda", 0444)),
+ ReadF: func(fid uint64, offset uint64, count uint64) ([]byte, error) {
+ bs := make([]byte, count)
+ rand.Reader.Read(bs)
+ return bs, nil
+ },
+ }),
+ )
+
+ // Post a local service - i.e. create a file descriptor,
+ // That is using NAMESPACE env or /tmp/ns.USER.str/
+ go go9p.PostSrv("utilfs", utilFS.Server())
+
+ return go9p.Serve(p.Address, utilFS.Server())
+}
+
+func addEvent(f *fs.StaticFile, s string) {
+ f.Lock()
+ defer f.Unlock()
+ f.Data = append(f.Data, []byte(s+"\n")...)
+}
+
+func WrapEvents(evFile *fs.StaticFile, f fs.File) fs.File {
+ fname := f.Stat().Name
+ return &fs.WrappedFile{
+ File: f,
+ OpenF: func(fid uint64, omode proto.Mode) error {
+ addEvent(evFile, fmt.Sprintf("Open %s: mode: %d", fname, omode))
+ return f.Open(fid, omode)
+ },
+ ReadF: func(fid uint64, offset uint64, count uint64) ([]byte, error) {
+ addEvent(evFile, fmt.Sprintf("Read %s: offset %d, count %d", fname, offset, count))
+ return f.Read(fid, offset, count)
+ },
+ WriteF: func(fid uint64, offset uint64, data []byte) (uint32, error) {
+ addEvent(evFile, fmt.Sprintf("Write %s: offset %d, data %d bytes", fname, offset, len(data)))
+ return f.Write(fid, offset, data)
+ },
+ CloseF: func(fid uint64) error {
+ addEvent(evFile, fmt.Sprintf("Close %s", fname))
+ return f.Close(fid)
+ },
+ }
+}
diff --git a/pkg/goh2/http.go b/pkg/goh2/http.go
new file mode 100644
index 0000000..fa79e12
--- /dev/null
+++ b/pkg/goh2/http.go
@@ -0,0 +1,305 @@
+package goh2
+
+import (
+ "context"
+ "errors"
+ "io"
+ "log"
+ "net"
+ "net/http"
+ "os"
+ "sync"
+ "time"
+
+ "github.com/costinm/ssh-mesh/nio"
+ "github.com/costinm/ugate"
+ "golang.org/x/net/http2"
+)
+
+// HTTP2 based transport, using x/net/http2 library directly (instead of standard library).
+
+
+
+// It also implements http.Handler, and can be registered with a HTTP/2 or HTTP/1 server.
+// For HTTP/1 it will use websocket, with standard TLS and SPDY for crypto or mux.
+// For HTTP/2 it will the normal connection if mTLS was negotiated.
+// Otherwise will do a TLS+SPDY handshake for the POST method.
+type H2Transport struct {
+ ug *ugate.UGate
+
+ // H2Transport object for http2 library
+ h2t *http2.Transport
+
+ // Included file server, for UI.
+ fs http.Handler
+ conns map[*http2.ClientConn]*ugate.MeshCluster
+
+ m sync.RWMutex
+}
+
+func NewH2Transport(ug *ugate.UGate) (*H2Transport, error) {
+ h2 := &H2Transport{
+ ug: ug,
+
+ conns: map[*http2.ClientConn]*ugate.MeshCluster{},
+ h2t: &http2.Transport{
+ ReadIdleTimeout: 10000 * time.Second,
+ StrictMaxConcurrentStreams: false,
+ AllowHTTP: true,
+ },
+ }
+
+ if _, err := os.Stat("./www"); err == nil {
+ h2.fs = http.FileServer(http.Dir("./www"))
+ ug.Mux.Handle("/", h2.fs)
+ }
+
+ return h2, nil
+}
+
+// Using pipe: 345Mbps
+//
+// Not using: 440Mbps.
+// The QUIC read buffer is 8k
+const usePipe = false
+
+
+
+// DialContext creates on TCP-over-H2 connection.
+// rt is expected to be a H2 round tripper.
+//
+// If s is specified, it will be used as input.
+func (t *H2Transport) DialContext(ctx context.Context, addr string, s io.Reader,
+ rt http.RoundTripper) (nio.Stream, error){
+ // We have an active reverse RoundTripper for the host.
+ var in io.Reader
+ var out io.WriteCloser
+
+ h, port, _ := net.SplitHostPort(addr)
+
+ if usePipe || s == nil {
+ in, out = io.Pipe() // pipe.New()
+ //in = p
+ //out = p
+ } else {
+ in = s
+ }
+
+ // Regular TCP stream, upgraded to H2.
+ // This is a simple tunnel, so use the right URL
+ r1, err := http.NewRequestWithContext(ctx, "POST",
+ "https://"+h+"/dm/127.0.0.1:"+port, in)
+
+ // RoundTrip H2Transport guarantees this is set
+ if r1.Header == nil {
+ r1.Header = make(http.Header)
+ }
+
+ // RT client - forward the request.
+ res, err := rt.RoundTrip(r1)
+ if err != nil {
+ log.Println("H2R error", addr, err)
+ return nil, err
+ }
+
+ rs := nio.NewStreamRequest(r1, out, res)
+ //if DebugClose {
+ // log.Println(rs.State().StreamId, "dialHbone.TUN: ", addr, r1.URL)
+ //}
+ return rs, nil
+}
+
+func (t *H2Transport) MarkDead(h2c *http2.ClientConn) {
+ t.m.Lock()
+ dmn := t.conns[h2c]
+ if dmn != nil {
+ dmn.RoundTripper = nil
+ log.Println("Dead", dmn.ID, h2c)
+ }
+ t.m.Unlock()
+}
+
+// GetClientConn returns H2 multiplexed client connection for connecting to a mesh host.
+//
+// Part of x.net.http2.ClientConnPool interface.
+// addr is a host:port, based on the URL host.
+// The result implements RoundTrip interface.
+func (t *H2Transport) GetClientConn(ctx context.Context, prot string, addr string) (*http2.ClientConn, error) {
+ // The h2 H2Transport has support for dialing TLS, with the std handshake.
+ // It is possible to replace H2Transport.DialContext, used in clientConnPool
+ // which tracks active connections. Or specify a custom conn pool.
+
+ // addr is either based on req.Host or the resolved IP, in which case Host must be used for TLS verification.
+ host, _, _ := net.SplitHostPort(addr)
+
+ nid := t.ug.Auth.Host2ID(addr)
+ // TODO: if mesh node, don't attempt to dial directly
+ dmn := t.ug.GetCluster(nid)
+ if dmn != nil {
+ rt := dmn.RoundTripper
+ if rt != nil {
+ if rtc, ok := rt.(*http2.ClientConn); ok {
+ return rtc, nil
+ }
+ }
+
+ // TODO: if we don't have addr, use discovery
+
+ // TODO: if discovery doesn't return an address, use upsteram gate.
+ if dmn.Addr == "" {
+ return nil, NotFound
+ }
+ // Real address -
+ addr = dmn.Addr
+ }
+ var tc nio.Stream
+ var err error
+ // TODO: use local announces
+ // TODO: use VPN server for all or for mesh
+
+ rc, err := t.ug.DialContext(ctx, "tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ // Separate timeout for handshake and connection - ctx is used for the entire connection.
+ to := t.ug.HandsahakeTimeout
+ if to == 0 {
+ to = 5 * time.Second
+ }
+ ctx1, cf := context.WithTimeout(ctx, to)
+ defer cf()
+
+ if prot == "http" {
+ tc = nio.GetStream(rc, rc)
+ } else {
+ tlsc, err := t.ug.NewTLSConnOut(ctx1, rc, t.ug.Auth,
+ host, []string{"h2"})
+ if err != nil {
+ return nil, err
+ }
+ tc = nio.NewStreamConn(tlsc)
+ }
+
+ // TODO: reuse connection or use egress server
+ // TODO: track it by addr
+
+ // This is using the native stack http2.H2Transport - implements RoundTripper
+ cc, err := t.h2t.NewClientConn(tc)
+
+ if dmn != nil {
+ // Forward connection ok too.
+ dmn.RoundTripper = cc
+ }
+ return cc, err
+}
+
+var NotFound = errors.New("not found")
+
+// Ex: curl localhost:9080/debug/vars --http2-prior-knowledge
+
+// Handle accepted connection on a port declared as "http"
+//
+//func (t *H2Transport) handleHTTPListener(bconn *InOutStream) error {
+//
+// err := SniffH2(bconn)
+// if err != nil {
+// return err
+// }
+// ctx := bconn.Context()
+//
+// if bconn.Type == ProtoH2 {
+// bconn.TLS = &tls.ConnectionState{
+// Version: tls.VersionTLS12,
+// CipherSuite: tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
+// }
+// t.h2Server.ServeConn(
+// bconn,
+// &http2.ServeConnOpts{
+// Handler: t, // Also plain text, needs to be upgraded
+// Context: ctx, // associated with the stream, with cancel
+//
+// //Context: // can be used to cancel, pass meta.
+// // h2 adds http.LocalAddrContextKey(NetAddr), ServerContextKey (*Server)
+// })
+// } else {
+// bconn.Type = ProtoHTTP
+// // TODO: identify 'the proxy protocol'
+// // port is marked as HTTP - assume it is HTTP
+// t.httpListener.incoming <- bconn
+// // TODO: wait for connection to be closed.
+// <-ctx.Done()
+// }
+//
+// return nil
+//}
+
+//func SniffH2(s *InOutStream) error {
+// var proto string
+//
+// for {
+// buf, err := s.Fill(0)
+// if err != nil {
+// return err
+// }
+//
+// if ix := bytes.IndexByte(buf, '\n'); ix >= 0 {
+// if bytes.Contains(buf, []byte("HTTP/1.1")) {
+// proto = ProtoHTTP
+// break
+// }
+// }
+// if ix := bytes.IndexByte(buf, '\n'); ix >= 0 {
+// if bytes.Contains(buf, []byte("HTTP/2.0")) {
+// proto = ProtoH2
+// break
+// }
+// }
+// }
+//
+// s.Type = proto
+//
+// return nil
+//}
+
+
+
+// FindMux - find an EndpointCon that is able to accept new connections.
+// Will also dial a connection as needed, and verify the mux can accept a new connection.
+// LB should happen here.
+// WIP: just one, no retry, only for testing.
+// TODO: implement LB properly
+//func (t *H2Transport) FindMux(ctx context.Context, c *ugate.MeshCluster) (*ugate.EndpointCon, error) {
+// if len(c.EndpointCon) == 0 {
+// var endp *ugate.Host
+// if len(c.Hosts) > 0 {
+// endp = c.Hosts[0]
+// } else {
+// endp = &ugate.Host{}
+// c.Hosts = append(c.Hosts, endp)
+// }
+//
+// ep := &ugate.EndpointCon{
+// Cluster: c,
+// Endpoint: endp,
+// }
+// c.EndpointCon = append(c.EndpointCon, ep)
+// }
+//
+// ep := c.EndpointCon[0]
+//
+// if ep.RoundTripper == nil {
+// h2c, err := t.GetClientConn(ctx, "http", c.Addr)
+// // TODO: on failure, try another endpoint
+// //err := t.dialH2ClientConn(ctx, ep)
+// if err != nil {
+// return nil, err
+// }
+// ep.RoundTripper = h2c
+// }
+// return ep, nil
+//}
+
+//func (l *H2Transport) Close() error {
+// return nil
+//}
diff --git a/pkg/gvisor/README.md b/pkg/gvisor/README.md
new file mode 100644
index 0000000..0d9db17
--- /dev/null
+++ b/pkg/gvisor/README.md
@@ -0,0 +1,46 @@
+# Integration with gVisor TCP/IP stack
+
+Original attempt used a number of patches to netstack (before it was merged back into
+gvisor repo). I proted them to the new repo, but it is hard to maintain and never
+got the time to push them up.
+
+The patches were mainly to capture all and support 'transparent' mode for UDP.
+
+gvisor-tap-vsock project solves this - and much more, so I will gradually move
+to using it.
+
+## Raw and packet UDP
+
+Return the full packet - but after all the gvisor processing. Packet cooked and raw seem the same.
+
+Alternative is to use NIC.DeliverNetworkPacket only for TCP, and process the packet directly for UDP.
+This may also avoid few mem copy.
+
+
+## UDP sending with 'original src'
+
+- add SpoofedAddress to stack/packet_buffer
+- use it in ipv4/ipv4.go WritePacket, which adds the IP header
+
+- From added to WriteOptions
+- udp/endpoint.go - sets localAdd and localPort. Modify internal sendUDP to add SoofedAddress
+
+## Capture all
+
+- stack/transport_demuxer - use port FFFF at the end, if no other port matches
+- same can be done with iptables now - not clear if only REDIRECT or TPROXY too
+
+TODO: should use Istio magic port, and a flag to enable
+
+
+# gvisor-tap-vsock
+
+- client interface for 'expose' (/services/forwarder/expose, json) local to remote
+- tap package defines a VirtualDevice (NewSwitch)
+- includes some ssh forwarding code
+- includes DHCP, DNS, tcp and udp forwarding
+
+- 'vsock' transport using mdlayhervsock
+ - VM to hypervisor or Host machine - AF_VSOCK (http://wiki.qemu-project.org/Features/VirtioVsock)
+ - firecracker/others map it to AF_UNIX on host
+ - virtio based - tx/rx queue, but exposed as socket
diff --git a/pkg/gvisor/go.mod b/pkg/gvisor/go.mod
new file mode 100644
index 0000000..c6a9d17
--- /dev/null
+++ b/pkg/gvisor/go.mod
@@ -0,0 +1,21 @@
+module github.com/costinm/ugate/pkg/ext/gvisor
+
+go 1.21
+
+require (
+ github.com/costinm/ugate v0.0.0-20221024013023-789def6d5dde
+ github.com/sirupsen/logrus v1.8.1
+ github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8
+ gvisor.dev/gvisor v0.0.0-20221019184736-ae7cca128546
+)
+
+require (
+ github.com/bazelbuild/rules_go v0.30.0 // indirect
+ github.com/costinm/meshauth v0.0.0-20221013185453-bb5aae6632f8 // indirect
+ github.com/google/btree v1.0.1 // indirect
+ golang.org/x/net v0.1.0 // indirect
+ golang.org/x/sys v0.1.0 // indirect
+ golang.org/x/text v0.4.0 // indirect
+ golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
+ google.golang.org/protobuf v1.28.0 // indirect
+)
diff --git a/ugated/pkg/gvisor/tun_capture_gvisor.go b/pkg/gvisor/tun_capture_gvisor.go
similarity index 61%
rename from ugated/pkg/gvisor/tun_capture_gvisor.go
rename to pkg/gvisor/tun_capture_gvisor.go
index 5626f27..3a2db8a 100644
--- a/ugated/pkg/gvisor/tun_capture_gvisor.go
+++ b/pkg/gvisor/tun_capture_gvisor.go
@@ -3,6 +3,7 @@ package gvisor
import (
"bytes"
"errors"
+ "fmt"
"io"
"log"
"net"
@@ -11,11 +12,11 @@ import (
"strings"
"github.com/costinm/ugate"
-
+ "gvisor.dev/gvisor/pkg/buffer"
"gvisor.dev/gvisor/pkg/sentry/socket/netstack"
"gvisor.dev/gvisor/pkg/tcpip"
"gvisor.dev/gvisor/pkg/tcpip/adapters/gonet"
-
+ "gvisor.dev/gvisor/pkg/tcpip/header"
"gvisor.dev/gvisor/pkg/tcpip/link/fdbased"
"gvisor.dev/gvisor/pkg/tcpip/link/loopback"
"gvisor.dev/gvisor/pkg/tcpip/link/sniffer"
@@ -40,15 +41,19 @@ type GvisorTun struct {
// The IP stack serving the tun. It intercepts all TCP connections.
IPStack *stack.Stack
- DefUDP tcpip.Endpoint
- DefTCP tcpip.Endpoint
+ DefUDP tcpip.Endpoint
+ DefUDP6 tcpip.Endpoint
udpPacketConn net.PacketConn
// If set, will be used to handle accepted TCP connections and UDP packets.
- // Else the Listener interface is used.
- Handler TUNHandler
- UDPHandler UDPHandler
+ // Else the PortListener interface is used.
+ Handler TUNHandler
+ UDPHandler UDPHandler
+ StackOptions stack.Options
+
+ // The low level TAP(?) device
+ LinkEndpoint *stack.LinkEndpoint
}
// Used by the TUN interface
@@ -64,7 +69,7 @@ type UDPHandler interface {
// On Linux we need a similar setup. This still requires iptables to mark
// packets from istio-proxy, and use 2 routing tables.
type TUNHandler interface {
- HandleTUN(conn net.Conn, target *net.TCPAddr, la *net.TCPAddr) error
+ HandleTUN(conn net.Conn, target *net.TCPAddr, la *net.TCPAddr)
}
// UdpWriter is the interface implemented by the GvisorTun, to send
@@ -122,8 +127,8 @@ default via 10.1.10.1 dev wlan0 table wlan0 proto static
default dev tun0 table tun0 proto static scope link
10.1.10.0/24 dev wlan0 proto kernel scope link src 10.1.10.124
10.10.154.0/24 dev tun0 proto kernel scope link src 10.10.154.232
-2001:470:1f04:429::/64 dev tun0 table tun0 proto kernel metric 256
-fe80::/64 dev tun0 table tun0 proto kernel metric 256
+2001:470:1f04:429::/64 dev tun0 table tun0 proto kernel metrics 256
+fe80::/64 dev tun0 table tun0 proto kernel metrics 256
ip rule show
0: from all lookup local
@@ -213,6 +218,7 @@ func NewTUNFD(fd io.ReadWriteCloser, handler TUNHandler, udpNat UDPHandler) UdpW
log.Println("Link err", err)
}
linkID = ep
+
t := NewGvisorTunCapture(&linkID, handler, udpNat, false)
return t
@@ -298,14 +304,16 @@ func NewTUNFD(fd io.ReadWriteCloser, handler TUNHandler, udpNat UDPHandler) UdpW
// All TCP streams initiated on the tun or localhost will be captured.
func NewGvisorTunCapture(ep *stack.LinkEndpoint, handler TUNHandler, udpNat ugate.UDPHandler, snif bool) *GvisorTun {
t := &GvisorTun{
- Handler: handler,
- UDPHandler: udpNat,
+ Handler: handler,
+ UDPHandler: udpNat,
+ LinkEndpoint: ep,
}
netProtos := []stack.NetworkProtocolFactory{
ipv4.NewProtocol,
ipv6.NewProtocol,
arp.NewProtocol}
+
transProtos := []stack.TransportProtocolFactory{
tcp.NewProtocol,
udp.NewProtocol,
@@ -334,7 +342,7 @@ func NewGvisorTunCapture(ep *stack.LinkEndpoint, handler TUNHandler, udpNat ugat
// }
//}
- t.IPStack = stack.New(stack.Options{
+ t.StackOptions = stack.Options{
NetworkProtocols: netProtos,
TransportProtocols: transProtos,
//Clock: clock,
@@ -342,15 +350,19 @@ func NewGvisorTunCapture(ep *stack.LinkEndpoint, handler TUNHandler, udpNat ugat
HandleLocal: false, // accept from other nics
// Enable raw sockets for users with sufficient
// privileges.
- RawFactory: raw.EndpointFactory{},
+ RawFactory: raw.EndpointFactory{},
+ AllowPacketEndpointWrite: true,
//UniqueID: uniqueID,
//IPTables: ipt,
- })
+ }
+
+ t.IPStack = stack.New(t.StackOptions)
loopbackLinkID := loopback.New()
if true || snif {
loopbackLinkID = sniffer.New(loopbackLinkID)
}
+
t.IPStack.CreateNIC(1, loopbackLinkID)
//addr1 := "\x7f\x00\x00\x01"
@@ -358,16 +370,11 @@ func NewGvisorTunCapture(ep *stack.LinkEndpoint, handler TUNHandler, udpNat ugat
if err := t.IPStack.AddProtocolAddress(1,
tcpip.ProtocolAddress{Protocol: ipv4.ProtocolNumber,
- AddressWithPrefix: tcpip.Address(addr1.AsSlice()).WithPrefix(),
+ AddressWithPrefix: tcpip.AddrFromSlice(addr1.AsSlice()).WithPrefix(),
}, stack.AddressProperties{}); err != nil {
log.Print("Can't add address", err)
return t
}
- //if err := t.IPStack.AddAddress(1,
- // tcpip.Address(net.IPv6loopback)); err != nil {
- // log.Print("Can't add IP6 address", err)
- // return t
- //}
ep1 := *ep
@@ -386,43 +393,97 @@ func NewGvisorTunCapture(ep *stack.LinkEndpoint, handler TUNHandler, udpNat ugat
//}
t.IPStack.SetPromiscuousMode(2, true)
- t.IPStack.SetSpoofing(2, true)
- sn, _ := tcpip.NewSubnet(tcpip.Address("\x00"), tcpip.AddressMask("\x00"))
- t.IPStack.AddRoute(tcpip.Route{NIC: 2, Destination: sn})
+ // can bind to any IP
+ t.IPStack.SetSpoofing(2, true)
- sn, _ = tcpip.NewSubnet(tcpip.Address("\x00"), tcpip.AddressMask("\x00"))
- //t.IPStack.AddSubnet(2, ipv6.ProtocolNumber, sn)
+ sn, _ := tcpip.NewSubnet(tcpip.AddrFrom4([4]byte{0, 0, 0, 0}), tcpip.MaskFrom("\x00"))
t.IPStack.AddRoute(tcpip.Route{NIC: 2, Destination: sn})
gsetRouteTable(t.IPStack, ep != nil)
- //epp := newEpProxy()
- go t.DefTcpServer(handler) //echo)
-
- go t.DefTcp6Server() //echo)
+ go t.DefTcpServer(handler)
- go t.defUdpServer()
- t.defUdp6Server()
+ go t.defUdpServerForwarder(ipv4.ProtocolNumber)
+ go t.defUdpServer(ipv4.ProtocolNumber)
+ go t.defUdpServer(ipv6.ProtocolNumber)
return t
}
-func (nt *GvisorTun) WriteTo(data []byte, dst *net.UDPAddr, src *net.UDPAddr) (int, error) {
+func (gt *GvisorTun) WriteTo2(data []byte, dst *net.UDPAddr, src *net.UDPAddr) error {
+ // Options:
+ /*
+ - gvisor - create header.IPv4, UDP - use Encode
+ - gopacket - Layer breaks content and payload from a byte[]
+ PacketBuilder - link, network, transport, application layers
+ Packet{} - created by Decode, Data() has the full slice, meta
+ IPv4, etc implement SerializeTo(SerializeBuffer)
+ SerializeBuffer - PrependBytes, AppendBytes, tracks Layers, Clear
+ - start, prepended, appended. New(expectedPrepend, expectedAppend)
+ */
+
+ return nil
+}
+
+func (gt *GvisorTun) WriteTo(data []byte, dst *net.UDPAddr, src *net.UDPAddr) (int, error) {
+ if gt.DefUDP == nil {
+ // Write directly to the TUN
+
+ // This makes a copy - not sure how to avoid it, but caller doesn't know about ownership
+ bb := buffer.MakeWithData(data)
+ pb := stack.NewPacketBuffer(stack.PacketBufferOptions{
+ Payload: bb,
+ })
+
+ if dst.IP.To4() != nil {
+ hdrb := pb.NetworkHeader().Push(header.IPv4MinimumSize + header.UDPMinimumSize)
+ ipv4h := header.IPv4(hdrb[0:header.IPv4MinimumSize])
+ udph := header.UDP(hdrb[header.IPv4MinimumSize:])
+ // See addIPHeader
+ ipv4h.Encode(&header.IPv4Fields{
+ TOS: 0,
+ TotalLength: uint16(len(data)) + header.UDPMinimumSize,
+ ID: 0,
+ TTL: 0,
+ Protocol: uint8(udp.ProtocolNumber),
+ SrcAddr: tcpip.AddrFromSlice(src.IP),
+ DstAddr: tcpip.AddrFromSlice(dst.IP),
+ })
+ ipv4h.SetChecksum(^ipv4h.CalculateChecksum())
+ udph.Encode(&header.UDPFields{
+ SrcPort: uint16(src.Port),
+ DstPort: uint16(dst.Port),
+ Length: uint16(len(data)),
+ Checksum: 0,
+ })
+ }
+
+ var pkts stack.PacketBufferList
+ pkts.PushBack(pb)
+
+ (*gt.LinkEndpoint).WritePackets(pkts)
+ return len(data), nil
+ }
+ //
+
addrb := []byte(dst.IP)
//srcaddrb := []byte(src.IP)
// TODO: how about from ?
// TODO: do we need to make a copy ? netstack passes ownership, we may reuse buffers
- n, err := nt.DefUDP.Write(bytes.NewBuffer(data),
+
+ // DefUDP is a raw socket - need to add IP header
+
+ n, err := gt.DefUDP.Write(bytes.NewBuffer(data),
tcpip.WriteOptions{
To: &tcpip.FullAddress{
Port: uint16(dst.Port),
- Addr: tcpip.Address(addrb),
+ Addr: tcpip.AddrFromSlice(addrb),
},
- // TODO(costin): PATCH
+ // TODO(costin): upstream patch for transparent UDP
//From: &tcpip.FullAddress{
// Port: uint16(src.Port),
- // Addr: tcpip.Address(srcaddrb),
+ // Addr: tcpip.AddrFromSlice(srcaddrb),
//},
})
if err != nil {
@@ -431,41 +492,90 @@ func (nt *GvisorTun) WriteTo(data []byte, dst *net.UDPAddr, src *net.UDPAddr) (i
return int(n), nil
}
-func (nt *GvisorTun) defUdpServer() error {
- // Like a socket
+func (gt *GvisorTun) defUdpServerForwarder(proton tcpip.NetworkProtocolNumber) error {
+ // Call sequence:
+ // - stack.DeliverNetworkPacket
+ // - stack.(*groDispatcher0.dispatch
+ // - ipv4.(*endpoint).HandlePacket
+ // - ipv4.handleValidatedPAcket
+ // - ipv4.deliverPacketLocally
+ // - stack.DeliverTransportPacket -- magic happens here
+ // - udp.(*Forwarder).HandlePacket
+
+ // After IP4 determines proto, it is used to extract srcPort, dstPort plus
+ // src, dst address, forming the key TransportEndpointID.
+ // This is used against stack.demus.deliverPacket() - and if it fails to find a
+ // match it goes to default.
+ f := udp.NewForwarder(gt.IPStack, func(r *udp.ForwarderRequest) {
+ localAddress := r.ID().LocalAddress
+
+ //natLock.Lock()
+ //if replaced, ok := nat[localAddress]; ok {
+ // localAddress = replaced
+ //}
+ //natLock.Unlock()
+ if localAddress == tcpip.AddrFromSlice([]byte{10, 8, 0, 2}) {
+ localAddress = tcpip.AddrFromSlice([]byte{127, 0, 0, 8})
+ }
+
+ var wq waiter.Queue
+
+ // Host is connected to TUN's address and port, and 'bound' to the remote IP:port
+
+ ep, tcpErr := r.CreateEndpoint(&wq)
+ if tcpErr != nil {
+ log.Printf("r.CreateEndpoint() = %v", tcpErr)
+ return
+ }
+
+ p, _ := NewUDPProxy(&autoStoppingListener{
+ underlying: gonet.NewUDPConn(gt.IPStack, &wq, ep),
+ }, func() (net.Conn, error) {
+ return net.Dial("udp", fmt.Sprintf("%s:%d", localAddress, r.ID().LocalPort))
+ })
+ go p.Run()
+ })
+
+ gt.IPStack.SetTransportProtocolHandler(udp.ProtocolNumber, f.HandlePacket)
+
+ return nil
+}
+
+func (gt *GvisorTun) defUdpServer(proton tcpip.NetworkProtocolNumber) error {
+ // This is associated - gets all
var wq waiter.Queue
- ep, err := nt.IPStack.NewEndpoint(udp.ProtocolNumber, ipv4.ProtocolNumber, &wq)
+ ep, err := raw.NewEndpoint(gt.IPStack, proton, udp.ProtocolNumber, &wq)
if err != nil {
return errors.New(err.String())
}
- nt.DefUDP = ep
-
- // No address - listen on all
- err = ep.Bind(tcpip.FullAddress{
- //Addr: "\x01", - error
- //Addr: "\x00\x00\x00\x00",
- //Port: 2000,
- Port: 0xffff,
- //Port: 15001,
- })
- if err != nil {
- ep.Close()
- return errors.New(err.String())
+
+ if proton == ipv4.ProtocolNumber {
+ gt.DefUDP = ep
+ } else {
+ gt.DefUDP6 = ep
}
+
ep.SocketOptions().SetReceiveOriginalDstAddress(true)
we, ch := waiter.NewChannelEntry(waiter.EventIn)
wq.EventRegister(&we)
- ro := tcpip.ReadOptions{NeedRemoteAddr: true}
+ ro := tcpip.ReadOptions{
+ NeedRemoteAddr: true,
+ NeedLinkPacketInfo: true,
+ }
+ ep.SocketOptions().SetIPv6ReceivePacketInfo(true)
+ ep.SocketOptions().SetReceivePacketInfo(true)
+
go func() {
for {
- // Will have the peer address
- //ep.SetSockOpt()
// StartListener is send address. Control should include the dest addr ( for raw )
bb := &bytes.Buffer{}
+
+ // This is a raw endpoint
rr, err := ep.Read(bb, ro)
//v, _, err := ep.(UdpLocalReader).ReadLocal(&add)
+
if _, ok := err.(*tcpip.ErrWouldBlock); ok {
select {
case <-ch:
@@ -473,11 +583,24 @@ func (nt *GvisorTun) defUdpServer() error {
}
}
- // TODO: add back full address for UDP
- if nt.UDPHandler != nil {
- nt.UDPHandler.HandleUdp(net.IP(rr.ControlMessages.OriginalDstAddress.Addr),
+ if gt.UDPHandler != nil {
+ // local address really
+ log.Println(net.IP(rr.RemoteAddr.Addr.AsSlice()), rr.RemoteAddr.Port)
+
+ // Both are remote addr
+ log.Println(net.IP(rr.ControlMessages.PacketInfo.LocalAddr.AsSlice()))
+ log.Println(net.IP(rr.ControlMessages.PacketInfo.DestinationAddr.AsSlice()))
+
+ // No UDP parsing
+ log.Println(bb.Bytes())
+
+ if !rr.ControlMessages.HasOriginalDstAddress {
+ continue
+ }
+ gt.UDPHandler.HandleUdp(
+ net.IP(rr.ControlMessages.OriginalDstAddress.Addr.AsSlice()),
rr.ControlMessages.OriginalDstAddress.Port,
- net.IP(rr.RemoteAddr.Addr), rr.RemoteAddr.Port,
+ net.IP(rr.RemoteAddr.Addr.AsSlice()), rr.RemoteAddr.Port,
bb.Bytes())
}
}
@@ -486,199 +609,95 @@ func (nt *GvisorTun) defUdpServer() error {
return nil
}
-func (nt *GvisorTun) defUdp6Server() error {
- // Like a socket
- //var wq waiter.Queue
- //
- //ep6, err := nt.IPStack.NewEndpointCon(udp.ProtocolNumber, ipv6.ProtocolNumber, &wq)
- //if err != nil {
- // return errors.New(err.String())
- //}
- //err = ep6.Bind(tcpip.FullAddress{
- // //Addr: "\x01", - error
- // Addr: tcpip.Address(net.IPv6loopback),
- // //Port: 2000,
- // Port: 0xffff,
- // NIC: 2,
- //}, nil)
- //if err != nil {
- // ep6.Close()
- // return errors.New(err.String())
- //}
- //nt.IPStack.Capture(ipv6.ProtocolNumber, udp.ProtocolNumber, ep6.(stack.TransportEndpoint))
- //
- //we, ch := waiter.NewChannelEntry(nil)
- //wq.EventRegister(&we, waiter.EventIn)
- ////defer wq.EventUnregister(&we)
- //
- //go func() {
- // for {
- // // Will have the peer address
- // add := tcpip.DoubleAddress{}
- // //ep.SetSockOpt()
- // v, _, err := ep6.(UdpLocalReader).ReadLocal(&add)
- // if err == tcpip.ErrWouldBlock {
- // select {
- // case <-ch:
- // continue
- // }
- // }
- //
- // la := net.IP([]byte(add.LocalAddr))
- // //if la.To4() == nil {
- // // log.Print("IP6 ", la)
- // //}
- // if add.LocalAddr[0] == 0xff {
- // continue
- // }
- //
- // if nt.UDPHandler != nil {
- // nt.UDPHandler.HandleUdp(la, add.LocalPort,
- // net.IP([]byte(add.FullAddress.Addr)), add.FullAddress.Port,
- // v)
- // }
- //
- // }
- //}()
-
- return nil
-}
-
-//var (
-// Dump = false
-//)
+//func (gt *GvisorTun) defUdpServerOld(proton tcpip.NetworkProtocolNumber) error {
+// // Alternative: UDP raw socket allows both read and write.
+//
+// // This is associated - gets all
+// var wq waiter.Queue
+// ep, err := gt.IPStack.NewEndpoint(udp.ProtocolNumber, proton, &wq)
+// if err != nil {
+// return errors.New(err.String())
+// }
+//
+// // No address - listen on all
+// err = ep.Bind(tcpip.FullAddress{
+// //Addr: "\x01", - error
+// //Addr: "\x00\x00\x00\x00",
+// Port: 0xffff,
+// })
+// if err != nil {
+// ep.Close()
+// return errors.New(err.String())
+// }
+//
+// ep.SocketOptions().SetReceiveOriginalDstAddress(true)
+//
+// we, ch := waiter.NewChannelEntry(waiter.EventIn)
+// wq.EventRegister(&we)
+//
+// ro := tcpip.ReadOptions{
+// NeedRemoteAddr: true,
+// NeedLinkPacketInfo: true,
+// }
+// go func() {
+// for {
+// bb := &bytes.Buffer{}
+// rr, err := ep.Read(bb, ro)
+//
+// if _, ok := err.(*tcpip.ErrWouldBlock); ok {
+// select {
+// case <-ch:
+// continue
+// }
+// }
+//
+// if gt.UDPHandler != nil {
+// if !rr.ControlMessages.HasOriginalDstAddress {
+// continue
+// }
+// gt.UDPHandler.HandleUdp(
+// net.IP(rr.ControlMessages.OriginalDstAddress.Addr),
+// rr.ControlMessages.OriginalDstAddress.Port,
+// net.IP(rr.RemoteAddr.Addr), rr.RemoteAddr.Port,
+// bb.Bytes())
+// }
+// }
+// }()
+//
+// return nil
+//}
-func (nt *GvisorTun) DefTcpServer(handler TUNHandler) {
- var wq waiter.Queue
- // No address - listen on all
- //err = ep.Bind(tcpip.FullAddress{
- // Port: 0xffff,
- //}, nil) // reserves port
-
- //if err != nil {
- // ep.Close()
- // return nil, wq, errors.New(err.String())
- //}
- // MISSING ACCEPT
- //ep, _ := nt.IPStack.NewRawEndpoint( tcp.ProtocolNumber,ipv4.ProtocolNumber, &wq, false)
- ep, _ := nt.IPStack.NewEndpoint(tcp.ProtocolNumber, ipv4.ProtocolNumber, &wq)
- ep.Bind(tcpip.FullAddress{Port: 0xffff})
- //ep.Bind(tcpip.FullAddress{Port: 5201})
- if err := ep.Listen(100); err != nil { // calls Register
- ep.Close()
- return
- }
+// New, based on gvisor-tap-vsock, https://gist.github.com/majek/778021e4f95f3e77ada5afcecacbd819
+// https://github.com/nicocha30/ligolo-ng/blob/master/pkg/proxy/netstack/handlers.go
+func (gt *GvisorTun) DefTcpServer(handler TUNHandler) {
+ ft := tcp.NewForwarder(gt.IPStack, 0, 10240, func(r *tcp.ForwarderRequest) {
+ localAddress := r.ID().LocalAddress
+ if localAddress == tcpip.AddrFromSlice([]byte{10, 8, 0, 2}) {
+ localAddress = tcpip.AddrFromSlice([]byte{127, 0, 0, 8})
+ }
+ targetTCPAddr := &net.TCPAddr{
+ Port: int(r.ID().LocalPort),
+ IP: net.IP([]byte(localAddress.AsSlice())),
+ }
- tl := gonet.NewTCPListener(nt.IPStack, &wq, ep)
- for {
- c, err := tl.Accept()
- if err != nil {
- log.Println(err)
- continue
+ var wq waiter.Queue
+ ep, tcpErr := r.CreateEndpoint(&wq)
+ r.Complete(false)
+ if tcpErr != nil {
+ log.Printf("r.CreateEndpoint() = %v", tcpErr)
+ return
}
- ra := c.LocalAddr().(*net.TCPAddr)
- la := c.RemoteAddr().(*net.TCPAddr)
- go handler.HandleTUN(c, ra, la)
- }
- //we, listenCh := waiter.NewChannelEntry(nil)
- //wq.EventRegister(&we, waiter.EventIn)
- //
- //// receive TCP packets on port
- //go func() {
- // defer wq.EventUnregister(&we)
- // for {
- // epin, wqin, err := ep.Accept()
- // if err != nil {
- // if err == tcpip.ErrWouldBlock {
- // <-listenCh
- // continue
- // }
- // log.Println("Unexpected accept error")
- // }
- // if Dump {
- // add, _ := epin.GetRemoteAddress()
- // ladd, _ := epin.GetLocalAddress()
- // log.Printf("TUN: Accepted %v %v", ladd, add)
- // }
- //
- // conn := gonet.NewConn(wqin, epin)
- // go func() {
- // err := handler.HandleTUN(conn)
- // if err != nil {
- // return
- // }
- // }()
- //
- // }
- //}()
-}
+ lconn := gonet.NewTCPConn(&wq, ep)
-func (nt *GvisorTun) DefTcp6Server() {
- //var wq waiter.Queue
- //ep, err := nt.IPStack.NewEndpointCon(tcp.ProtocolNumber, ipv6.ProtocolNumber, &wq)
- //if err != nil {
- // return nil, wq, errors.New(err.String())
- //}
- //
- //// No address - listen on all
- //err = ep.Bind(tcpip.FullAddress{
- // Addr: tcpip.Address(net.IPv6loopback),
- // Port: 0xffff,
- // NIC: 2,
- //}, nil) // reserves port
- //if err != nil {
- // ep.Close()
- // return nil, wq, errors.New(err.String())
- //}
- //nt.IPStack.Capture(ipv6.ProtocolNumber, tcp.ProtocolNumber, ep.(stack.TransportEndpoint))
- //
- //if err := ep.Listen(10); err != nil { // calls Register
- // ep.Close()
- // return nil, wq, errors.New(err.String())
- //}
- //
- //we, listenCh := waiter.NewChannelEntry(nil)
- //wq.EventRegister(&we, waiter.EventIn)
- //
- //// receive TCP packets on port
- //go func() {
- // defer wq.EventUnregister(&we)
- // for {
- // epin, wqin, err := ep.Accept()
- // if err != nil {
- // if err == tcpip.ErrWouldBlock {
- // <-listenCh
- // continue
- // }
- // log.Println("Unexpected accept error")
- // }
- // if Dump {
- // add, _ := epin.GetRemoteAddress()
- // ladd, _ := epin.GetLocalAddress()
- // log.Printf("TUN: Accepted %v %v", ladd, add)
- // }
- //
- // conn := gonet.NewConn(wqin, epin)
- // go func() {
- // err := nt.Handler.HandleTUN(conn)
- // if err != nil {
- // return
- // }
- // }()
- //
- // }
- //}()
- //
- //return ep, wq, nil
-}
+ go handler.HandleTUN(lconn, targetTCPAddr, lconn.RemoteAddr().(*net.TCPAddr))
+
+ })
-func ga2na(address tcpip.Address) net.IP {
- ab := []byte(address)
- return net.IP(ab)
+ gt.IPStack.SetTransportProtocolHandler(tcp.ProtocolNumber, ft.HandlePacket)
}
func sn(net, mask string) tcpip.Subnet {
- r, _ := tcpip.NewSubnet(tcpip.Address([]byte(net)), tcpip.AddressMask([]byte(mask)))
+ r, _ := tcpip.NewSubnet(tcpip.AddrFromSlice([]byte(net)), tcpip.MaskFromBytes([]byte(mask)))
return r
}
@@ -686,46 +705,34 @@ func gsetRouteTable(ipstack *stack.Stack, real bool) {
ipstack.SetRouteTable([]tcpip.Route{
{
Destination: sn("\x7f\x00\x00\x00", "\xff\x00\x00\x00"),
- Gateway: "",
- NIC: 1,
+ //Gateway: "",
+ NIC: 1,
+ },
+ {
+ Destination: sn(string(net.IPv6loopback), strings.Repeat("\xff", 16)),
+ //Gateway: "",
+ NIC: 1,
},
{ // 10.12.0.2 - IP of the tun
Destination: sn("\x0a\x0c\x00\x02", "\xff\xff\xff\xff"),
- Gateway: "",
- NIC: 2,
+ //Gateway: "",
+ NIC: 2,
},
{ // 10.12.0.0 - routed to the tun
Destination: sn("\x0a\x0c\x00\x00", "\xff\xff\x00\x00"),
- Gateway: "",
- NIC: 2,
+ //Gateway: "",
+ NIC: 2,
},
{
Destination: sn("\x00\x00\x00\x00", "\x00\x00\x00\x00"),
- Gateway: "",
- NIC: 2,
- },
- {
- Destination: sn(string(net.IPv6loopback), strings.Repeat("\xff", 16)),
- Gateway: "",
- NIC: 1,
+ //Gateway: "",
+ NIC: 2,
},
+ // Default route set to the NIC2 (TUN)
{
Destination: sn(strings.Repeat("\x00", 16), strings.Repeat("\x00", 16)),
- Gateway: "",
- NIC: 2,
+ //Gateway: "",
+ NIC: 2,
},
})
}
-
-/*
- Terms:
- - netstack - the network stack implementation
- - nic - virtual interface
- -- route table
- -- address
-
- - packet injected and sent by link - dmtun (but doesn't work android) or channel based
-
- - View - slice of buffer, Skip, CapLength,
- -
-*/
diff --git a/pkg/gvisor/udp_proxy.go b/pkg/gvisor/udp_proxy.go
new file mode 100644
index 0000000..c0336a7
--- /dev/null
+++ b/pkg/gvisor/udp_proxy.go
@@ -0,0 +1,197 @@
+package gvisor
+
+// Forked from gvisor-tap-vsock
+// Modified version of https://github.com/moby/moby/blob/master/cmd/docker-proxy/udp_proxy.go and
+// https://github.com/moby/vpnkit/blob/master/go/pkg/libproxy/udp_proxy.go
+
+import (
+ "encoding/binary"
+ "io"
+ "net"
+ "strings"
+ "sync"
+ "syscall"
+ "time"
+
+ log "github.com/sirupsen/logrus"
+)
+
+const (
+ // UDPConnTrackTimeout is the timeout used for UDP connection tracking
+ UDPConnTrackTimeout = 90 * time.Second
+ // UDPBufSize is the buffer size for the UDP proxy
+ UDPBufSize = 65507
+)
+
+// A net.Addr where the IP is split into two fields so you can use it as a key
+// in a map:
+type connTrackKey struct {
+ IPHigh uint64
+ IPLow uint64
+ Port int
+}
+
+func newConnTrackKey(addr *net.UDPAddr) *connTrackKey {
+ if len(addr.IP) == net.IPv4len {
+ return &connTrackKey{
+ IPHigh: 0,
+ IPLow: uint64(binary.BigEndian.Uint32(addr.IP)),
+ Port: addr.Port,
+ }
+ }
+ return &connTrackKey{
+ IPHigh: binary.BigEndian.Uint64(addr.IP[:8]),
+ IPLow: binary.BigEndian.Uint64(addr.IP[8:]),
+ Port: addr.Port,
+ }
+}
+
+type connTrackMap map[connTrackKey]net.Conn
+
+// UDPProxy is proxy for which handles UDP datagrams. It implements the Proxy
+// interface to handle UDP traffic forwarding between the frontend and backend
+// addresses.
+type UDPProxy struct {
+ listener udpConn
+ dialer func() (net.Conn, error)
+ connTrackTable connTrackMap
+ connTrackLock sync.Mutex
+}
+
+// NewUDPProxy creates a new UDPProxy.
+func NewUDPProxy(listener udpConn, dialer func() (net.Conn, error)) (*UDPProxy, error) {
+ return &UDPProxy{
+ listener: listener,
+ connTrackTable: make(connTrackMap),
+ dialer: dialer,
+ }, nil
+}
+
+func (proxy *UDPProxy) replyLoop(proxyConn net.Conn, clientAddr net.Addr, clientKey *connTrackKey) {
+ defer func() {
+ proxy.connTrackLock.Lock()
+ delete(proxy.connTrackTable, *clientKey)
+ proxy.connTrackLock.Unlock()
+ proxyConn.Close()
+ }()
+
+ readBuf := make([]byte, UDPBufSize)
+ for {
+ _ = proxyConn.SetReadDeadline(time.Now().Add(UDPConnTrackTimeout))
+ again:
+ read, err := proxyConn.Read(readBuf)
+ if err != nil {
+ if err, ok := err.(*net.OpError); ok && err.Err == syscall.ECONNREFUSED {
+ // This will happen if the last write failed
+ // (e.g: nothing is actually listening on the
+ // proxied port on the container), ignore it
+ // and continue until UDPConnTrackTimeout
+ // expires:
+ goto again
+ }
+ return
+ }
+ for i := 0; i != read; {
+ written, err := proxy.listener.WriteTo(readBuf[i:read], clientAddr)
+ if err != nil {
+ return
+ }
+ i += written
+ }
+ }
+}
+
+// Run starts forwarding the traffic using UDP.
+func (proxy *UDPProxy) Run() {
+ readBuf := make([]byte, UDPBufSize)
+ for {
+ // Costin: listener wraps the TUN endpoint created by forwarder.
+ // It is 'bound to' the forwarder initial packet IP/port, and connected.
+ // All new UDP packets will match the endpoint. First packet is also already
+ // queued.
+ read, from, err := proxy.listener.ReadFrom(readBuf)
+ if err != nil {
+ // NOTE: Apparently ReadFrom doesn't return
+ // ECONNREFUSED like Read do (see comment in
+ // UDPProxy.replyLoop)
+ if !isClosedError(err) {
+ log.Debugf("Stopping udp proxy (%s)", err)
+ }
+ break
+ }
+
+ fromKey := newConnTrackKey(from.(*net.UDPAddr))
+ proxy.connTrackLock.Lock()
+ proxyConn, hit := proxy.connTrackTable[*fromKey]
+ if !hit {
+ proxyConn, err = proxy.dialer()
+ if err != nil {
+ log.Errorf("Can't proxy a datagram to udp: %s\n", err)
+ proxy.connTrackLock.Unlock()
+ continue
+ }
+ proxy.connTrackTable[*fromKey] = proxyConn
+ go proxy.replyLoop(proxyConn, from, fromKey)
+ }
+ proxy.connTrackLock.Unlock()
+ for i := 0; i != read; {
+ _ = proxyConn.SetReadDeadline(time.Now().Add(UDPConnTrackTimeout))
+ written, err := proxyConn.Write(readBuf[i:read])
+ if err != nil {
+ log.Errorf("Can't proxy a datagram to udp: %s\n", err)
+ break
+ }
+ i += written
+ }
+ }
+}
+
+// Close stops forwarding the traffic.
+func (proxy *UDPProxy) Close() error {
+ proxy.listener.Close()
+ proxy.connTrackLock.Lock()
+ defer proxy.connTrackLock.Unlock()
+ for _, conn := range proxy.connTrackTable {
+ conn.Close()
+ }
+ return nil
+}
+
+func isClosedError(err error) bool {
+ /* This comparison is ugly, but unfortunately, net.go doesn't export errClosing.
+ * See:
+ * http://golang.org/src/pkg/net/net.go
+ * https://code.google.com/p/go/issues/detail?id=4337
+ * https://groups.google.com/forum/#!msg/golang-nuts/0_aaCvBmOcM/SptmDyX1XJMJ
+ */
+ return strings.HasSuffix(err.Error(), "use of closed network connection")
+}
+
+type udpConn interface {
+ ReadFrom(b []byte) (int, net.Addr, error)
+ WriteTo(b []byte, addr net.Addr) (int, error)
+ SetReadDeadline(t time.Time) error
+ io.Closer
+}
+
+type autoStoppingListener struct {
+ underlying udpConn
+}
+
+func (l *autoStoppingListener) ReadFrom(b []byte) (int, net.Addr, error) {
+ _ = l.underlying.SetReadDeadline(time.Now().Add(UDPConnTrackTimeout))
+ return l.underlying.ReadFrom(b)
+}
+
+func (l *autoStoppingListener) WriteTo(b []byte, addr net.Addr) (int, error) {
+ _ = l.underlying.SetReadDeadline(time.Now().Add(UDPConnTrackTimeout))
+ return l.underlying.WriteTo(b, addr)
+}
+
+func (l *autoStoppingListener) SetReadDeadline(t time.Time) error {
+ return l.underlying.SetReadDeadline(t)
+}
+
+func (l *autoStoppingListener) Close() error {
+ return l.underlying.Close()
+}
diff --git a/ugated/ugate_gvisor.go b/pkg/gvisor/ugate_gvisor.go
similarity index 68%
rename from ugated/ugate_gvisor.go
rename to pkg/gvisor/ugate_gvisor.go
index 7323a50..7baabc7 100644
--- a/ugated/ugate_gvisor.go
+++ b/pkg/gvisor/ugate_gvisor.go
@@ -1,15 +1,12 @@
-///// +build gvisor
-
-package ugated
+package gvisor
import (
"io"
"log"
"os"
+ "github.com/costinm/ugate"
"github.com/costinm/ugate/pkg/udp"
- "github.com/costinm/ugate/pkg/ugatesvc"
- gv "github.com/costinm/ugate/ugated/pkg/gvisor"
"github.com/songgao/water"
//"golang.zx2c4.com/wireguard/tun/netstack"
)
@@ -33,21 +30,21 @@ func openTun(ifn string) (io.ReadWriteCloser, error) {
var tunIO io.ReadWriteCloser
func init() {
- ugatesvc.InitHooks = append(ugatesvc.InitHooks, func(ug *ugatesvc.UGate) ugatesvc.StartFunc {
+ ugate.Modules["gvisor"] = func(ug *ugate.UGate) {
dev := os.Getenv("GVISOR")
if dev == "" {
- return nil
+ dev = "dmesh1"
}
fd, err := openTun(dev)
if err != nil {
- return nil
+ return
}
tunIO = fd
log.Println("Using gVisor tun", dev)
//if true {
- // return func(ug *ugatesvc.UGate) {
+ // return func(ug *ugate.UGate) {
// tunx, tnet, err := netstack.CreateNetTUN(
// []netip.Addr{netip.MustParseAddr("192.168.4.29")},
// []netip.Addr{netip.MustParseAddr("8.8.8.8")},
@@ -59,9 +56,7 @@ func init() {
//}
//
//}
- return func(ug *ugatesvc.UGate) {
- tun := gv.NewTUNFD(fd, ug, ug.UDPHandler)
- udp.TransparentUDPWriter = tun
- }
- })
+ tun := NewTUNFD(fd, ug, ug.UDPHandler)
+ udp.TransparentUDPWriter = tun
+ }
}
diff --git a/ugated/pkg/h2r/README.http2.md b/pkg/h2r/README.http2.md
similarity index 100%
rename from ugated/pkg/h2r/README.http2.md
rename to pkg/h2r/README.http2.md
diff --git a/ugated/pkg/h2r/h2r_test.go b/pkg/h2r/h2r_test.go
similarity index 70%
rename from ugated/pkg/h2r/h2r_test.go
rename to pkg/h2r/h2r_test.go
index 6e7784b..843df5b 100644
--- a/ugated/pkg/h2r/h2r_test.go
+++ b/pkg/h2r/h2r_test.go
@@ -7,34 +7,28 @@ import (
"testing"
"github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/ugatesvc"
- "github.com/costinm/ugate/test"
+
+ "github.com/costinm/ugate/pkg/test"
)
func BenchmarkUGateH2R(b *testing.B) {
// Fixed key, config from filesystem. Base is 14000
- alice := test.InitTestServer(test.ALICE_KEYS, &ugate.MeshSettings{
- BasePort: 6300,
- NoAccessLog: true,
- Name: "alice"}, func(gate *ugatesvc.UGate) {
- New(gate)
- })
+ alice := test.NewTestNode(test.AliceMeshAuthCfg, &ugate.MeshSettings{
+ BasePort: 6300})
+ New(alice)
// In memory config store. All options
- bob := test.InitTestServer(test.BOB_KEYS, &ugate.MeshSettings{BasePort: 6400,
- NoAccessLog: true,
- Name: "bob"}, func(bob *ugatesvc.UGate) {
- New(bob)
- })
+ bob := test.NewTestNode(test.BobMeshAuthCfg, &ugate.MeshSettings{BasePort: 6400})
+ New(bob)
log.Println(bob.Auth.VIP6)
- bobAddr := "localhost:" + strconv.Itoa(bob.Config.BasePort+ugate.PORT_BTS)
+ bobAddr := "localhost:" + strconv.Itoa(bob.BasePort+7)
// A basic echo server - echo on 5012
test.InitEcho(6000)
// Alice dials a MUX to bob
- bobNode := alice.GetOrAddNode(bob.Auth.ID)
+ bobNode, _ := alice.Cluster(nil,bob.Auth.ID)
bobNode.Addr = bobAddr
_, err := alice.DialMUX(context.Background(), "h2r", bobNode, nil)
if err != nil {
@@ -72,21 +66,21 @@ func TestH2R(t *testing.T) {
test.InitEcho(6000)
// Fixed key, config from filesystem. Base is 14000
- alice := test.InitTestServer(test.ALICE_KEYS, &ugate.MeshSettings{BasePort: 6300, Name: "alice"}, func(gate *ugatesvc.UGate) {
- New(gate)
- })
+ alice := test.NewTestNode(test.AliceMeshAuthCfg, &ugate.MeshSettings{BasePort: 6300})
+ New(alice)
// In memory config store. All options
- bob := test.InitTestServer(test.BOB_KEYS, &ugate.MeshSettings{BasePort: 6400, Name: "bob"}, func(bob *ugatesvc.UGate) {
- New(bob)
- })
+ bob := test.NewTestNode(test.BobMeshAuthCfg, &ugate.MeshSettings{BasePort: 6400})
+ New(bob)
log.Println(bob.Auth.VIP6)
- bobAddr := "localhost:" + strconv.Itoa(bob.Config.BasePort+ugate.PORT_BTS)
+ bobAddr := "localhost:" + strconv.Itoa(bob.BasePort+7)
// Alice dials a MUX to bob
- bobNode := alice.GetOrAddNode(bob.Auth.ID)
+ bobNode, _ := alice.Cluster(nil, bob.Auth.ID)
bobNode.Addr = bobAddr
+
+
_, err := alice.DialMUX(context.Background(), "h2r", bobNode, nil)
if err != nil {
t.Fatal("Error dialing mux", err)
diff --git a/pkg/h2r/h2raw.go b/pkg/h2r/h2raw.go
new file mode 100644
index 0000000..b100c43
--- /dev/null
+++ b/pkg/h2r/h2raw.go
@@ -0,0 +1,213 @@
+package h2r
+
+// WIP: Low-level H2 - to allow reverse streams and more efficient proxy.
+// Based on x/net/http2/transport.go - but with push support
+// See h2i, spdystream, etc
+// Uses 'spdy' ALPN on TLS, can be used over existing streams to multiplex.
+//
+// For better stability:
+// - use the golang H2 implementation by default, over TLS or websocket (until this file is very stable)
+// - client create a POST stream for accepted connections, over H2
+// -
+
+// H2RMux is a mux using H2 frames.
+// Based on ALPN, may use raw frames.
+//type H2RMux struct {
+// *http2.ClientConn
+//
+// dm *ugate.MeshCluster
+//
+// // Raw frame support
+// m sync.RWMutex
+// framer *http2.Framer
+// streams map[uint32]*H2Stream
+// handleStream func(*H2Stream)
+// nextStreamID uint32
+//}
+//
+//// NewStream opens a H2 stream. No H2 header (empty) - this matches QUIC streams
+//func (c *H2RMux) NewStream(ctx context.Context, req *http.Request) (*H2Stream, error) {
+// c.m.Lock()
+// id := c.nextStreamID
+// c.nextStreamID += 2
+// c.m.Unlock()
+//
+// s := c.stream(id)
+//
+// host := req.Host
+// if host == "" {
+// host = req.URL.Host
+// }
+//
+// path := req.RequestURI
+// if path == "" {
+// path = "/"
+// }
+//
+// // TODO: support for 'PUSH' frames for webpush.
+// s.henc.WriteField(hpack.HeaderField{Name: ":authority", Value: host})
+// s.henc.WriteField(hpack.HeaderField{Name: ":method", Value: req.Method})
+// s.henc.WriteField(hpack.HeaderField{Name: ":path", Value: path})
+// s.henc.WriteField(hpack.HeaderField{Name: ":scheme", Value: "https"})
+//
+// s.hbuf.Reset()
+// for k, vv := range req.Header {
+// lowKey := strings.ToLower(k)
+// if lowKey == "host" {
+// continue
+// }
+// for _, v := range vv {
+// s.henc.WriteField(hpack.HeaderField{Name: lowKey, Value: v})
+// }
+// }
+// err := c.framer.WriteHeaders(http2.HeadersFrameParam{
+// StreamID: id,
+// EndHeaders: true,
+// BlockFragment: s.hbuf.Bytes(),
+// })
+//
+// return s, err
+//}
+
+//func (h2c *H2RMux) serve() error {
+// // TODO: Settings handshake
+//
+// var str *H2Stream
+// for {
+// f, err := h2c.framer.ReadFrame()
+// if err != nil {
+// return err
+// }
+// log.Println("H2 F: ", f.Header().Type)
+//
+// switch f := f.(type) {
+// case *http2.SettingsFrame:
+// // Sender acknoweldged the SETTINGS frame. No need to write
+// // SETTINGS again.
+// if f.IsAck() {
+// break
+// }
+// if err := h2c.framer.WriteSettingsAck(); err != nil {
+// return nil
+// }
+//
+// case *http2.PingFrame:
+//
+// case *http2.PushPromiseFrame:
+//
+// case *http2.GoAwayFrame: // not used for server, usually servers send GO_AWAY.
+//
+// case *http2.WindowUpdateFrame:
+// str = h2c.stream(f.StreamID)
+//
+// case *http2.DataFrame:
+// str = h2c.stream(f.StreamID)
+// // TODO: flow control, see h2
+// if f.Length > 0 {
+// h2c.framer.WriteWindowUpdate(f.StreamID, f.Length)
+// h2c.framer.WriteWindowUpdate(0, f.Length)
+// }
+// if str == nil {
+// // TODO: RST
+// continue
+// }
+// str.dataChan <- f
+//
+// case *http2.RSTStreamFrame:
+// str = h2c.stream(f.StreamID)
+//
+// case *http2.ContinuationFrame:
+// str = h2c.stream(f.StreamID)
+// if _, err := str.hdec.Write(f.HeaderBlockFragment()); err != nil {
+// return nil
+// }
+// if f.FrameHeader.Flags&http2.FlagHeadersEndHeaders != 0 {
+// h2c.handleStream(str)
+// }
+//
+// case *http2.HeadersFrame:
+// str := h2c.stream(f.StreamID)
+// if str == nil {
+// str = h2c.addStream(f.StreamID, f)
+// }
+// if _, err := str.hdec.Write(f.HeaderBlockFragment()); err != nil {
+// return nil
+// }
+// if f.FrameHeader.Flags&http2.FlagHeadersEndHeaders != 0 {
+// h2c.handleStream(str)
+// }
+// }
+// }
+//}
+
+//func (h2s *H2RMux) closeStream(id uint32) {
+// h2s.m.Lock()
+// delete(h2s.streams, id)
+// h2s.m.Unlock()
+//}
+
+//func (h2s *H2RMux) addStream(id uint32, f *http2.HeadersFrame) *H2Stream {
+// h2s.m.Lock()
+// // TODO: reuse
+// bb := &bytes.Buffer{}
+// ss := &H2Stream{
+// s: h2s,
+// hbuf: bb,
+// henc: hpack.NewEncoder(bb),
+// hdec: hpack.NewDecoder(uint32(4<<10), func(hf hpack.HeaderField) {
+// log.Println("Header: ", hf.Name, hf.Value)
+// }),
+// }
+// h2s.streams[id] = ss
+// h2s.m.Unlock()
+//
+// return ss
+//
+//}
+
+//func (h2s *H2RMux) stream(id uint32) *H2Stream {
+// h2s.m.RLock()
+// if ss, f := h2s.streams[id]; f {
+// h2s.m.RUnlock()
+// return ss
+// }
+// h2s.m.RUnlock()
+// return nil
+//}
+
+//// H2Stream is a multiplexed stream.
+//type H2Stream struct {
+// id *uint32
+// s *H2RMux
+//
+// hbuf *bytes.Buffer // HPACK encoder writes into this
+// hdec *hpack.Decoder
+// henc *hpack.Encoder
+//
+// dataChan chan *http2.DataFrame
+// // Callback style - if set dataChan and Read will not be used. Not blocking
+// DataHandlerNB func(*http2.DataFrame) error
+//
+// readClosed bool
+// unread []byte
+//}
+//
+//func (str *H2Stream) Close() error {
+// return nil
+//}
+//
+//func (str *H2Stream) Write(p []byte) (n int, err error) {
+// panic("implement me")
+//}
+//
+//func (str *H2Stream) Read(p []byte) (n int, err error) {
+// if len(str.unread) > 0 {
+//
+// }
+// f := <-str.dataChan
+// if f.StreamEnded() {
+//
+// }
+//
+// panic("implement me")
+//}
diff --git a/pkg/http/http.go b/pkg/http/http.go
new file mode 100644
index 0000000..0002057
--- /dev/null
+++ b/pkg/http/http.go
@@ -0,0 +1,64 @@
+package http
+
+import (
+ "net"
+ "net/http"
+ "strconv"
+
+ "github.com/costinm/meshauth"
+)
+
+// WIP: Normal http listener for a gateway.
+//
+// Most of the gate is concerned with L4 and L4S - routing on a hostname or VIP.
+//
+//
+
+type HttpRoutes struct {
+
+ PortRoutes map[string]*ListenerRoutes
+
+ TargetHandlers map[string]http.Handler
+}
+
+type ListenerRoutes struct {
+
+ Listener *meshauth.PortListener
+
+ DefaultRoute *HttpRoute
+
+ Routes map[string]*HttpRoute `json:"routes,omitempty"`
+
+ Mux *http.ServeMux
+}
+
+type HttpRoute struct {
+ // Listener
+ ParentRef string
+
+ // ForwardTo where to forward the proxied connections.
+ // Used for accepting on a dedicated port. Will be set as MeshCluster in
+ // the stream, can be mesh node.
+ // host:port format.
+ ForwardTo string `json:"forwardTo,omitempty"`
+}
+
+
+func (ug *ListenerRoutes) FindRoutePrefix(dstaddr net.IP, p uint16, prefix string) *HttpRoute {
+ port := ":" + strconv.Itoa(int(p))
+ l := ug.Routes[prefix+dstaddr.String()+port]
+ if l != nil {
+ return l
+ }
+
+ l = ug.Routes[prefix+port]
+ if l != nil {
+ return l
+ }
+
+ l = ug.Routes[prefix+"-"+port]
+ if l != nil {
+ return l
+ }
+ return ug.DefaultRoute
+}
diff --git a/pkg/http_proxy/httpproxy_capture.go b/pkg/http_proxy/httpproxy_capture.go
index 81f3aa5..20b76f0 100644
--- a/pkg/http_proxy/httpproxy_capture.go
+++ b/pkg/http_proxy/httpproxy_capture.go
@@ -1,37 +1,65 @@
package http_proxy
import (
+ "context"
"io"
"log"
"net"
"net/http"
"strings"
- "github.com/costinm/hbone/nio"
- "github.com/costinm/ugate/pkg/ugatesvc"
+ "github.com/costinm/ssh-mesh/nio"
+
+ "github.com/costinm/ugate"
+
)
-// Used for HTTP_PROXY=localhost:port, to intercept outbound traffic using http proxy protocol.
-// CONNECT too.
+// Used for HTTP_PROXY=localhost:port, to intercept outbound traffic using http
+// proxy protocol.
+//
+// It also handles CONNECT and 'transparent' proxy.
+//
+//
// Android allows using HTTP_PROXY, and is used by browser - more efficient than TUN.
-// HTTPGate handles HTTP requests
-type HTTPGate struct {
- //Auth *auth.Auth
- gw *ugatesvc.UGate
+// HttpProxy handles HTTP PROXY and plain text HTTP requests (primarily on port 80)
+// for egress side.
+//
+// A DNAT or explicit proxy are sufficient - no need for TPROXY or REDIRECT, host
+// is extracted from request and sessions should use cookies.
+type HttpProxy struct {
+ gw *ugate.UGate
}
-func NewHTTPProxy(gw *ugatesvc.UGate) *HTTPGate {
- return &HTTPGate{
+func NewHTTPProxy(gw *ugate.UGate) *HttpProxy {
+ return &HttpProxy{
gw: gw,
}
}
+func ForwardHTTP(c *ugate.MeshCluster, w http.ResponseWriter, r *http.Request, pathH string) error {
+
+ r.Host = pathH
+ r1 := nio.CreateUpstreamRequest(w, r)
+
+ r1.URL.Scheme = "http"
+
+ // will be used by RoundTrip.
+ r1.URL.Host = pathH
+
+ res, err := c.RoundTrip(r1)
+ if err != nil {
+ return err
+ }
+ nio.SendBackResponse(w, r, res, err)
+ return nil
+}
+
// RoundTripStart listening on the addr, as a HTTP_PROXY
// Handles CONNECT and PROXY requests using the gateway
// for streams.
-func (gw *HTTPGate) HttpProxyCapture(addr string) error {
+func (gw *HttpProxy) HttpProxyCapture(addr string) error {
// For http proxy we need a dedicated plain HTTP port
nl, err := net.Listen("tcp", addr)
if err != nil {
@@ -49,28 +77,29 @@ func (gw *HTTPGate) HttpProxyCapture(addr string) error {
gw.captureHttpProxyAbsURL(w, r)
return
}
+ gw.captureHttpProxyAbsURL(w, r)
}))
return nil
}
// Http proxy to a configured HTTP host. Hostname to HTTP address explicitly
// configured. Also hostnmae to file serving.
-func (gw *HTTPGate) proxy(w http.ResponseWriter, r *http.Request) bool {
+func (gw *HttpProxy) proxy(w http.ResponseWriter, r *http.Request) bool {
// TODO: if host is XXXX.m.SUFFIX -> forward to node.
- host, found := gw.gw.Config.Clusters[r.Host]
+ host, found := gw.gw.Clusters[r.Host]
if !found {
return false
}
if len(host.Addr) > 0 {
log.Println("FWDHTTP: ", r.Method, r.Host, r.RemoteAddr, r.URL)
- gw.gw.H2Handler.ForwardHTTP(w, r, host.Addr)
+ ForwardHTTP(host, w, r, host.Addr)
}
return true
}
// WIP: HTTP proxy with absolute address, to a QUIC server (or sidecar)`
-func (gw *HTTPGate) captureHttpProxyAbsURL(w http.ResponseWriter, r *http.Request) {
+func (gw *HttpProxy) captureHttpProxyAbsURL(w http.ResponseWriter, r *http.Request) {
// HTTP proxy mode - uses the QUIC client to connect to the node
// TODO: redirect via VPN, only root VPN can do plaintext requests
@@ -81,6 +110,7 @@ func (gw *HTTPGate) captureHttpProxyAbsURL(w http.ResponseWriter, r *http.Reques
// User-Agent, Acept, Proxy-Connection:Keep-Alive
if gw.proxy(w, r) {
+ // found the host in clusters - it is an internal/mesh request
return
}
@@ -99,7 +129,7 @@ func (gw *HTTPGate) captureHttpProxyAbsURL(w http.ResponseWriter, r *http.Reques
}
origBody := resp.Body
defer origBody.Close()
- ugatesvc.CopyResponseHeaders(w.Header(), resp.Header)
+ nio.CopyResponseHeaders(w.Header(), resp.Header)
w.WriteHeader(resp.StatusCode)
io.Copy(w, resp.Body)
@@ -111,7 +141,7 @@ func (gw *HTTPGate) captureHttpProxyAbsURL(w http.ResponseWriter, r *http.Reques
// a TCP UdpNat to a mesh node, from localhost or from a net node.
// Only used to capture local traffic - should be bound to localhost only, like socks.
// It speaks HTTP/1.1, no QUIC
-func (gw *HTTPGate) handleConnect(w http.ResponseWriter, r *http.Request) {
+func (gw *HttpProxy) handleConnect(w http.ResponseWriter, r *http.Request) {
hij, ok := w.(http.Hijacker)
if !ok {
w.WriteHeader(503)
@@ -125,7 +155,7 @@ func (gw *HTTPGate) handleConnect(w http.ResponseWriter, r *http.Request) {
}
// TODO: second param may contain unprocessed data.
- proxyClient, _, e := hij.Hijack()
+ proxyClient, clientBuffer, e := hij.Hijack()
if e != nil {
w.WriteHeader(503)
w.Write([]byte("Error - no hijack support"))
@@ -133,21 +163,29 @@ func (gw *HTTPGate) handleConnect(w http.ResponseWriter, r *http.Request) {
}
//ra := proxyClient.RemoteAddr().(*net.TCPAddr)
+
str := nio.GetStream(proxyClient, proxyClient)
- defer gw.gw.OnStreamDone(str)
+ if clientBuffer.Reader.Size() > 0 {
+
+ }
gw.gw.OnStream(str)
+ defer gw.gw.OnStreamDone(str)
str.Dest = host
str.Direction = nio.StreamTypeOut
- str.PostDialHandler = func(conn net.Conn, err error) {
- if err != nil {
- w.WriteHeader(503)
- w.Write([]byte("RoundTripStart error" + err.Error()))
- return
- }
- proxyClient.Write([]byte("HTTP/1.0 200 OK\r\n\r\n"))
+
+ nc, err := gw.gw.DialContext(context.Background(), "tcp", str.Dest)
+
+ if err != nil {
+ w.WriteHeader(503)
+ w.Write([]byte("RoundTripStart error" + err.Error()))
+ return
}
- // TODO: add sniffing on the outbound
+ proxyClient.Write([]byte("HTTP/1.0 200 OK\r\n\r\n"))
+
+ nio.Proxy(nc, str, str, str.Dest)
- gw.gw.DialAndProxy(str)
+ //defer nc.Close()
+ //
+ //str.ProxyTo(nc)
}
diff --git a/pkg/httpwrapper/http.go b/pkg/httpwrapper/http.go
new file mode 100644
index 0000000..e7f2879
--- /dev/null
+++ b/pkg/httpwrapper/http.go
@@ -0,0 +1,107 @@
+package httpwrapper
+
+import (
+ "errors"
+ "fmt"
+ "net/http"
+ "runtime/debug"
+ "time"
+
+ "log/slog"
+
+ "github.com/costinm/meshauth"
+ "github.com/costinm/ssh-mesh/nio"
+)
+
+// Deprecated - replaced by meshauth and otel
+// This wraps a http call with authz.
+
+type HttpHandler struct {
+ Handler http.Handler
+ Logger *slog.Logger
+}
+
+// Common entry point for H1, H2 - both plain and tls
+// Will do the 'common' operations - authn, authz, logging, metrics for all BTS and regular HTTP.
+//
+// Important:
+// When using for BTS we need to work around golang http stack implementation.
+// This should be used as fallback - QUIC and WebRTC have proper mux and TUN support.
+// In particular, while H2 POST and CONNECT allow req/res Body to act as TCP stream,
+// the closing (FIN/RST) are very tricky:
+// - ResponseWriter (in BTS server) does not have a 'Close' method, it is closed after
+// the method returns. That means we can't signal the TCP FIN or RST, which breaks some
+// protocols.
+// - The request must be fully consumed before the method returns.
+func (l *HttpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ t0 := time.Now()
+ var RemoteID string
+ var SAN string
+
+ defer func() {
+ // TODO: add it to an event buffer
+ if l.Logger != nil {
+ l.Logger.Log(r.Context(), slog.LevelInfo, "remoteID", RemoteID,
+ "SAN", SAN, "request", r.URL, "time", time.Since(t0))
+ }
+ if r := recover(); r != nil {
+ fmt.Println("Recovered in f", r)
+
+ debug.PrintStack()
+
+ // find out exactly what the error was and set err
+ var err error
+
+ switch x := r.(type) {
+ case string:
+ err = errors.New(x)
+ case error:
+ err = x
+ default:
+ err = errors.New("Unknown panic")
+ }
+ if err != nil {
+ fmt.Println("ERRROR: ", err)
+ }
+ }
+ }()
+
+ vapidH := r.Header["Authorization"]
+ if len(vapidH) > 0 {
+ tok, pub, err := meshauth.CheckVAPID(vapidH[0], time.Now())
+ if err == nil {
+ RemoteID = meshauth.IDFromPublicKeyBytes(pub)
+ SAN = tok.Sub
+ }
+ }
+
+ tls := r.TLS
+ // If the request was handled by normal uGate listener.
+ us := r.Context().Value("util.Stream")
+ if ugs, ok := us.(nio.Stream); ok {
+ tls = ugs.TLSConnectionState()
+ r.TLS = tls
+ }
+ // other keys:
+ // - http-server (*http.Server)
+ // - local-addr - *net.TCPAddr
+ //
+
+ if tls != nil && len(tls.PeerCertificates) > 0 {
+ pk1 := tls.PeerCertificates[0].PublicKey
+ RemoteID = meshauth.PublicKeyBase32SHA(pk1)
+ // TODO: Istio-style, signed by a trusted CA. This is also for SSH-with-cert
+ sans, _ := meshauth.GetSAN(tls.PeerCertificates[0])
+ if len(sans) > 0 {
+ SAN = sans[0]
+ }
+ }
+ // Using the 'from' header internally
+ if RemoteID != "" {
+ r.Header.Set("from", RemoteID)
+ } else {
+ r.Header.Del("from")
+ }
+
+ l.Handler.ServeHTTP(w, r)
+}
diff --git a/pkg/ipfs/cmd/ipfsdisc.go b/pkg/ipfs/cmd/ipfsdisc.go
new file mode 100644
index 0000000..818b1b2
--- /dev/null
+++ b/pkg/ipfs/cmd/ipfsdisc.go
@@ -0,0 +1,31 @@
+package main
+
+import (
+ "context"
+ "net/http"
+
+ "github.com/costinm/meshauth"
+ "github.com/costinm/meshauth/util"
+ "github.com/costinm/ugate/pkg/ipfs"
+)
+
+func main() {
+ cfg := &meshauth.MeshCfg{}
+ util.MainStart("ugate", cfg)
+
+ auth, err := meshauth.FromEnv(cfg)
+ if err != nil {
+ panic(err)
+ }
+
+ if auth.Cert == nil {
+ auth.InitSelfSigned("")
+ }
+
+ ipfsdisc, err := ipfs.NewDHT(context.Background(), auth, 11014)
+ if err != nil {
+ panic(err)
+ }
+
+ http.ListenAndServe(":11015", ipfsdisc)
+}
diff --git a/pkg/ipfs/dht.go b/pkg/ipfs/dht.go
new file mode 100644
index 0000000..7fb4f2f
--- /dev/null
+++ b/pkg/ipfs/dht.go
@@ -0,0 +1,662 @@
+package ipfs
+
+import (
+ "context"
+ "crypto/ecdsa"
+ "fmt"
+ "log"
+ "net/http"
+ "os"
+ "strings"
+ "time"
+
+ "github.com/costinm/meshauth"
+ "github.com/ipfs/boxo/ipns"
+ "github.com/ipfs/boxo/peering"
+ "github.com/ipfs/boxo/routing/http/server"
+ "github.com/ipfs/boxo/routing/http/types"
+ "github.com/ipfs/boxo/routing/http/types/iter"
+ "github.com/ipfs/go-cid"
+ "github.com/ipfs/go-datastore"
+ "github.com/libp2p/go-libp2p"
+ dht "github.com/libp2p/go-libp2p-kad-dht"
+ "github.com/libp2p/go-libp2p/core/control"
+ "github.com/libp2p/go-libp2p/core/crypto"
+ "github.com/libp2p/go-libp2p/core/network"
+ "github.com/libp2p/go-libp2p/core/peer"
+ "github.com/libp2p/go-libp2p/core/routing"
+ "github.com/libp2p/go-libp2p/p2p/net/connmgr"
+ "github.com/libp2p/go-libp2p/p2p/security/noise"
+ libp2ptls "github.com/libp2p/go-libp2p/p2p/security/tls"
+ "github.com/multiformats/go-multiaddr"
+ "github.com/multiformats/go-multihash"
+
+ "github.com/libp2p/go-libp2p/core/host"
+)
+
+// Support a libp2p DHT proxy, using http API.
+// Should run on a 'control plane' node - meshauth or some other infra node, ideally DNS and workload discovery server.
+// Can also run standalone - to avoid every workload using libp2p having to interact with and be a DHT node.
+
+// IPFSDiscovery registers in the libp2p DHT infra ( by default public - but can also be a private DHT mesh)
+// and acts as a DHT node, implementing the http routing server API.
+type IPFSDiscovery struct {
+ DHT *dht.IpfsDHT
+ Host host.Host
+
+ Port int
+ Auth *meshauth.MeshAuth
+
+ // gorilla mux with /routing path - not well integrated with http mux
+ routingHandler http.Handler
+
+ dialCnt int
+ peerDialCnt int
+ securedCnt int
+ upgradedCnt int
+ Bootstrap []multiaddr.Multiaddr
+ Key crypto.PrivKey
+
+ // If empty, this is used with the public infra
+ Domain string
+}
+
+
+// DHT: supports putValue(key, value) for exactly 2 key types:
+// - /pk/KEYHASH -> public key. Not relevant for ED keys ( key id is the key )
+// - /ipns/KEYID -> proto IpnsEntry containing public key.
+
+
+var dialCnt = 0
+var peerDialCnt = 0
+var (
+ securedCnt = 0
+ upgradedCnt = 0
+)
+
+// NewDHT creates a DHT client for the public infra.
+func NewDHT(ctx context.Context, auth *meshauth.MeshAuth, p2pport int) (*IPFSDiscovery, error) {
+ i := &IPFSDiscovery{Auth: auth, Port: p2pport,
+ Bootstrap: dht.DefaultBootstrapPeers,
+ Domain : "",
+ }
+ err := i.Init(ctx)
+ return i, err
+}
+
+type localValidator struct {
+
+}
+
+func (l localValidator) Validate(key string, value []byte) error {
+ return nil
+}
+
+func (l localValidator) Select(key string, values [][]byte) (int, error) {
+ return 0, nil
+}
+
+// NewDHT creates a host using DHT and router server.
+func (ipfsd *IPFSDiscovery) Init(ctx context.Context) (error) {
+ // crypto.MarshalPrivateKey uses a protobuf - we use our own format.
+
+ //ipfslog.SetLogLevel("*", "debug")
+ //ipfslog.SetLogLevel("*", "warn")
+
+ // Bootstrappers are using 1024 keys. See:
+ // https://github.com/ipfs/infra/issues/378
+ crypto.MinRsaKeyBits = 1024
+
+ connmgr, err := connmgr.NewConnManager(
+ 100, // Lowwater
+ 400, // HighWater,
+ connmgr.WithGracePeriod(time.Minute),
+ )
+ if err != nil {
+ return err
+ }
+
+ p2pport := ipfsd.Port
+ la := []multiaddr.Multiaddr{}
+ listen, err := multiaddr.NewMultiaddr(fmt.Sprintf("/ip4/0.0.0.0/tcp/%d", p2pport))
+ la = append(la, listen)
+
+ listen, err = multiaddr.NewMultiaddr(fmt.Sprintf("/ip4/0.0.0.0/udp/%d/quic", p2pport + 1))
+ la = append(la, listen)
+ //listen, err = multiaddr.NewMultiaddr(fmt.Sprintf("/ip6/::/tcp/%d", p2pport))
+ //la = append(la, listen)
+ listen, err = multiaddr.NewMultiaddr(fmt.Sprintf("/ip4/0.0.0.0/tcp/%d/ws", p2pport + 2))
+ la = append(la, listen)
+
+ //const webtransportHTTPEndpoint = "/.well-known/libp2p-webtransport"
+ // for connect: add /certhash/HASH
+ listen, err = multiaddr.NewMultiaddr(fmt.Sprintf("/ip4/0.0.0.0/udp/%d/quic/webtransport", p2pport + 3 ))
+ la = append(la, listen)
+
+
+ //listen, _ = multiaddr.NewMultiaddr(fmt.Sprintf("/ip6/::/udp/%d/quic", p2pport))
+ //la = append(la, listen)
+ //listen, _ = multiaddr.NewMultiaddr("/ip4/0.0.0.0/udp/4005/quic")
+ //la = append(la, listen)
+ //listen, _ = multiaddr.NewMultiaddr("/ip4/0.0.0.0/tcp/4006/ws")
+ //la = append(la, listen)
+ //listen, _ = multiaddr.NewMultiaddr("/ip6/::/tcp/4006/ws")
+ //la = append(la, listen)
+ //rtc := direct.NewTransport(
+ // webrtc.Configuration{},
+ // new(mplex.Transport),
+ //)
+
+ // TODO: set a ConnectionGater !
+ // TODO: equivalent StreamGater ?
+ // TODO: create a ssh proxy
+ // TODO: SSH transport
+
+
+ ds := datastore.NewMapDatastore()
+
+ finalOpts := []libp2p.Option{
+ libp2p.ListenAddrs(la...),
+ //libp2p.ChainOptions(
+ // //libp2p.Transport(libp2pquic.NewTransport),
+ // //libp2p.Transport(ws.New),
+ // //libp2p.Transport(rtc),
+ // libp2p.DefaultTransports, // TCP, WS
+ //),
+ // support TLS connections
+ libp2p.Security(libp2ptls.ID, libp2ptls.New),
+ // support noise connections
+ libp2p.Security(noise.ID, noise.New),
+ // support any other default transports (TCP)
+ libp2p.DefaultTransports,
+ // Let's prevent our peer from having too many
+ // connections by attaching a connection manager.
+ libp2p.ConnectionManager(connmgr),
+ // Attempt to open ports using uPNP for NATed hosts.
+ libp2p.NATPortMap(),
+ // If you want to help other peers to figure out if they are behind
+ // NATs, you can launch the server-side of AutoNAT too (AutoRelay
+ // already runs the client)
+ //
+ // This service is highly rate-limited and should not cause any
+ // performance issues.
+ libp2p.EnableNATService(),
+ libp2p.ConnectionGater(ipfsd),
+
+ // If behind NAT, find and use relays
+ //libp2p.EnableAutoRelay(),
+ // Accept from relay, initiate via relay. Required for auto relay
+ //libp2p.EnableAutoRelayWithStaticRelays(relay), // no circuit.OptHop, OptActive
+
+ // Attempt to use UpNP to open port
+ // mostly uselss.
+ //libp2p.NATPortMap(),
+
+ // Used for the /ws/ transport - QUIC is 'capable', has own security
+ // TODO: ssh over ws built in.
+ // https://docs.libp2p.io/concepts/stream-multiplexing/#implementations
+ // Defaults: mplex - no flow control
+ // yamux - based on h2, but not the same. Problems closing. No JS.
+ // spdystream - h2, has JS, based on docker/spdystream. RequestInPipe of date, not core
+ //
+ //libp2p.Muxer("/yamux/1.0.0", yamux.DefaultTransport),
+ // Default: noise, tls
+ //libp2p.Security(secio.ID, secio.New),
+
+ libp2p.AddrsFactory(func(src []multiaddr.Multiaddr) []multiaddr.Multiaddr {
+ res := []multiaddr.Multiaddr{}
+ for _, s := range src {
+ if strings.HasPrefix(s.String(), "/ip6/fd") {
+ continue
+ }
+ if strings.HasPrefix(s.String(), "/ip4/10.") {
+ continue
+ }
+ if strings.HasPrefix(s.String(), "/ip4/127.") {
+ continue
+ }
+ if strings.HasPrefix(s.String(), "/ip4/192.168") {
+ continue
+ }
+ res = append(res, s)
+ }
+ return src
+ }),
+ // libp2p.ConnectionGater(p2p),
+
+ // Disables probing for rely, force using only public
+ //libp2p.ForceReachabilityPublic(),
+ //libp2p.ForceReachabilityPrivate(),
+ }
+ finalOpts = append(finalOpts, libp2p.ForceReachabilityPrivate())
+
+ if ipfsd.Key != nil {
+ finalOpts = append(finalOpts, libp2p.Identity(ipfsd.Key))
+ } else if ipfsd.Auth != nil && ipfsd.Auth.Cert != nil {
+ sk, _, _ := crypto.ECDSAKeyPairFromKey(ipfsd.Auth.Cert.PrivateKey.(*ecdsa.PrivateKey))
+ ipfsd.Key = sk
+ finalOpts = append(finalOpts, libp2p.Identity(sk))
+ } else {
+ sk, _, _ := crypto.GenerateKeyPair(crypto.Ed25519, 2048)
+ ipfsd.Key = sk
+ finalOpts = append(finalOpts, libp2p.Identity(sk))
+ }
+
+ //relay.DesiredRelays = 2
+
+ // This allows the node to be contacted behind NAT
+ // Set the 'official' relays.
+ // TODO: get relay dynamically, from discovery server
+ // replaced by EnableAutoRelay
+ //finalOpts = append(finalOpts, libp2p.DefaultStaticRelays())
+ finalOpts = append(finalOpts,
+ libp2p.Routing(func(h host.Host) (routing.PeerRouting, error) {
+ dhtOpts := []dht.Option{
+ //dht.NamespacedValidator("pk", record.PublicKeyValidator{}),
+ //dht.NamespacedValidator("ipns", ipns.Validator{KeyBook: h.Peerstore()}),
+ //dual.DHTOption(dht.Mode(dht.ModeClient)),
+ //dual.DHTOption(dht.DisableAutoRefresh()),
+ //dht.QueryFilter(dht.PublicQueryFilter),
+ }
+ if ipfsd.Domain == "" {
+ // We may want to run an ipfs node to participate and provide a public server service, but not
+ // with this library.
+ dhtOpts = append(dhtOpts, dht.Mode(dht.ModeClient))
+ //dhtOpts = append(dhtOpts, dht.Concurrency(3))
+ } else {
+ dhtOpts = append(dhtOpts, dht.Mode(dht.ModeServer))
+ dhtOpts = append(dhtOpts, dht.Concurrency(3))
+ }
+ dhtOpts = append(dhtOpts, dht.Datastore(ds))
+ // DHT results in a lot of connections. To debug, set a break on dial_sync (in swarm), in getActiveDial
+ // query.spawnQuery is causing the request
+
+ ddht, err := dht.New(ctx, h, dhtOpts...)
+ if ipfsd.Domain != "" {
+ ddht.Validator = &localValidator{}
+ }
+ ipfsd.DHT = ddht
+ return ddht, err
+ }))
+
+ // Problem is that to expose this host we do need to push it to DHT.
+
+ // in memory peer store
+ // HTTPS/XDS/etc for discovery, using a discovery server with DHT
+ // or other backend.
+
+ // Will register: (see multistream.AddHandlerWithFunc)
+ // /ipfs/id -> handles peer registration in DHT
+ // ping
+ // secio
+ // tls
+ // yamux
+ // mplex
+ // libp2p/circuit/relay ( AddRelayTranport ) - if cfg.Relay
+ // autonat -
+
+ // On connect with a node, id is exchanged and the signed address record
+ // is added to mem (addr_book.go ConsumePeerRecord).
+ // By connecting to peers they learn the address, and may provide it.
+ // FindPeer in DHT works by connecting to the actual peer, which must implement DHT
+ // This is based on FIND_NODE messages.
+
+ // Connects to this node - mostly for testing.
+ rt := os.Getenv("IPFS_ROOT")
+ if rt == "" {
+ rt = "/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"
+ }
+
+ h, err := libp2p.New(finalOpts...)
+ if err != nil {
+ panic(err)
+ }
+
+ ipfsd.Host = h
+
+
+
+ // Use the host 'event bus' to subscribe to all events.
+ InitEvent(h)
+
+ ipfsd.StartDHT()
+
+ ipfsd.routingHandler = server.Handler(ipfsd)
+
+ // Maintain connections to all added peers. This generates a LOT of events
+ if false {
+ ipfsd.Peering(h, rt)
+ }
+
+ return nil
+}
+
+func (ipfsd *IPFSDiscovery) LogAddr() {
+ h := ipfsd.Host
+ for _, a := range h.Addrs() {
+ log.Println("IPFS Addr: ", a.String() + "/p2p/" + h.ID().String())
+ }
+ log.Println("IPFS CID: ", peer.ToCid(h.ID()).String())
+}
+
+func (d *IPFSDiscovery) StartDHT() {
+ // This connects to public bootstrappers
+ for _, addr := range d.Bootstrap {
+ pi, _ := peer.AddrInfoFromP2pAddr(addr)
+ // We ignore errors as some bootstrap peers may be down
+ // and that is fine.
+ d.Host.Connect(context.Background(), *pi)
+ }
+}
+
+// Announce this node is a provider for the key.
+// Normally used for IPFS, key is the sha of the content. Also
+// used for advertise, in Discovery and autorelay.go (/libp2p/relay)
+// According to routing.go, 24h is the normal validity, recommended 6hours refresh.
+//func (p2p *IPFS) Provide(ns string) error {
+// v, _ := nsToCid(ns)
+// return p2p.Routing.Provide(context.Background(), v, true)
+//}
+//
+//func (p2p *IPFS) Find(ns string) {
+// v, _ := nsToCid(ns)
+// rc := p2p.Routing.FindProvidersAsync(context.Background(), v, 10)
+//
+// for r := range rc {
+// log.Println("Got ", r)
+// }
+//}
+
+// Additional ipfs features
+func nsToCid(ns string) (cid.Cid, error) {
+ h, err := multihash.Sum([]byte(ns), multihash.SHA2_256, -1)
+ if err != nil {
+ return cid.Undef, err
+ }
+
+ return cid.NewCidV1(cid.Raw, h), nil
+}
+
+
+func (d *IPFSDiscovery) Peering(h host.Host, rt string) {
+ pi, err := P2PAddrFromString(rt)
+ if err != nil {
+ log.Println("Invalid ", rt, err)
+ } else {
+ //finalOpts = append(finalOpts, libp2p.StaticRelays([]peer.AddrInfo{*pi}))
+ }
+ ps := peering.NewPeeringService(h)
+
+ if pi != nil {
+ ps.AddPeer(*pi)
+ err = h.Connect(context.Background(), *pi)
+ if err != nil {
+ log.Println("IPFS: Failed to connect to ", *pi)
+ } else {
+ log.Println("IPFS: Connected to ", *pi)
+ }
+ }
+ ps.Start()
+
+}
+
+// StartListener a signed proto, key is the public key.
+// 'IPNS' - typically the value is an ipfs address, but can be anything.
+//func (p2p *IPFS) Put(key ed25519.PrivateKey, v []byte, seq uint64, exp time.Duration) (string, error) {
+ //sk, _ := crypto.UnmarshalEd25519PrivateKey(key)
+ //
+ //
+ //
+ //rec, err := ipns.Create(sk, v, seq, time.Now().Add(exp), exp)
+ ////ipns.EmbedPublicKey(sk.GetPublic(), rec)
+ //id, err := peer.IDFromPublicKey(sk.GetPublic())
+ //data, err := proto.Marshal(rec)
+ //
+ //// Store ipns entry at "/ipns/"+h(pubkey)
+ //err = p2p.DHT.PutValue(context.Background(), ipns.RecordKey(id), data)
+ //
+ //log.Println("Published ", id, err)
+ //
+ //// B58
+ //return id.String(), nil
+// return "", nil
+//}
+
+
+
+// IPFS autoregistration and debug function.
+//
+// Normally should only be exposed to mesh workloads - i.e. the request should be over ambient or authenticated
+// with JWT or mTLS.
+//
+//
+func (d *IPFSDiscovery) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ if strings.HasPrefix(r.URL.Path, "/routing/") {
+ d.routingHandler.ServeHTTP(w, r)
+ return
+ }
+ r.ParseForm()
+
+ q := r.Form.Get("q")
+ if q != "" {
+ // Get the peer.WorkloadID
+ pi, err := peer.Decode(q)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
+ }
+ ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
+ pchan, err := d.DHT.GetClosestPeers(ctx, string(pi))
+ for x := range pchan {
+ log.Println(x)
+ }
+
+ // Sends FIND_NODE
+ data, err := d.DHT.FindPeer(context.Background(), pi)
+
+ // GetValue accepts /ipns/PEER and /pk/PEER
+ //pkkey := routing.KeyForPublicKey(pi)
+ //data, err := p2p.DHT.GetValue(context.Background(), pkkey, dht.Quorum(1))
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ } else {
+ fmt.Fprintf(w, "%v", data)
+ }
+ return
+ }
+
+ h := d.Host
+
+ c := r.Form.Get("c")
+ if c != "" {
+ //"/ip4/149.28.196.14/tcp/4001/p2p/12D3KooWLePVbQbv3PqsDZt6obMcWa99YyqRWjeiCtStSydQ6zjH"
+ pi, err := P2PAddrFromString(c)
+ if err != nil {
+ return
+ }
+ err = h.Connect(context.Background(), *pi)
+ if err != nil {
+ fmt.Printf("Error %v", err)
+ return
+ }
+ return
+ }
+
+ log.Println("Peers: ", h.Peerstore().Peers())
+ for _, p := range h.Peerstore().Peers() {
+ log.Println(h.Peerstore().PeerInfo(p))
+ }
+
+ log.Println("Conns: ", h.Network().Conns())
+
+ c = r.Form.Get("p")
+ if c != "" {
+ // Provide indicates this node knows the value of the CID.
+ d.DHT.Provide(context.Background(), peer.ToCid(d.Host.ID()), true)
+ return
+ }
+}
+
+
+func P2PAddrFromString(c string) (*peer.AddrInfo, error) {
+ ma, err := multiaddr.NewMultiaddr(c)
+ if err != nil {
+ fmt.Printf("Error %v", err)
+ return nil, err
+ }
+ //
+ pi, err := peer.AddrInfoFromP2pAddr(ma)
+ if err != nil {
+ fmt.Printf("Error %v", err)
+ return nil, err
+ }
+ return pi, nil
+}
+
+// From kubo - but using DHT
+
+type peerChanIter struct {
+ ch <-chan peer.AddrInfo
+ cancel context.CancelFunc
+ next *peer.AddrInfo
+}
+
+func (it *peerChanIter) Next() bool {
+ addr, ok := <-it.ch
+ if ok {
+ it.next = &addr
+ return true
+ }
+ it.next = nil
+ return false
+}
+
+func (it *peerChanIter) Val() types.Record {
+ if it.next == nil {
+ return nil
+ }
+
+ rec := &types.PeerRecord{
+ Schema: types.SchemaPeer,
+ ID: &it.next.ID,
+ }
+
+ for _, addr := range it.next.Addrs {
+ rec.Addrs = append(rec.Addrs, types.Multiaddr{Multiaddr: addr})
+ }
+
+ return rec
+}
+
+func (it *peerChanIter) Close() error {
+ it.cancel()
+ return nil
+}
+
+type contentRouter struct {
+ DHT *dht.IpfsDHT
+}
+
+func (r *IPFSDiscovery) FindProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.Record], error) {
+ ctx, cancel := context.WithCancel(ctx)
+
+ ch := r.DHT.FindProvidersAsync(ctx, key, limit)
+ return iter.ToResultIter[types.Record](&peerChanIter{
+ ch: ch,
+ cancel: cancel,
+ }), nil
+}
+
+// nolint deprecated
+func (r *IPFSDiscovery) ProvideBitswap(ctx context.Context, req *server.BitswapWriteProvideRequest) (time.Duration, error) {
+ return 0, routing.ErrNotSupported
+}
+
+func (r *IPFSDiscovery) FindPeers(ctx context.Context, pid peer.ID, limit int) (iter.ResultIter[*types.PeerRecord], error) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ addr, err := r.DHT.FindPeer(ctx, pid)
+ if err != nil {
+ return nil, err
+ }
+
+ rec := &types.PeerRecord{
+ Schema: types.SchemaPeer,
+ ID: &addr.ID,
+ }
+
+ for _, addr := range addr.Addrs {
+ rec.Addrs = append(rec.Addrs, types.Multiaddr{Multiaddr: addr})
+ }
+
+ return iter.ToResultIter[*types.PeerRecord](iter.FromSlice[*types.PeerRecord]([]*types.PeerRecord{rec})), nil
+}
+
+func (r *IPFSDiscovery) GetIPNS(ctx context.Context, name ipns.Name) (*ipns.Record, error) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ raw, err := r.DHT.GetValue(ctx, string(name.RoutingKey()))
+ if err != nil {
+ return nil, err
+ }
+
+ return ipns.UnmarshalRecord(raw)
+}
+
+func (r *IPFSDiscovery) PutIPNS(ctx context.Context, name ipns.Name, record *ipns.Record) error {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ raw, err := ipns.MarshalRecord(record)
+ if err != nil {
+ return err
+ }
+
+ // The caller guarantees that name matches the record. This is double checked
+ // by the internals of PutValue.
+ return r.DHT.PutValue(ctx, string(name.RoutingKey()), raw)
+}
+
+func (p2p *IPFSDiscovery) InterceptPeerDial(p peer.ID) (allow bool) {
+ //log.Println("IPFS: peerDial", p)
+ peerDialCnt++
+ return true
+}
+
+func (p2p *IPFSDiscovery) InterceptAddrDial(id peer.ID, m multiaddr.Multiaddr) (allow bool) {
+ dialCnt++
+ if dialCnt <10 || dialCnt % 50 == 0 {
+ log.Println("IPFS: addrDial", id, m)
+ }
+ return true
+}
+
+func (p2p *IPFSDiscovery) InterceptAccept(multiaddrs network.ConnMultiaddrs) (allow bool) {
+ t, _ := multiaddrs.RemoteMultiaddr().MarshalText()
+ t1, _ := multiaddrs.LocalMultiaddr().MarshalText()
+ log.Println("IPFS: accept", string(t), string(t1))
+ return true
+}
+
+
+func (p2p *IPFSDiscovery) InterceptSecured(direction network.Direction, id peer.ID, multiaddrs network.ConnMultiaddrs) (allow bool) {
+ t, _ := multiaddrs.RemoteMultiaddr().MarshalText()
+ securedCnt++
+ if securedCnt <10 || securedCnt % 50 == 0 {
+ log.Println("IPFS: secured", direction, id, string(t), dialCnt, peerDialCnt)
+ }
+ return true
+}
+
+func (p2p *IPFSDiscovery) InterceptUpgraded(conn network.Conn) (allow bool, reason control.DisconnectReason) {
+ //t, _ := conn.RemoteMultiaddr().MarshalText()
+ //rmt, _ := conn.RemoteMultiaddr().MarshalText()
+ //upgradedCnt++
+ //if upgradedCnt <10 || upgradedCnt % 50 ==0 {
+ // log.Println("IPFS: upgraded", conn.RemotePeer(), string(t),
+ // string(rmt), conn.ID())
+ //}
+ return true, 0
+}
diff --git a/pkg/ipfs/dht_test.go b/pkg/ipfs/dht_test.go
new file mode 100644
index 0000000..49beaa5
--- /dev/null
+++ b/pkg/ipfs/dht_test.go
@@ -0,0 +1,510 @@
+
+package ipfs
+
+import (
+ "context"
+ "crypto/ecdsa"
+ "encoding/base64"
+ "fmt"
+ "github.com/ipfs/boxo/ipns"
+ "github.com/ipfs/boxo/path"
+ dht "github.com/libp2p/go-libp2p-kad-dht"
+ "io/ioutil"
+ "log"
+ "net"
+ "net/http"
+ "testing"
+ "time"
+
+ "github.com/costinm/meshauth"
+ "github.com/ipfs/boxo/routing/http/client"
+ "github.com/ipfs/boxo/routing/http/contentrouter"
+ "github.com/libp2p/go-libp2p"
+ "github.com/libp2p/go-libp2p/core/peerstore"
+
+ "github.com/costinm/ugate/pkg/test"
+
+ "github.com/multiformats/go-multiaddr"
+
+ "github.com/libp2p/go-libp2p/core/crypto"
+ "github.com/libp2p/go-libp2p/core/host"
+ "github.com/libp2p/go-libp2p/core/network"
+ "github.com/libp2p/go-libp2p/core/peer"
+ "github.com/libp2p/go-libp2p/core/sec"
+ "github.com/libp2p/go-libp2p/core/transport"
+
+ blank "github.com/libp2p/go-libp2p/p2p/host/blank"
+ "github.com/libp2p/go-libp2p/p2p/host/eventbus"
+ "github.com/libp2p/go-libp2p/p2p/host/peerstore/pstoremem"
+
+ "github.com/libp2p/go-libp2p/p2p/muxer/yamux"
+
+ "github.com/libp2p/go-libp2p/p2p/net/connmgr"
+ "github.com/libp2p/go-libp2p/p2p/net/swarm"
+ "github.com/libp2p/go-libp2p/p2p/net/upgrader"
+
+ "github.com/libp2p/go-libp2p/p2p/transport/tcp"
+
+ tls "github.com/libp2p/go-libp2p/p2p/security/tls"
+)
+
+/*
+
+# s1
+
+IPFS ID: QmcGCepxB4ymJLkWjbaAMRUW6UXjW1KZAu8oBNh3DtfpNS
+IPFS CID: bafzbeigo37kn4faud7pazgd6pphlu64pifk6vti7gclc4jj4hdxjigphs4
+[/ip6/2601:647:6100:449c:4ce5:460a:460:92ce/tcp/16100
+/ip6/::1/tcp/16100
+/ip4/10.1.10.228/tcp/16100
+/ip4/127.0.0.1/tcp/16100]
+
+
+# s2
+
+2021/03/03 20:24:03 IPFS ID: QmNZpRjHnEGkuHQezWHk4C7XGPfZxF1Kss3nV5JJMkwwVC
+2021/03/03 20:24:03 IPFS Addr: [/ip6/2601:647:6100:449c:4ce5:460a:460:92ce/tcp/15100 /ip6/::1/tcp/15100 /ip4/10.1.10.228/tcp/15100 /ip4/127.0.0.1/tcp/15100]
+2021/03/03 20:24:03 IPFS CID: bafzbeiadl6e43axbad4hegxivdsg6viv5hn6zopa77eonetyuc5bc4mplm
+
+
+
+*/
+const bobIPFSPeerID = "QmXpb6CSoNP6nMgq4kwY9Zd3Gysws1BzjXQd9cYN8CU3y9"
+const mainPeerID = "QmNhttK3xm5LpyLVDBgzwhwyAsGkoMnYmEt1rmQvtMXg87"
+const mainAddr = "/ip4/172.17.0.3/tcp/11014/p2p"
+
+const testKey = "CAESQGsUl0stPGtM2PMq5rJArmHflcQfECHPY5p0V7vQSexKCJC7aR882u_lzQrvMeohGEvZTb39HiPzBiKPbDDww4w"
+
+func TestPublicDHT(t *testing.T) {
+ ctx := context.Background()
+ kk, _ := base64.URLEncoding.DecodeString(testKey)
+ kkk, _ := crypto.UnmarshalPrivateKey(kk)
+ d := &IPFSDiscovery{Port: 8888, Bootstrap: dht.DefaultBootstrapPeers[0:2], Key: kkk}
+ err := d.Init(ctx)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ //key, _ := crypto.MarshalPrivateKey(d.Key)
+ //log.Println(base64.RawURLEncoding.EncodeToString(key))
+
+ //pid, _ := peer.Decode(bobIPFSPeerID)
+ //ai, err := d.DHT.FindPeer(context.Background(), pid)
+ //log.Println(err, ai)
+
+ l, _ := net.Listen("tcp", ":0")
+ go http.Serve(l, d)
+
+ p, _ := path.NewPath("/ipns/TEST")
+ r, err := ipns.NewRecord(d.Key, p, 1, time.Now().Add(1 * time.Hour), 1 * time.Hour)//, ipns.WithPublicKey(true))
+ rb, err := ipns.MarshalRecord(r)
+
+ pkid, _ := peer.IDFromPublicKey(d.Key.GetPublic())
+ name := ipns.NameFromPeer(pkid) // Names are in all cases based on the public key (or the public key)
+
+ oldv, _ := d.DHT.GetValue(ctx, string(name.RoutingKey()))
+ if oldv != nil {
+ log.Println(oldv)
+ }
+ err = d.DHT.PutValue(ctx, string(name.RoutingKey()), rb)
+ if err != nil {
+ t.Fatal(err)
+ }
+ oldv, _ = d.DHT.GetValue(ctx, string(name.RoutingKey()))
+ if oldv != nil {
+ log.Println(oldv)
+ }
+
+ // URL: /routing/v1/peers/
+ // -HAccept:application/x-ndjson,application/json
+ // https://cloudflare-ipfs.com//routing/v1/peers/bafzbeiem4fnfiqwrhlt7scybi6bdnmommmtsdfwb5mcvsssqgl43xbiuba - 404
+ // GET https://delegated-ipfs.dev/routing/v1/peers/bafzbeiem4fnfiqwrhlt7scybi6bdnmommmtsdfwb5mcvsssqgl43xbiuba - 500
+ // cid.contact
+ //resClient, err := client.New(
+ // "http://" + l.Addr().String())
+ // //"https://w3s.link")
+ // // "https://gw3.io") // text/html result
+ ////"https://dweb.link")
+ //"https://cid.contact")
+ //"https://gateway.ipfs.io")
+ //"https://cloudflare-ipfs.com" )//
+ //cr := contentrouter.NewContentRoutingClient(resClient)
+ //cid := peer.ToCid(pid).String()
+ //log.Println("CID", cid)
+ //
+ //pi, err := cr.FindPeer(context.Background(), pid)
+ //log.Println(err, pi)
+}
+
+func TestLocalDHT(t *testing.T) {
+ ctx := context.Background()
+
+ root := &IPFSDiscovery{Port: 5555, Domain: "mesh.internal"}
+ err := root.Init(ctx)
+ if err != nil {
+ t.Fatal(err)
+ }
+ rpi := peer.AddrInfo{ID: root.Host.ID(), Addrs: root.Host.Addrs()}
+
+ nodes := []*IPFSDiscovery{}
+ for i := 0; i < 3; i++ {
+ n := &IPFSDiscovery{Port: 5600 + i, Domain: "mesh.internal"}// , Bootstrap: []multiaddr.Multiaddr{pi}}
+ n.Init(ctx)
+ //pi := peer.AddrInfo{ID: n.Host.ID(), Addrs: n.Host.Addrs()}
+ // We ignore errors as some bootstrap peers may be down
+ // and that is fine.
+ n.Host.Connect(context.Background(), rpi)
+ //root.Host.Connect(ctx, pi)
+ nodes = append(nodes, n)
+ }
+
+ root.DHT.Bootstrap(ctx)
+
+ // ipfs, ipld - CID
+ // CID can contain 'identity', dns, multi-address, etc
+
+ // TODO: for private DHT, add a Validator that allows any values, not only the public IPFS (ipns, etc)
+
+ t.Run("ipns", func(t *testing.T) {
+ // ipns - string
+ p, err := path.NewPath("/ipns/bar")
+ if err != nil {
+ t.Fatal(err)
+ }
+ r, err := ipns.NewRecord(root.Key, p, 1, time.Now().Add(1 * time.Hour), 1 * time.Hour)//, ipns.WithPublicKey(true))
+ rb, err := ipns.MarshalRecord(r)
+
+ pkid, _ := peer.IDFromPublicKey(root.Key.GetPublic())
+ name := ipns.NameFromPeer(pkid) // Names are in all cases based on the public key (or the public key)
+ err = nodes[2].DHT.PutValue(ctx, string(name.RoutingKey()), rb)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ for _, nn := range nodes {
+ v, err := nn.DHT.GetValue(ctx, string(name.RoutingKey()))
+ if err != nil {
+ t.Fatal(err)
+ }
+ r, err := ipns.UnmarshalRecord(v)
+ if err != nil {
+ t.Fatal(err)
+ }
+ path, err := r.Value()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if "/ipns/bar" != path.String() {
+ t.Fatal("invalid value", path)
+ }
+ }
+ })
+
+ t.Run("genvalue", func(t *testing.T) {
+ log.Println("Put value")
+ err = nodes[1].DHT.PutValue(ctx, "/test/bar", []byte("Hello"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ log.Println("Get value")
+
+ val, err := nodes[2].DHT.GetValue(ctx, "/test/bar")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(val) != "Hello" {
+ t.Error("got ", string(val))
+ }
+ })
+ //log.Println(v)
+}
+
+func TestHttpRouting(t *testing.T) {
+ pid, _ := peer.Decode(mainPeerID)
+
+
+ // URL: /routing/v1/peers/
+ // -HAccept:application/x-ndjson,application/json
+ // https://cloudflare-ipfs.com//routing/v1/peers/bafzbeiem4fnfiqwrhlt7scybi6bdnmommmtsdfwb5mcvsssqgl43xbiuba - 404
+ // GET https://delegated-ipfs.dev/routing/v1/peers/bafzbeiem4fnfiqwrhlt7scybi6bdnmommmtsdfwb5mcvsssqgl43xbiuba - 500
+ // cid.contact
+ resClient, err := client.New("http://localhost:11015")
+ //"https://w3s.link")
+ // "https://gw3.io") // text/html result
+ //"https://dweb.link")
+ //"https://cid.contact")
+ //"https://gateway.ipfs.io")
+ //"https://cloudflare-ipfs.com" )//
+ cr := contentrouter.NewContentRoutingClient(resClient)
+ //cid := peer.ToCid(pid).String()
+ //log.Println("CID", cid)
+
+ pi, err := cr.FindPeer(context.Background(), pid)
+ log.Println(err, pi)
+}
+
+// getHostAddress returns the first address of the host, with peer ID added.
+func getHostAddress(ha host.Host) []string {
+ // Build host multiaddress
+ hostAddr, _ := multiaddr.NewMultiaddr(fmt.Sprintf("/p2p/%s", ha.ID()))
+
+ res := []string{}
+ // Now we can build a full multiaddress to reach this host
+ // by encapsulating both addresses:
+ addr := ha.Addrs()
+ for _, aa := range addr {
+ res = append(res, aa.Encapsulate(hostAddr).String())
+ }
+ return res
+}
+
+
+func TestP2PHelpers(t *testing.T) {
+ pa, err := P2PAddrFromString("/ip4/149.28.196.14/tcp/4001/p2p/12D3KooWLePVbQbv3PqsDZt6obMcWa99YyqRWjeiCtStSydQ6zjH")
+ if err != nil {
+ t.Fatal(err)
+ }
+ log.Println(pa.ID, pa.Addrs, pa.String())
+
+}
+
+func newHost(t *testing.T, listen multiaddr.Multiaddr) host.Host {
+ h, err := libp2p.New(
+ libp2p.ListenAddrs(listen),
+ )
+ if err != nil {
+ t.Fatal(err)
+ }
+ return h
+}
+
+func TestSimple(t *testing.T) {
+ m1, _ := multiaddr.NewMultiaddr("/ip4/127.0.0.1/tcp/10000")
+ m2, _ := multiaddr.NewMultiaddr("/ip4/127.0.0.1/tcp/10001")
+ bob := newHost(t, m1)
+ alice := newHost(t, m2)
+ defer bob.Close()
+ defer alice.Close()
+
+ bob.Peerstore().AddAddrs(alice.ID(), alice.Addrs(), peerstore.PermanentAddrTTL)
+ alice.Peerstore().AddAddrs(bob.ID(), bob.Addrs(), peerstore.PermanentAddrTTL)
+
+ bob.SetStreamHandler("/test", func(stream network.Stream) {
+
+ })
+
+ ctx := context.Background()
+ //alice.Connect(ctx, bob.ID())
+ s1, err := alice.NewStream(ctx, bob.ID(), "/test")
+ if err != nil {
+ t.Fatal(err)
+ }
+ s1.Stat()
+}
+
+// Test a minimal config
+func TestP2P(t *testing.T) {
+ //a, _, _ := newHost( "5555", test.ALICE_KEYS)
+ //b, _, _ := newHost( "5556", test.BOB_KEYS)
+ a, _, _ := newBlankHost( "5555", test.AliceMeshAuthCfg)
+ b, _, _ := newBlankHost( "5556", test.BobMeshAuthCfg)
+
+ InitEvent(a)
+ InitEvent(b)
+
+ log.Println(a, b)
+
+
+ ctx := context.Background()
+
+ // To connect we need a peer address info
+ // The transport created can Dial with address and peer ID (key)
+ pi, err := P2PAddrFromString(getHostAddress(b)[0])
+ log.Println("Dialing ", pi, "Addrs", b.Addrs())
+ err = a.Connect(ctx, *pi)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ log.Println("Peers: ", a.Peerstore().Peers())
+ for _, p := range a.Peerstore().Peers() {
+ log.Println(a.Peerstore().PeerInfo(p))
+ }
+}
+
+
+func newHostMin(port string, mc *meshauth.MeshCfg) (host.Host, multiaddr.Multiaddr, error) {
+ //// This is in the libp2p format (protobuf).
+ ma := meshauth.NewMeshAuth(mc)
+
+ //key, _ := os.ReadFile("testdata/s1/key")
+ //kb, _ := base64.URLEncoding.DecodeString(string(key))
+ //priv, _ := crypto.UnmarshalPrivateKey(kb)
+
+ priv, _, _ := crypto.ECDSAKeyPairFromKey(ma.Cert.PrivateKey.(*ecdsa.PrivateKey))
+
+ addr, err := multiaddr.NewMultiaddr(fmt.Sprintf("/ip4/0.0.0.0/tcp/%s", port))
+ if err != nil {
+ return nil, nil, err
+ }
+
+ //peerID, err := peer.IDFromPrivateKey(priv)
+
+ opts := []libp2p.Option{
+ libp2p.ListenAddrStrings(fmt.Sprintf("/ip4/0.0.0.0/tcp/%s", port)),
+ libp2p.Identity(priv),
+ libp2p.DisableRelay(),
+ }
+
+ if false {
+ opts = append(opts, libp2p.NoSecurity)
+ }
+
+ h, err := libp2p.New(opts...)
+ return h, addr, err
+}
+
+
+func newBlankHost(port string, mc *meshauth.MeshCfg) (host.Host, multiaddr.Multiaddr, error) {
+ ma := meshauth.NewMeshAuth(mc)
+
+ //// This is in the libp2p format (protobuf).
+ //key, _ := os.ReadFile("testdata/s1/key")
+ //kb, _ := base64.URLEncoding.DecodeString(string(key))
+ //priv, _ := crypto.UnmarshalPrivateKey(kb)
+
+ priv, _, _ := crypto.ECDSAKeyPairFromKey(ma.Cert.PrivateKey.(*ecdsa.PrivateKey))
+
+ tr, multiA, peerID, err := initTransport(port, priv)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ // NewPeerstore creates an in-memory thread-safe collection of peers.
+ // It's the caller's responsibility to call RemovePeer to ensure
+ // that memory consumption of the peerstore doesn't grow unboundedly.
+ ps, _ := pstoremem.NewPeerstore()
+
+ // Must be added - host uses it to find its own key
+ ps.AddPrivKey(peerID, priv)
+
+ // BlankHost is used in testing - usually with a swarm for transport
+ // "BlankHost is the thinest implementation of Host interface."
+ // 2 options - WithConnManager and WithEventBus (default will be created)
+ // Options can provide a non-null ConnMgr
+ // In addition it has a 'mux', bus, network - currently Swarm is the only non-mock impl
+
+ // ConnManager tracks connections to peers, and allows consumers to associate
+ // metadata with each peer.
+ //
+ // It enables connections to be trimmed based on implementation-defined
+ // heuristics. The ConnManager allows libp2p to enforce an upper bound on the
+ // total number of open connections.
+ //
+ // ConnManagers supporting decaying tags implement Decayer. Use the
+ // SupportsDecay function to safely cast an instance to Decayer, if supported.
+ cm, err := connmgr.NewConnManager(1, 3)
+
+ eb := eventbus.NewBus(eventbus.WithMetricsTracer(eventbus.NewMetricsTracer()))
+
+ // The 'swarm' is responsible for handshake in user-space using the protocol WorkloadID.
+ // No metadata.
+ /*
+ The IPFS Network package handles all of the peer-to-peer networking. It connects to other hosts, it encrypts communications, it muxes messages between the network's client services and target hosts. It has multiple subcomponents:
+
+ - `Conn` - a connection to a single Peer
+ - `MultiConn` - a set of connections to a single Peer
+ - `SecureConn` - an encrypted (TLS-like) connection
+ - `Swarm` - holds connections to Peers, multiplexes from/to each `MultiConn`
+ - `Muxer` - multiplexes between `Services` and `Swarm`. Handles `Request/Reply`.
+ - `Service` - connects between an outside client service and Network.
+ - `Handler` - the client service part that handles requests
+
+ */
+ n, _ := swarm.NewSwarm(peerID, ps, eb)
+ n.AddTransport(tr)
+ n.AddListenAddr(multiA)
+ log.Println(n.ListenAddresses())
+
+ h := blank.NewBlankHost(n, blank.WithEventBus(eb), blank.WithConnectionManager(cm))
+
+
+ return h, multiA, err
+}
+
+// initTransport will return a configured transport for the port.
+//
+func initTransport(port string, priv crypto.PrivKey) (transport.Transport, multiaddr.Multiaddr, peer.ID, error) {
+ addr, err := multiaddr.NewMultiaddr(fmt.Sprintf("/ip4/0.0.0.0/tcp/%s", port))
+ if err != nil {
+ return nil, nil, "", err
+ }
+
+ peerID, err := peer.IDFromPrivateKey(priv)
+ if err != nil {
+ return nil, nil, "", err
+ }
+
+ // TODO: try webtransport
+ // Don't bother with websocket
+
+ // Set limits, track stuff
+ rm := &network.NullResourceManager{}
+
+ smu := []upgrader.StreamMuxer{{ID: yamux.ID, Muxer: yamux.DefaultTransport}}
+ // Security - upgrades accepted and initiated conn
+ //id := n.LocalPeer()
+ //pk := n.Peerstore().PrivKey(id)
+ //st := insecure.NewWithIdentity(insecure.ID, peerID, priv)
+ st, _ := tls.New(tls.ID, priv, smu)
+
+ u, err := upgrader.New([]sec.SecureTransport{st},
+ smu, nil, nil,
+ nil)
+
+ t, err := tcp.NewTCPTransport(u, rm)
+
+ ln, err := t.Listen(addr)
+ if err != nil {
+ return nil, nil, "", err
+ }
+
+ go func() {
+
+ fmt.Printf("Listening. Now run: go run cmd/client/main.go %s %s\n", ln.Multiaddr(), peerID)
+ for {
+ conn, err := ln.Accept()
+ if err != nil {
+ log.Println("Listen stop", ln.Multiaddr(), err)
+ return
+ }
+ log.Printf("Accepted new connection from %s (%s)\n", conn.RemotePeer(), conn.RemoteMultiaddr())
+ log.Println(conn.RemotePeer().String(), conn.RemoteMultiaddr().String(),
+ conn.RemotePublicKey())
+
+ go func() {
+ if err := handleConn(conn); err != nil {
+ log.Printf("handling conn failed: %s", err.Error())
+ }
+ }()
+ }
+ }()
+
+ return t, addr, peerID, nil
+}
+
+func handleConn(conn transport.CapableConn) error {
+ str, err := conn.AcceptStream()
+ if err != nil {
+ return err
+ }
+ data, err := ioutil.ReadAll(str)
+ if err != nil {
+ return err
+ }
+ log.Printf("Received: %s\n", data)
+ if _, err := str.Write([]byte(data)); err != nil {
+ return err
+ }
+ return str.Close()
+}
diff --git a/pkg/ipfs/go.mod b/pkg/ipfs/go.mod
new file mode 100644
index 0000000..39bf7d1
--- /dev/null
+++ b/pkg/ipfs/go.mod
@@ -0,0 +1,122 @@
+module github.com/costinm/ugate/pkg/ipfs
+
+go 1.21
+
+toolchain go1.21.3
+
+//replace github.com/libp2p/go-libp2p-webrtc-direct => ../../go-libp2p-webrtc-direct
+replace github.com/costinm/ugate => ../..
+
+require (
+ github.com/costinm/meshauth v0.0.0-20240122023105-adbc83696066
+ github.com/costinm/ugate v0.0.0-00010101000000-000000000000
+ github.com/ipfs/boxo v0.17.0
+ github.com/ipfs/go-cid v0.4.1
+ github.com/ipfs/go-datastore v0.6.0
+ github.com/ipfs/go-log v1.0.5
+ github.com/libp2p/go-libp2p v0.32.2
+ github.com/libp2p/go-libp2p-kad-dht v0.25.2
+ github.com/libp2p/go-libp2p-record v0.2.0
+ github.com/multiformats/go-multiaddr v0.12.2
+ github.com/multiformats/go-multihash v0.2.3
+)
+
+require (
+ github.com/benbjohnson/clock v1.3.5 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/containerd/cgroups v1.1.0 // indirect
+ github.com/coreos/go-systemd/v22 v22.5.0 // indirect
+ github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d // indirect
+ github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
+ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
+ github.com/docker/go-units v0.5.0 // indirect
+ github.com/elastic/gosigar v0.14.2 // indirect
+ github.com/flynn/noise v1.0.1 // indirect
+ github.com/francoispqt/gojay v1.2.13 // indirect
+ github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
+ github.com/godbus/dbus/v5 v5.1.0 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/google/gopacket v1.1.19 // indirect
+ github.com/google/pprof v0.0.0-20231229205709-960ae82b1e42 // indirect
+ github.com/google/uuid v1.5.0 // indirect
+ github.com/gorilla/websocket v1.5.0 // indirect
+ github.com/hashicorp/errwrap v1.1.0 // indirect
+ github.com/hashicorp/go-multierror v1.1.1 // indirect
+ github.com/hashicorp/golang-lru v1.0.2 // indirect
+ github.com/huin/goupnp v1.3.0 // indirect
+ github.com/ipfs/go-log/v2 v2.5.1 // indirect
+ github.com/ipld/go-ipld-prime v0.21.0 // indirect
+ github.com/jackpal/go-nat-pmp v1.0.2 // indirect
+ github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
+ github.com/jbenet/goprocess v0.1.4 // indirect
+ github.com/klauspost/compress v1.17.4 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.6 // indirect
+ github.com/koron/go-ssdp v0.0.4 // indirect
+ github.com/libp2p/go-buffer-pool v0.1.0 // indirect
+ github.com/libp2p/go-cidranger v1.1.0 // indirect
+ github.com/libp2p/go-flow-metrics v0.1.0 // indirect
+ github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
+ github.com/libp2p/go-libp2p-kbucket v0.6.3 // indirect
+ github.com/libp2p/go-libp2p-routing-helpers v0.7.3 // indirect
+ github.com/libp2p/go-msgio v0.3.0 // indirect
+ github.com/libp2p/go-nat v0.2.0 // indirect
+ github.com/libp2p/go-netroute v0.2.1 // indirect
+ github.com/libp2p/go-reuseport v0.4.0 // indirect
+ github.com/libp2p/go-yamux/v4 v4.0.1 // indirect
+ github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
+ github.com/miekg/dns v1.1.57 // indirect
+ github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
+ github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
+ github.com/minio/sha256-simd v1.0.1 // indirect
+ github.com/mr-tron/base58 v1.2.0 // indirect
+ github.com/multiformats/go-base32 v0.1.0 // indirect
+ github.com/multiformats/go-base36 v0.2.0 // indirect
+ github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect
+ github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
+ github.com/multiformats/go-multibase v0.2.0 // indirect
+ github.com/multiformats/go-multicodec v0.9.0 // indirect
+ github.com/multiformats/go-multistream v0.5.0 // indirect
+ github.com/multiformats/go-varint v0.0.7 // indirect
+ github.com/onsi/ginkgo/v2 v2.13.2 // indirect
+ github.com/opencontainers/runtime-spec v1.1.0 // indirect
+ github.com/opentracing/opentracing-go v1.2.0 // indirect
+ github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/polydawn/refmt v0.89.0 // indirect
+ github.com/prometheus/client_golang v1.18.0 // indirect
+ github.com/prometheus/client_model v0.5.0 // indirect
+ github.com/prometheus/common v0.45.0 // indirect
+ github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/quic-go/qpack v0.4.0 // indirect
+ github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
+ github.com/quic-go/quic-go v0.40.1 // indirect
+ github.com/quic-go/webtransport-go v0.6.0 // indirect
+ github.com/raulk/go-watchdog v1.3.0 // indirect
+ github.com/spaolacci/murmur3 v1.1.0 // indirect
+ github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
+ go.opencensus.io v0.24.0 // indirect
+ go.opentelemetry.io/otel v1.21.0 // indirect
+ go.opentelemetry.io/otel/metric v1.21.0 // indirect
+ go.opentelemetry.io/otel/trace v1.21.0 // indirect
+ go.uber.org/dig v1.17.1 // indirect
+ go.uber.org/fx v1.20.1 // indirect
+ go.uber.org/mock v0.4.0 // indirect
+ go.uber.org/multierr v1.11.0 // indirect
+ go.uber.org/zap v1.26.0 // indirect
+ golang.org/x/crypto v0.18.0 // indirect
+ golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
+ golang.org/x/mod v0.14.0 // indirect
+ golang.org/x/net v0.20.0 // indirect
+ golang.org/x/sync v0.6.0 // indirect
+ golang.org/x/sys v0.16.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ golang.org/x/tools v0.16.1 // indirect
+ gonum.org/v1/gonum v0.14.0 // indirect
+ google.golang.org/protobuf v1.32.0 // indirect
+ lukechampine.com/blake3 v1.2.1 // indirect
+)
diff --git a/pkg/ipfs/go.sum b/pkg/ipfs/go.sum
new file mode 100644
index 0000000..b789135
--- /dev/null
+++ b/pkg/ipfs/go.sum
@@ -0,0 +1,589 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo=
+dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
+dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
+dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
+dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
+git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
+github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
+github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
+github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE=
+github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
+github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
+github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
+github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/costinm/meshauth v0.0.0-20240122023105-adbc83696066 h1:R/c3jsObom0gLFvrz0BDHliNJS53uT9ZtPo+Ak3diXk=
+github.com/costinm/meshauth v0.0.0-20240122023105-adbc83696066/go.mod h1:DyjbOGzDaVKYEQhuv4CrS/wZqplESvKaLCvF11hRgPs=
+github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d h1:SsxuU+DSeqPeY2JHrBp5qfG3PdIjlrfb2VZck7V7OnE=
+github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d/go.mod h1:Ez/sUx4fAqKWesQrTaoVjH6Lyi2x6QWW0fhcKvhe28g=
+github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU=
+github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U=
+github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y=
+github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
+github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs=
+github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4=
+github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
+github.com/flynn/noise v1.0.1 h1:vPp/jdQLXC6ppsXSj/pM3W1BIJ5FEHE2TulSJBpb43Y=
+github.com/flynn/noise v1.0.1/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag=
+github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk=
+github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
+github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
+github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
+github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
+github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
+github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
+github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
+github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
+github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo=
+github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20231229205709-960ae82b1e42 h1:dHLYa5D8/Ta0aLR2XcPsrkpAgGeFs6thhMcQK0oQ0n8=
+github.com/google/pprof v0.0.0-20231229205709-960ae82b1e42/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
+github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
+github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
+github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c h1:7lF+Vz0LqiRidnzC1Oq86fpX1q/iEv2KJdrCtttYjT4=
+github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
+github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
+github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
+github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
+github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
+github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
+github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
+github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
+github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
+github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
+github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
+github.com/ipfs/boxo v0.17.0 h1:fVXAb12dNbraCX1Cdid5BB6Kl62gVLNVA+e0EYMqAU0=
+github.com/ipfs/boxo v0.17.0/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80=
+github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s=
+github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk=
+github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk=
+github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8=
+github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
+github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
+github.com/ipfs/go-ipfs-util v0.0.3 h1:2RFdGez6bu2ZlZdI+rWfIdbQb1KudQp3VGwPtdNCmE0=
+github.com/ipfs/go-ipfs-util v0.0.3/go.mod h1:LHzG1a0Ig4G+iZ26UUOMjHd+lfM84LZCrn17xAKWBvs=
+github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8=
+github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo=
+github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g=
+github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY=
+github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI=
+github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH9C2E=
+github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ=
+github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
+github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
+github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA=
+github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk=
+github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk=
+github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o=
+github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
+github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU=
+github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
+github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
+github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
+github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
+github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
+github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
+github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0=
+github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
+github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
+github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c=
+github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic=
+github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM=
+github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro=
+github.com/libp2p/go-libp2p v0.32.2 h1:s8GYN4YJzgUoyeYNPdW7JZeZ5Ee31iNaIBfGYMAY4FQ=
+github.com/libp2p/go-libp2p v0.32.2/go.mod h1:E0LKe+diV/ZVJVnOJby8VC5xzHF0660osg71skcxJvk=
+github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
+github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
+github.com/libp2p/go-libp2p-kad-dht v0.25.2 h1:FOIk9gHoe4YRWXTu8SY9Z1d0RILol0TrtApsMDPjAVQ=
+github.com/libp2p/go-libp2p-kad-dht v0.25.2/go.mod h1:6za56ncRHYXX4Nc2vn8z7CZK0P4QiMcrn77acKLM2Oo=
+github.com/libp2p/go-libp2p-kbucket v0.6.3 h1:p507271wWzpy2f1XxPzCQG9NiN6R6lHL9GiSErbQQo0=
+github.com/libp2p/go-libp2p-kbucket v0.6.3/go.mod h1:RCseT7AH6eJWxxk2ol03xtP9pEHetYSPXOaJnOiD8i0=
+github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0=
+github.com/libp2p/go-libp2p-record v0.2.0/go.mod h1:I+3zMkvvg5m2OcSdoL0KPljyJyvNDFGKX7QdlpYUcwk=
+github.com/libp2p/go-libp2p-routing-helpers v0.7.3 h1:u1LGzAMVRK9Nqq5aYDVOiq/HaB93U9WWczBzGyAC5ZY=
+github.com/libp2p/go-libp2p-routing-helpers v0.7.3/go.mod h1:cN4mJAD/7zfPKXBcs9ze31JGYAZgzdABEm+q/hkswb8=
+github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA=
+github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg=
+github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0=
+github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM=
+github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk=
+github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk=
+github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU=
+github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ=
+github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s=
+github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU=
+github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ=
+github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4=
+github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
+github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk=
+github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
+github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
+github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
+github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
+github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk=
+github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8=
+github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms=
+github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc=
+github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU=
+github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc=
+github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s=
+github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
+github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
+github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
+github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
+github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
+github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
+github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE=
+github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=
+github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=
+github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
+github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo=
+github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4=
+github.com/multiformats/go-multiaddr v0.12.2 h1:9G9sTY/wCYajKa9lyfWPmpZAwe6oV+Wb1zcmMS1HG24=
+github.com/multiformats/go-multiaddr v0.12.2/go.mod h1:GKyaTYjZRdcUhyOetrxTk9z0cW+jA/YrnqTOvKgi44M=
+github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A=
+github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk=
+github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E=
+github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo=
+github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=
+github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=
+github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg=
+github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k=
+github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew=
+github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U=
+github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM=
+github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE=
+github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA=
+github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
+github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
+github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
+github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
+github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
+github.com/onsi/ginkgo/v2 v2.13.2 h1:Bi2gGVkfn6gQcjNjZJVO8Gf0FHzMPf2phUei9tejVMs=
+github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM=
+github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
+github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
+github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
+github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
+github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
+github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
+github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
+github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
+github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4=
+github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw=
+github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
+github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
+github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
+github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
+github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
+github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
+github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
+github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
+github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
+github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
+github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs=
+github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
+github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1Q=
+github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c=
+github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY=
+github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc=
+github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk=
+github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
+github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
+github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
+github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
+github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
+github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM=
+github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0=
+github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
+github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
+github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw=
+github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI=
+github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU=
+github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag=
+github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg=
+github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw=
+github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y=
+github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
+github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q=
+github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ=
+github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I=
+github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0=
+github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ=
+github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk=
+github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
+github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
+github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4=
+github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw=
+github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs=
+github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
+github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg=
+github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM=
+github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
+github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
+github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
+github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
+github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
+github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
+github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ=
+github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
+github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=
+github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
+go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
+go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
+go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
+go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
+go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
+go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
+go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
+go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
+go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
+go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc=
+go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE=
+go.uber.org/fx v1.20.1 h1:zVwVQGS8zYvhh9Xxcu4w1M6ESyeMzebzj2NbSayZ4Mk=
+go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg=
+go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
+go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
+go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo=
+go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
+go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
+go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
+go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
+go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
+go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
+golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
+golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
+golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM=
+golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
+golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
+golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
+golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
+golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
+golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
+golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0=
+gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU=
+google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
+google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
+google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
+google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
+google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
+google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
+google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
+honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI=
+lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
+sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
+sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=
diff --git a/pkg/ipfs/libp2p.go b/pkg/ipfs/libp2p.go
new file mode 100644
index 0000000..7b1a493
--- /dev/null
+++ b/pkg/ipfs/libp2p.go
@@ -0,0 +1,113 @@
+//go:build !IPFSLITE
+// +build !IPFSLITE
+
+package ipfs
+
+import (
+ "context"
+ "crypto/ecdsa"
+ "fmt"
+ "github.com/costinm/meshauth"
+ "github.com/costinm/ugate"
+ "github.com/libp2p/go-libp2p/core/network"
+ "log"
+ "net"
+
+ "github.com/ipfs/boxo/routing/http/client"
+ "github.com/ipfs/boxo/routing/http/contentrouter"
+
+ "github.com/libp2p/go-libp2p"
+ "github.com/libp2p/go-libp2p/core/crypto"
+ "github.com/libp2p/go-libp2p/core/host"
+ "github.com/libp2p/go-libp2p/core/peer"
+ "github.com/libp2p/go-libp2p/core/routing"
+ "github.com/multiformats/go-multiaddr"
+)
+
+// ConnectionGater, Server
+type IPFS struct {
+ Host host.Host
+}
+
+func (ipfs *IPFS) FindPeer(ctx context.Context, id peer.ID) (peer.AddrInfo, error) {
+ return peer.AddrInfo{ID: id}, nil
+}
+
+func (ipfs *IPFS) DialContext(ctx context.Context, net string, addr string) (net.Conn, error) {
+ return nil, nil
+}
+
+func Init(ug *ugate.UGate) {
+ ug.ListenerProto["ipfs"] = func(gate *ugate.UGate, l *meshauth.PortListener) error {
+ InitIPFS(ug.Auth, l.GetPort())
+ return nil
+ }
+}
+
+// InitIPFS creates LibP2P compatible transport.
+// Identity is based on the EC256 workload identity in auth.
+//
+// Routing is based on HTTP.
+//
+// Main purpose of this integration is to take advantage of public
+// auto-relay code and infra, for control/signaling channels.
+//
+func InitIPFS(auth *meshauth.MeshAuth, p2pport int32) *IPFS {
+ p2p := &IPFS{
+
+ }
+
+ sk, _, _ := crypto.ECDSAKeyPairFromKey(auth.Cert.PrivateKey.(*ecdsa.PrivateKey))
+
+ la := []multiaddr.Multiaddr{}
+ listen, err := multiaddr.NewMultiaddr(fmt.Sprintf("/ip4/0.0.0.0/tcp/%d", p2pport))
+ la = append(la, listen)
+
+ finalOpts := []libp2p.Option{
+ libp2p.Identity(sk),
+ libp2p.ListenAddrs(la...),
+ libp2p.ConnectionGater(p2p),
+ }
+
+ // Use a HTTP gateway for resolution - https://ipfs.io or https://cloudflare-ipfs.com/
+ // Can also use mdns locally
+ finalOpts = append(finalOpts,
+ libp2p.Routing(func(h host.Host) (routing.PeerRouting, error) {
+
+ resClient, err := client.New("http://127.0.0.1:11015")
+ cr := contentrouter.NewContentRoutingClient(resClient)
+ return cr, err
+ }))
+
+
+ h, err := libp2p.New(finalOpts...)
+ if err != nil {
+ panic(err)
+ }
+
+ p2p.Host = h
+
+ // Add our stream handlers
+ h.SetStreamHandler(Protocol, streamHandler)
+
+ // Use the host 'event bus' to subscribe to all events.
+ InitEvent(p2p.Host)
+
+ for _, a := range h.Addrs() {
+ log.Println("IPFS Addr: ", a.String() + "/p2p/" + h.ID().String())
+ }
+ log.Println("IPFS CID: ", peer.ToCid(h.ID()).String())
+
+ return p2p
+}
+
+
+const Protocol = "/ugate/0.0.1"
+
+func streamHandler(stream network.Stream) {
+ // Remember to close the stream when we are done.
+ defer stream.Close()
+
+ log.Println("NEW STREAM: ", stream.Conn().RemotePeer(), stream.Conn().RemotePublicKey())
+
+}
diff --git a/pkg/ipfs/libp2p_and_mesh.md b/pkg/ipfs/libp2p_and_mesh.md
new file mode 100644
index 0000000..056b6c2
--- /dev/null
+++ b/pkg/ipfs/libp2p_and_mesh.md
@@ -0,0 +1,40 @@
+# Background
+
+# Simple usage
+
+Because LibP2P and IPFS are quite heavy and complex, and use non-standard variation of protocols - they don't make
+a very good option as core protocol for sidecars or per-node proxies.
+
+Having Ingress and Egress gateways that support the core LibP2P protocols and bridge to mesh protocol (CONNECT or
+others) seem a much safer and simpler option in the data path.
+
+The Gateways can use the mesh control plane and discovery - including K8S - to locate other Gateways, without
+the use of DHT.
+
+# Public DHT integration
+
+A node that enables DHT becomes a full participant in the discovery and metadata storage protocol, which is
+quite expensive. Resolving via DHT is also pretty slow - the nodes storing the key are remote.
+
+It can still be useful to have one (or few) servers - to reduce the use of IP addresses they may use
+a couple of different ports in the gateway. The peer ID of the DHT nodes will be discoverable (slowly)
+in DHT as a backup and for external clients.
+
+The big problem is that exposing services by internal nodes (gateways or workloads using libp2p) is not possible
+with the normal protocol unless they are participatin in DHT.
+
+There is a simple solution: use IPNS to store records for each peer instead of peer ID.
+
+# Private DHT
+
+# Using ideas from LibP2P in mesh
+
+The core idea is tracking the public key (or SHA) along with the direct and relayed addresses. For regular
+mesh workloads it is expected that a common root CA is used - or Cluster configures trusted roots for multiple
+hosts in a more efficient way.
+
+For individual hosts that are not part of a cluster - it is useful to save the public key hash or even the
+full key in the pod status. The private key can also be used with SSH and push protocols as well as for signing.
+
+
+
diff --git a/ugated/pkg/ipfs/readme.md b/pkg/ipfs/readme.md
similarity index 56%
rename from ugated/pkg/ipfs/readme.md
rename to pkg/ipfs/readme.md
index 11fa85a..a32af7e 100644
--- a/ugated/pkg/ipfs/readme.md
+++ b/pkg/ipfs/readme.md
@@ -1,3 +1,59 @@
+# TL;DR
+
+Experimental code to extract some ideas from IPFS/Libp2p - but no plan to use it, too many
+non-interoperable changes to protocols and complexity that is not needed.
+
+# Important ideas
+
+1. Pair a set of IP addresses with the SHA(public key)
+2. Use SHA(public key) of each host (workload) as the identity to lookup IPs.
+3. Support multiple protocols
+4. built-in NAT/ICE
+
+Not viable but interesting for corner use cases:
+1. Global DHT for discovery (DNS replacement). In rare cases it may be useful, but a federated model is still decentralized but far more efficient/fast.
+2. Replacing DNS names with paths.
+3. Using unfriendly names (effectively UUIDs) for any human interaction.
+
+Major flaws:
+1. No access control ( there is some complicated way to have a separated mesh)
+2. No separation between infra nodes (well connected, maintained) and small user nodes.
+3. DHT treats everything as a reachable peer
+
+
+
+# Intro
+
+IPFS and libp2p are based on some (over-)complicated NIH protocols, but at the
+core some good ideas. While much simpler implementations would be desirable, IPFS
+also has a community and infrastructure that is useful
+
+Similar (over complex, NIH) infra exists for Syncthing, Onion/Tor, etc - but
+libp2p is more oriented to standalone use as a library and easier to run as
+a private network.
+
+Example infra:
+
+- cid.contact - route CID to host
+ - alternative to using the DHT - too much bandwidth
+ - based on gossip pubsub instead of DHT
+
+# Local DHT
+
+The main problem with DHT is traffic and speed. This is in part due to the long-distance calls.
+
+Libp2p DHT is tied to the protocols - and expects the peers to be connected.
+
+It looks like bittorent DHT is ligher and simpler. Not clear which has more nodes.
+
+
+# HTTP routing
+
+https://specs.ipfs.tech/routing/http-routing-v1/ - URL /routing/v1/providers/{cid}, returns
+a json with Addrs. Also /routing/v1/peers/{peer-id} - and ipns - returning signed record.
+
+https://docs.ipfs.tech/how-to/address-ipfs-on-web/#path-gateway - various URL and DNS schemas
+
# Concepts
## Discovery
diff --git a/pkg/ipfs/testdata/s1/key b/pkg/ipfs/testdata/s1/key
new file mode 100644
index 0000000..9ea7669
--- /dev/null
+++ b/pkg/ipfs/testdata/s1/key
@@ -0,0 +1 @@
+CAESQDXW7-QhEhXWdgDUg7AvhlJU2eN-2IzMoDOWl_P271npGnwf4KUMcqufSakCfFi373F8C2HqINHxWalQwk3pVrc=
diff --git a/ugated/pkg/ipfs/cmd/testdata/s2/kube.json b/pkg/ipfs/testdata/s2/kube.json
similarity index 100%
rename from ugated/pkg/ipfs/cmd/testdata/s2/kube.json
rename to pkg/ipfs/testdata/s2/kube.json
diff --git a/ugated/pkg/ipfs/cmd/testdata/s2/ugate.json b/pkg/ipfs/testdata/s2/ugate.json
similarity index 100%
rename from ugated/pkg/ipfs/cmd/testdata/s2/ugate.json
rename to pkg/ipfs/testdata/s2/ugate.json
diff --git a/pkg/ipfs/watch.go b/pkg/ipfs/watch.go
new file mode 100644
index 0000000..be0e577
--- /dev/null
+++ b/pkg/ipfs/watch.go
@@ -0,0 +1,99 @@
+package ipfs
+
+import (
+ "log"
+
+ "github.com/libp2p/go-libp2p/core/control"
+ "github.com/libp2p/go-libp2p/core/event"
+ "github.com/libp2p/go-libp2p/core/host"
+ "github.com/libp2p/go-libp2p/core/network"
+ "github.com/libp2p/go-libp2p/core/peer"
+
+ "github.com/multiformats/go-multiaddr"
+)
+
+
+// ConnectionGater implementation
+// WIP - will implement a policy to allow/deny based on RBAC
+
+func (p2p *IPFS) InterceptPeerDial(p peer.ID) (allow bool) {
+ log.Println("IPFS: peerDial", p)
+ return true
+}
+
+
+func (p2p *IPFS) InterceptAddrDial(id peer.ID, m multiaddr.Multiaddr) (allow bool) {
+ log.Println("IPFS: addrDial", id, m)
+ return true
+}
+
+func (p2p *IPFS) InterceptAccept(multiaddrs network.ConnMultiaddrs) (allow bool) {
+ t, _ := multiaddrs.RemoteMultiaddr().MarshalText()
+ t1, _ := multiaddrs.LocalMultiaddr().MarshalText()
+ log.Println("IPFS: accept", string(t), string(t1))
+ return true
+}
+
+
+func (p2p *IPFS) InterceptSecured(direction network.Direction, id peer.ID, multiaddrs network.ConnMultiaddrs) (allow bool) {
+ t, _ := multiaddrs.RemoteMultiaddr().MarshalText()
+ log.Println("IPFS: secured", direction, id, string(t), dialCnt, peerDialCnt)
+ return true
+}
+
+func (p2p *IPFS) InterceptUpgraded(conn network.Conn) (allow bool, reason control.DisconnectReason) {
+ t, _ := conn.RemoteMultiaddr().MarshalText()
+ rmt, _ := conn.RemoteMultiaddr().MarshalText()
+ log.Println("IPFS: upgraded", conn.RemotePeer(), string(t),
+ string(rmt), conn.ID())
+ return true, 0
+}
+
+// Track events in the P2P implementation
+func InitEvent(h host.Host) {
+
+ //log.Println(h.EventBus().GetAllEventTypes())
+
+ sub, err := h.EventBus().Subscribe(event.WildcardSubscription)
+ if err != nil {
+ log.Println(err)
+ }
+
+ connChgCnt :=0
+
+ go func() {
+ defer sub.Close()
+ for e := range sub.Out() {
+ switch v := e.(type) {
+ case peer.ID:
+ log.Println("IPFS Peer ", v)
+
+ case event.EvtLocalAddressesUpdated:
+ log.Println("IPFS local ", v)
+
+ case event.EvtLocalReachabilityChanged:
+ log.Println("IPFS reach ", v)
+
+ case event.EvtPeerProtocolsUpdated:
+ if len(v.Added) > 0 || len(v.Removed) > 0 {
+ log.Println("IPFS PeerProto ", v, v.Added, v.Removed)
+ }
+ case event.EvtPeerIdentificationFailed:
+ //log.Println("IPFS Peer ", v)
+ case event.EvtPeerIdentificationCompleted:
+ //log.Println("IPFS Peer ", v)
+ case event.EvtPeerConnectednessChanged:
+ connChgCnt++
+ if connChgCnt % 50 == 0 {
+ log.Println("PeerConnectednesChanged 50", v)
+ }
+ default:
+ log.Printf("IPFS Event: %T %v\n", e, e)
+ }
+ }
+
+ }()
+
+ //_, ch,routing.RegisterForQueryEvents(context.Background())
+}
+
diff --git a/pkg/iptables/iptables.go b/pkg/iptables/iptables.go
deleted file mode 100644
index 0be7ff8..0000000
--- a/pkg/iptables/iptables.go
+++ /dev/null
@@ -1,246 +0,0 @@
-package iptables
-
-import (
- "errors"
- "log"
- "net"
- "os"
- "syscall"
- "time"
- "unsafe"
-
- "github.com/costinm/hbone/nio"
- "github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/ugatesvc"
-)
-
-func IptablesCapture(ug *ugatesvc.UGate, addr string, in bool) error {
- nl, err := net.Listen("tcp", addr)
- if err != nil {
- log.Println("Failed to listen", err)
- return err
- }
- ipo := &IptablesOut{
- Gate: ug,
- }
- ipi := &IptablesIn{
- Gate: ug,
- }
- for {
- remoteConn, err := nl.Accept()
- ugate.VarzAccepted.Add(1)
- if ne, ok := err.(net.Error); ok {
- ugate.VarzAcceptErr.Add(1)
- if ne.Temporary() {
- time.Sleep(100 * time.Millisecond)
- continue
- }
- }
- if err != nil {
- log.Println("Accept error, closing iptables listener ", err)
- return err
- }
-
- go func() {
- str := nio.GetStream(remoteConn, remoteConn)
- ug.OnStream(str)
- defer ug.OnStreamDone(str)
-
- if in {
- ipi.Handle(str)
- } else {
- ipo.Handle(str)
- }
- }()
- }
-
- return nil
-}
-
-type IptablesOut struct {
- Gate *ugatesvc.UGate
-}
-
-type IptablesIn struct {
- Gate *ugatesvc.UGate
-}
-
-func (ipo *IptablesOut) Handle(str *nio.Stream) error {
- str.Dest, str.ReadErr = SniffIptables(str)
- if str.ReadErr != nil {
- return str.ReadErr
- }
-
- // str.Dest is a VIP or real IP. It will be mapped to a real
- // destination.
- cfg := ipo.Gate.FindRouteOut(str)
- if cfg.ForwardTo != "" {
- str.Dest = cfg.ForwardTo
- }
-
- str.Route = cfg
- str.Type = "ipto"
- str.Direction = nio.StreamTypeOut
-
- str.ReadErr = ipo.Gate.HandleStream(str)
- return str.ReadErr
-}
-
-// Similar with Istio ingress capture. Original DST is the intended
-// addr and port.
-func (ipo *IptablesIn) Handle(str *nio.Stream) error {
-
- //case ugate.ProtoIPTablesIn:
- // // iptables is replacing the conn - process before creating the buffer
- // DestAddr is also set as a sideeffect
- str.Dest, str.ReadErr = SniffIptables(str)
- if str.ReadErr != nil {
- return str.ReadErr
- }
-
- // Local routes - redirect or additional manipulation.
- cfg := ipo.Gate.FindRouteIn(str)
- if cfg.ForwardTo != "" {
- str.Dest = cfg.ForwardTo
- }
- str.Route = cfg
- //str.Type = cfg.Protocol
- str.Direction = nio.StreamTypeIn
-
- str.ReadErr = ipo.Gate.HandleStream(str)
- return str.ReadErr
-}
-
-// Status:
-// - TCP capture with redirect works
-// - capture with TPROXY is not possible - TPROXY is on the PREROUTING chain only,
-// not touched by output packets.
-// https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
-//
-// It works great for transparent proxy in a gateway/router - however same can be also done using the TUN
-// and routing to the TUN using iptables or other means.
-
-// Using: https://github.com/Snawoot/transocks/blob/v1.0.0/original_dst_linux.go
-// ServeConn is used to serve a single TCP UdpNat.
-// See https://github.com/cybozu-go/transocks
-// https://github.com/ryanchapman/go-any-proxy/blob/master/any_proxy.go,
-// and other examples.
-// Based on REDIRECT.
-func SniffIptables(str *nio.Stream) (string, error) {
- if _, ok := str.Out.(*net.TCPConn); !ok {
- return "", errors.New("invalid connection for iptbles")
- }
- ta, err := getOriginalDst(str.Out.(*net.TCPConn))
- if err != nil {
- return "", err
- }
- str.DestAddr = ta
-
- return ta.String(), nil
-}
-
-const (
- SO_ORIGINAL_DST = 80
- IP6T_SO_ORIGINAL_DST = 80
-)
-
-func getsockopt(s int, level int, optname int, optval unsafe.Pointer, optlen *uint32) (err error) {
- _, _, e := syscall.Syscall6(
- syscall.SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(optname),
- uintptr(optval), uintptr(unsafe.Pointer(optlen)), 0)
- if e != 0 {
- return e
- }
- return
-}
-
-// Should be used only for REDIRECT capture.
-func getOriginalDst(clientConn *net.TCPConn) (rawaddr *net.TCPAddr, err error) {
- // test if the underlying fd is nil
- remoteAddr := clientConn.RemoteAddr()
- if remoteAddr == nil {
- err = errors.New("fd is nil")
- return
- }
-
- // net.TCPConn.File() will cause the receiver's (clientConn) socket to be placed in blocking mode.
- // The workaround is to take the File returned by .File(), do getsockopt() to get the original
- // destination, then create a new *net.TCPConn by calling net.Stream.FileConn(). The new TCPConn
- // will be in non-blocking mode. What a pain.
- clientConnFile, err := clientConn.File()
- if err != nil {
- return
- }
- defer clientConnFile.Close()
-
- fd := int(clientConnFile.Fd())
- if err = syscall.SetNonblock(fd, true); err != nil {
- return
- }
-
- // Get original destination
- // this is the only syscall in the Golang libs that I can find that returns 16 bytes
- // Example result: &{Multiaddr:[2 0 31 144 206 190 36 45 0 0 0 0 0 0 0 0] Interface:0}
- // port starts at the 3rd byte and is 2 bytes long (31 144 = port 8080)
- // IPv6 version, didn't find a way to detect network family
- //addr, err := syscall.GetsockoptIPv6Mreq(int(clientConnFile.Fd()), syscall.IPPROTO_IPV6, IP6T_SO_ORIGINAL_DST)
- // IPv4 address starts at the 5th byte, 4 bytes long (206 190 36 45)
- v6 := clientConn.LocalAddr().(*net.TCPAddr).IP.To4() == nil
- if v6 {
- var addr syscall.RawSockaddrInet6
- var len uint32
- len = uint32(unsafe.Sizeof(addr))
- err = getsockopt(fd, syscall.IPPROTO_IPV6, IP6T_SO_ORIGINAL_DST,
- unsafe.Pointer(&addr), &len)
- if err != nil {
- return
- }
- ip := make([]byte, 16)
- for i, b := range addr.Addr {
- ip[i] = b
- }
- pb := *(*[2]byte)(unsafe.Pointer(&addr.Port))
- return &net.TCPAddr{
- IP: ip,
- Port: int(pb[0])*256 + int(pb[1]),
- }, nil
- } else {
- var addr syscall.RawSockaddrInet4
- var len uint32
- len = uint32(unsafe.Sizeof(addr))
- err = getsockopt(fd, syscall.IPPROTO_IP, SO_ORIGINAL_DST,
- unsafe.Pointer(&addr), &len)
- if err != nil {
- return nil, os.NewSyscallError("getsockopt", err)
- }
- ip := make([]byte, 4)
- for i, b := range addr.Addr {
- ip[i] = b
- }
- pb := *(*[2]byte)(unsafe.Pointer(&addr.Port))
- return &net.TCPAddr{
- IP: ip,
- Port: int(pb[0])*256 + int(pb[1]),
- }, nil
- }
-}
-
-//func isLittleEndian() bool {
-// var i int32 = 0x01020304
-// u := unsafe.Pointer(&i)
-// pb := (*byte)(u)
-// b := *pb
-// return (b == 0x04)
-//}
-
-//var (
-// NativeOrder binary.ByteOrder
-//)
-//
-//func init() {
-// if isLittleEndian() {
-// NativeOrder = binary.LittleEndian
-// } else {
-// NativeOrder = binary.BigEndian
-// }
-//}
diff --git a/pkg/iptables/tproxy.go b/pkg/iptables/tproxy.go
deleted file mode 100644
index e6fc5b6..0000000
--- a/pkg/iptables/tproxy.go
+++ /dev/null
@@ -1,157 +0,0 @@
-package iptables
-
-import (
- "encoding/binary"
- "errors"
- "fmt"
- "log"
- "net"
- "os"
- "syscall"
-
- "github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/udp"
-
- "golang.org/x/net/ipv4"
- "golang.org/x/sys/unix"
-)
-
-// WIP: requires root, UDP proxy using orig dest.
-// Only useful for inbound - where we already know the dest.
-
-// To preserve the original srcIP it is also possible to use udp.WriteMsg.
-
-func NewTproxy(udpNat *udp.UDPGate, addr string) (*TProxyUDP, error) {
- var f *os.File
- var err error
-
- f, err = StartUDPTProxyListener(15006)
- if err != nil {
- log.Println("Error starting TPROXY", err)
- return nil, err
- }
- c, err := net.FileConn(f)
- if err != nil {
- return nil, err
- }
-
- lu, ok := c.(*net.UDPConn)
- if !ok {
- return nil, errors.New("failed to cast")
- }
-
- //udpNat.UDPWriter
- return &TProxyUDP{con: lu}, nil
-}
-
-// Handle packets received on the tproxy interface.
-func (tu *TProxyUDP) BlockingLoop(u ugate.UDPHandler) {
- data := make([]byte, 1600)
- oob := ipv4.NewControlMessage(ipv4.FlagDst)
- //oob := make([]byte, 256)
- for {
-
- n, noob, _, addr, err := tu.con.ReadMsgUDP(data[0:], oob)
- if err != nil {
- continue
- }
-
- cm4, err := syscall.ParseSocketControlMessage(oob[0:noob])
- origPort := uint16(0)
- var origIP net.IP
- for _, cm := range cm4 {
- if cm.Header.Type == unix.IP_RECVORIGDSTADDR {
- // \attention: IPv4 only!!!
- // address type, 1 - IPv4, 4 - IPv6, 3 - hostname, only IPv4 is supported now
- rawaddr := make([]byte, 4)
- // raw IP address, 4 bytes for IPv4 or 16 bytes for IPv6, only IPv4 is supported now
- copy(rawaddr, cm.Data[4:8])
- origIP = net.IP(rawaddr)
-
- // Bigendian is the network bit order, seems to be used here.
- origPort = binary.BigEndian.Uint16(cm.Data[2:])
-
- }
- }
- //if cm4.Parse(oob) == nil {
- //dst = cm4.Dst
- //}
- //log.Printf("NOOB %d %d %V %x", noob, flags, cm4, oob[0:noob])
- //if ((cmsg->cmsg_level == SOL_IP) && (cmsg->cmsg_type == IP_RECVORIGDSTADDR))
- //{
- // memcpy (&dstaddr, CMSG_DATA(cmsg), sizeof (dstaddr));
- // dstaddr.sin_family = AF_INET;
- //}
-
- go u.HandleUdp(origIP, origPort, addr.IP, uint16(addr.Port), data[0:n])
- }
-}
-
-// Initialize a port as a TPROXY socket. This can be sent over UDS from the root, and used for
-// UDP capture.
-func StartUDPTProxyListener(port int) (*os.File, error) {
- // TPROXY mode for UDP - alternative is to use REDIRECT and parse
- // /proc/net/nf_conntrack
- s, err := unix.Socket(unix.AF_INET, unix.SOCK_DGRAM, 0)
- if err != nil {
- return nil, err
- }
-
- err = unix.SetsockoptInt(s, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1)
- if err != nil {
- return nil, err
- }
-
- // NET_CAP
- err = unix.SetsockoptInt(s, unix.SOL_IP, unix.IP_TRANSPARENT, 1)
- if err != nil {
- fmt.Println("TRANSPARENT err ", err)
- //return err
- }
-
- err = unix.SetsockoptInt(s, unix.SOL_IP, unix.IP_FREEBIND, 1)
- if err != nil {
- fmt.Println("FREEBIND err ", err)
- //return err
- }
-
- err = unix.SetsockoptInt(s, unix.IPPROTO_IP, unix.IP_RECVORIGDSTADDR, 1)
- if err != nil {
- return nil, err
- }
- log.Println("Openned TPROXY capture port in TRANSPARENT mode ", port)
- err = unix.Bind(s, &unix.SockaddrInet4{
- Port: port,
- })
- if err != nil {
- log.Println("Error binding ", err)
- return nil, err
- }
-
- f := os.NewFile(uintptr(s), "TProxy")
- return f, nil
-}
-
-// Handles UDP packets intercepted using TProxy.
-// Can send packets preserving original IP/port.
-type TProxyUDP struct {
- con *net.UDPConn
-}
-
-// UDP write with source address control.
-func (tudp *TProxyUDP) WriteTo(data []byte, dstAddr *net.UDPAddr, srcAddr *net.UDPAddr) (int, error) {
-
- // Attempt to write as UDP
- cm4 := new(ipv4.ControlMessage)
- cm4.Src = srcAddr.IP
- oob := cm4.Marshal()
- n, _, err := tudp.con.WriteMsgUDP(data, oob, dstAddr)
- if err != nil {
- n, err = tudp.con.WriteToUDP(data, dstAddr)
- if err != nil {
- log.Print("Failed to send DNS ", dstAddr, srcAddr)
- }
- }
-
- return n, err // tudp.con.WriteTo(data, dstAddr)
-}
diff --git a/pkg/local/api.go b/pkg/local/api.go
index 6cc6a21..a0dd1f6 100644
--- a/pkg/local/api.go
+++ b/pkg/local/api.go
@@ -1,15 +1,69 @@
package local
import (
+ "expvar"
"net"
"sync"
+ "time"
"github.com/costinm/meshauth"
- ug "github.com/costinm/ugate/pkg/ugatesvc"
)
+var (
+ MetricActiveNetworks = expvar.NewInt("net_active_interfaces")
+ MetricChangedNetworks = expvar.NewInt("net_changed_interfaces_total")
+ MetricLLReceived = expvar.NewInt("ll_receive_total")
+ MetricLLReceivedAck = expvar.NewInt("ll_receive_ack_total")
+ MetricLLReceiveErr = expvar.NewInt("ll_receive_err_total")
+ MetricLLTotal = expvar.NewInt("ll_peers")
+)
+
+// Information about a node.
+// Sent periodically, signed by the origin - for example as a JWT, or UDP
+// proto.
+// TODO: map it to Pod, IPFS announce
+// TODO: move Wifi discovery to separate package.
+type NodeAnnounce struct {
+ UA string `json:"UA,omitempty"`
+
+ // Non-link local IPs from all interfaces. Includes public internet addresses
+ // and Wifi IP4 address. Used to determine if a node is directly connected.
+ IPs []*net.UDPAddr `json:"addrs,omitempty"`
+
+ // Set if the node is an active Android AP.
+ SSID string `json:"ssid,omitempty"`
+
+ // True if the node is an active Android AP on the interface sending the message.
+ // Will trigger special handling in link-local - if the receiving interface is also
+ // an android client.
+ AP bool `json:"AP,omitempty"`
+
+ Ack bool `json:"ACK,omitempty"`
+
+ // VIP of the direct parent, if this node is connected.
+ // Used to determine the mesh topology.
+ Vpn string `json:"Vpn,omitempty"`
+}
+
+type Node struct {
+ ID string
+ LastSeen time.Time
+
+ // In seconds since first seen, last 100
+ Seen []int `json:"-"`
+ // Information from the node - from an announce or message.
+ // Not trusted, self-signed.
+ NodeAnnounce *NodeAnnounce `json:"info,omitempty"`
+ LastSeen4 time.Time
+ Last4 *net.UDPAddr
+ LastSeen6 time.Time
+ Last6 *net.UDPAddr
+}
+
// link local announcements,discovery and messaging
type LLDiscovery struct {
+ m sync.RWMutex
+ Nodes map[string]*Node
// Will be updated with the list of active interfaces
// by Refresh() calls or provided by Android.
@@ -45,8 +99,6 @@ type LLDiscovery struct {
// Defaults to 6970
baseListenPort int
- gw *ug.UGate
-
// Listening on * for signed messages
// Source for sent messages and multicasts
UDPMsgConn *net.UDPConn
diff --git a/pkg/local/link_local.go b/pkg/local/link_local.go
index 3529a91..40480df 100644
--- a/pkg/local/link_local.go
+++ b/pkg/local/link_local.go
@@ -14,8 +14,6 @@ import (
"time"
"github.com/costinm/meshauth"
- "github.com/costinm/ugate"
- ug "github.com/costinm/ugate/pkg/ugatesvc"
)
var (
@@ -27,24 +25,18 @@ var (
var (
// Received MC announcements from other nodes (include invalid)
- regDN = expvar.NewInt("RegD")
+ regDN = expvar.NewInt("linklocal_received_total")
// Error MC announcements from local nodes
- regDNE = expvar.NewInt("RegDE")
-
- // Client requests to check a peer.
- regDNC = expvar.NewInt("RegDC")
-
- // Errors Client requests to check a peer.
- regDNCE = expvar.NewInt("RegDCE")
+ regDNE = expvar.NewInt("linklocal_received_err_total")
)
-func NewLocal(gw *ug.UGate, auth *meshauth.MeshAuth) *LLDiscovery {
+func NewLocal(port int, auth *meshauth.MeshAuth) *LLDiscovery {
return &LLDiscovery{
mcPort: 5227,
- udpPort: gw.Config.BasePort + 8,
- gw: gw,
+ udpPort: port,
auth: auth,
+ Nodes: map[string]*Node{},
}
}
@@ -69,7 +61,7 @@ func ListenUDP(gw *LLDiscovery) {
// Called after connection to the VPN has been created.
//
// Currently used only for Mesh AP chains.
-func (gw *LLDiscovery) OnLocalNetworkFunc(node *ugate.Cluster, addr *net.UDPAddr, fromMySTA bool) {
+func (gw *LLDiscovery) OnLocalNetworkFunc(node *Node, addr *net.UDPAddr, fromMySTA bool) {
//now := time.Now()
//add := &net.UDPAddr{IP: addr.IP, Zone: addr.Zone, Port: 5222}
@@ -116,7 +108,7 @@ func (gw *LLDiscovery) FixIp6ForHTTP(addr *net.UDPAddr) string {
// or IP6 announce.
//
// Should be called after network changes and announce
-func (gw *LLDiscovery) ensureConnectedUp(laddr *net.UDPAddr, node *ugate.Cluster) error {
+func (gw *LLDiscovery) ensureConnectedUp(laddr *net.UDPAddr, node *Node) error {
//if gw.gw.SSHClientUp != nil {
// return nil
//}
@@ -239,8 +231,8 @@ func mcMessage(gw *LLDiscovery, i *ActiveInterface, isAck bool) []byte {
// VPN VIP
// my client ssid
//
- ann := &ugate.NodeAnnounce{
- UA: gw.gw.Auth.Name,
+ ann := &NodeAnnounce{
+ UA: gw.auth.Name,
IPs: ips(gw.ActiveInterfaces),
//SSID: gw.auth.Config.Conf(gw.auth.Config, "ssid", ""),
Ack: isAck,
@@ -492,11 +484,13 @@ func unicastReaderThread(gw *LLDiscovery, c net.PacketConn, iface *ActiveInterfa
directNode, ann, err := gw.processMCAnnounce(rcv, addr, iface)
if err != nil {
+ MetricLLReceiveErr.Add(1)
if err != selfRegister && err != dup {
- log.Println("MCDirect: Invalid multicast ", err, addr, n, string(rcv[0:len(rcv)-128]))
+ log.Println("MCDirect: Invalid multicast ", err, addr, n)
}
continue
}
+ MetricLLReceived.Add(1)
if addr.IP.To4() != nil {
if time.Now().Sub(directNode.LastSeen4) < 10*time.Second {
@@ -517,8 +511,10 @@ func unicastReaderThread(gw *LLDiscovery, c net.PacketConn, iface *ActiveInterfa
}
}
- log.Println("LL: ACK Received:", directNode.ID, c.LocalAddr(), addr, ann)
+ MetricLLTotal.Set(int64(len(gw.Nodes)))
+ log.Println("LL: ACK Received:", directNode.ID, c.LocalAddr(), addr, ann)
+ MetricLLReceivedAck.Add(1)
}
}
@@ -554,8 +550,9 @@ func (gw *LLDiscovery) multicastReaderThread(c net.PacketConn, iface *ActiveInte
directNode, ann, err := gw.processMCAnnounce(rcv, addr, iface)
if err != nil {
+ regDNE.Add(1)
if err != selfRegister && err != dup {
- log.Println("MCDirect: Invalid multicast ", err, addr, n, string(rcv[0:len(rcv)-128]))
+ log.Println("MCDirect: ann err ", err, addr, n)
}
continue
}
@@ -660,7 +657,7 @@ func (gw *LLDiscovery) HttpGetLLIf(w http.ResponseWriter, r *http.Request) {
//
// Currently the info is only for debugging - all registration happens in the /register handshake,
// using mtls.
-func (gw *LLDiscovery) processMCAnnounce(data []byte, addr *net.UDPAddr, iface *ActiveInterface) (*ugate.Cluster, *ugate.NodeAnnounce, error) {
+func (gw *LLDiscovery) processMCAnnounce(data []byte, addr *net.UDPAddr, iface *ActiveInterface) (*Node, *NodeAnnounce, error) {
dl := len(data)
@@ -679,7 +676,6 @@ func (gw *LLDiscovery) processMCAnnounce(data []byte, addr *net.UDPAddr, iface *
// Check signature. Verified Public key is the identity
err := meshauth.Verify(data[0:dl-64], pub, sig)
if err != nil {
- log.Println("MCDirect: Signature ", err)
return nil, nil, err
}
@@ -689,15 +685,26 @@ func (gw *LLDiscovery) processMCAnnounce(data []byte, addr *net.UDPAddr, iface *
}
// Parse the message
- ann := &ugate.NodeAnnounce{}
+ ann := &NodeAnnounce{}
err = json.Unmarshal(jsonData, ann)
if err != nil {
log.Println("MCDirect: Failed to parse ann", err, string(data[0:dl-128]))
}
now := time.Now()
+ id := meshauth.PublicKeyBase32SHA(pub)
- node := gw.gw.GetOrAddNode(meshauth.IDFromPublicKey(pub))
+ gw.activeMutex.RLock()
+ node := gw.Nodes[id]
+ gw.activeMutex.RUnlock()
+ if node == nil {
+ node = &Node{
+ ID: id,
+ }
+ gw.activeMutex.Lock()
+ gw.Nodes[id] = node
+ gw.activeMutex.Unlock()
+ }
since := int(now.Sub(node.LastSeen) / time.Second)
if since > 2 {
@@ -709,17 +716,8 @@ func (gw *LLDiscovery) processMCAnnounce(data []byte, addr *net.UDPAddr, iface *
}
node.NodeAnnounce = ann
- // ???
- //node.Announces++
- //if strings.Contains(addr.Zone, "p2p") {
- // node.AnnouncesOnP2P++
- //}
- //if ann.AP {
- // node.AnnouncesFromP2P++
- //}
-
- // IP4 addresses don't include zone for some reason...
+ // IP4 addresses don't include zone
if addr.Zone != "" && iface != nil && iface.Name != addr.Zone {
log.Println("MCDirect: Missmatch iface and GW ", addr, iface)
}
@@ -792,14 +790,3 @@ func ip4(addrs []net.Addr) net.IP {
}
return nil
}
-
-//func (lm *LinkLocalRegistry) getIf(zone string) *ActiveInterface {
-// lm.activeMutex.Lock()
-// defer lm.activeMutex.Unlock()
-// a, found := lm.ActiveInterfaces[zone]
-// if !found {
-// log.Println("Node no longer ActiveInterface ", zone)
-// return nil
-// }
-// return a
-//}
diff --git a/pkg/local/networks.go b/pkg/local/networks.go
index 8663841..29d7567 100644
--- a/pkg/local/networks.go
+++ b/pkg/local/networks.go
@@ -66,6 +66,7 @@ func (gw *LLDiscovery) RefreshNetworks() {
t0 := time.Now()
newAct, err := ActiveNetworks(gw)
+ MetricActiveNetworks.Set(int64(len(newAct)))
if err != nil {
// In android ActiveNetworks doesn't work, permission denied.
@@ -114,12 +115,6 @@ func (gw *LLDiscovery) RefreshNetworks() {
if existing.unicastUdpServer4 != nil {
existing.unicastUdpServer4.Close()
}
- //if existing.tcpListener != nil {
- // existing.tcpListener.Close()
- //}
- //if existing.multicastUdpServer != nil {
- // existing.multicastUdpServer.Close()
- //}
if existing.multicastRegisterConn != nil {
existing.multicastRegisterConn.Close()
}
@@ -260,7 +255,7 @@ func (gw *LLDiscovery) RefreshNetworks() {
// (at least on the same zone that changed)
if changed {
go gw.AnnounceMulticast()
-
+ MetricChangedNetworks.Add(1)
log.Println("MCDirect: RefreshNetworks", time.Since(t0), time.Since(t1), names)
}
@@ -325,10 +320,10 @@ func ActiveNetworks(gw *LLDiscovery) (map[string]*ActiveInterface, error) {
}
a := &ActiveInterface{
- Name: ifi.Name,
- IP6LL: ip,
- IP4: ip4,
- IPPub: ippub,
+ Name: ifi.Name,
+ IP6LL: ip,
+ IP4: ip4,
+ IPPub: ippub,
iface: &ifi,
}
anets[ifi.Name] = a
diff --git a/ugated/pkg/lwip/api.go b/pkg/lwip/api.go
similarity index 93%
rename from ugated/pkg/lwip/api.go
rename to pkg/lwip/api.go
index 052d308..3548be3 100644
--- a/ugated/pkg/lwip/api.go
+++ b/pkg/lwip/api.go
@@ -10,7 +10,7 @@ import (
type TunConfig struct {
Name string
- Sniff bool
+ Sniff bool
UDPHandler UDPHandler
TCPHandler TUNHandler
@@ -29,7 +29,6 @@ type UDPHandler interface {
data []byte)
}
-
// Interface implemented by TUNHandler.
// Important: for android the system makes sure tun is the default route, but
// packets from the VPN app are excluded.
@@ -38,14 +37,13 @@ type UDPHandler interface {
// packets from istio-proxy, and use 2 routing tables.
//
type TUNHandler interface {
- HandleTUN(conn net.Conn, target *net.TCPAddr, la *net.TCPAddr) error
+ HandleTUN(conn net.Conn, target *net.TCPAddr, la *net.TCPAddr)
}
type CloseWriter interface {
CloseWrite() error
}
-
// If NET_CAP or owner, open the tun.
func OpenTun(ifn string) (io.ReadWriteCloser, error) {
config := water.Config{
diff --git a/pkg/lwip/go.mod b/pkg/lwip/go.mod
new file mode 100644
index 0000000..4cd3c74
--- /dev/null
+++ b/pkg/lwip/go.mod
@@ -0,0 +1,17 @@
+module github.com/costinm/ugate/pkg/ext/lwip
+
+go 1.21
+
+require (
+ github.com/costinm/ugate v0.0.0-20221024013023-789def6d5dde
+ github.com/eycorsican/go-tun2socks v1.16.11
+ github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8
+)
+
+require (
+ github.com/costinm/hbone v0.0.0-20221011174620-f25926c0b194 // indirect
+ github.com/costinm/meshauth v0.0.0-20221013185453-bb5aae6632f8 // indirect
+ golang.org/x/net v0.1.0 // indirect
+ golang.org/x/sys v0.1.0 // indirect
+ golang.org/x/text v0.4.0 // indirect
+)
diff --git a/ugated/pkg/lwip/tun_capture_lwip.go b/pkg/lwip/tun_capture_lwip.go
similarity index 97%
rename from ugated/pkg/lwip/tun_capture_lwip.go
rename to pkg/lwip/tun_capture_lwip.go
index 4094113..091c0b6 100644
--- a/ugated/pkg/lwip/tun_capture_lwip.go
+++ b/pkg/lwip/tun_capture_lwip.go
@@ -15,6 +15,8 @@ const (
)
// LWIPTun adapts the LWIP interfaces - in particular UDPConn
+//
+// Implements UDPWriter (defined in many packages)
type LWIPTun struct {
lwip core.LWIPStack
tcpHandler TUNHandler
diff --git a/pkg/oidc/istio-auth-oidc.go b/pkg/oidc/istio-auth-oidc.go
deleted file mode 100644
index a841f40..0000000
--- a/pkg/oidc/istio-auth-oidc.go
+++ /dev/null
@@ -1,231 +0,0 @@
-package oidc
-
-import (
- "context"
- "fmt"
- "strings"
-
- "github.com/coreos/go-oidc"
-)
-
-// WIP: Minimal implementatio of OIDC, matching K8S. Other helpers for platform-specific tokens.
-// Also includes JWT rule support based on Istio API
-
-// A better option is github.com/coreos/go-oidc, which depends on gopkg.in/square/go-jose.v2
-
-// In GKE, iss: format is https://container.googleapis.com/v1/projects/$PROJECT/locations/$LOCATION/clusters/$CLUSTER
-// and the discovery doc is relative (i.e. standard). The keys are
-// $ISS/jwks
-//
-// GCP also uses (https://github.com/GoogleCloudPlatform/secrets-store-csi-driver-provider-gcp/blob/v0.2.0/auth/auth.go):
-// https://securetoken.googleapis.com/v1/identitybindingtoken
-// "serviceAccount:.svc.id.goog[/]"
-//
-// In Istio, the WorkloadID token can be exchanged for access tokens:
-// POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/
-// service-@gcp-sa-meshdataplane.iam.gserviceaccount.com:generateAccessToken
-// Content-Type: application/json
-// Authorization: Bearer
-// {
-// "Delegates": [],
-// "Scope": [
-// https://www.googleapis.com/auth/cloud-platform
-// ],
-// }
-//
-// curl http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/my-gsa@my-project.iam.gserviceaccount.com/token"
-// -H'Metadata-Flavor:Google'
-//
-// Access tokens:
-// https://developers.google.com/identity/toolkit/reference/securetoken/rest/v1/token
-// POST https://securetoken.googleapis.com/v1/token
-// grant_type=authorization_code&code=ID_TOKEN
-// grant_type=refresh_token&refresh_token=TOKEN
-// Resp: {
-// "access_token": string,
-// "expires_in": string,
-// "token_type": string,
-// "refresh_token": string,
-//}
-//
-//
-
-// JWTRule - from istio API, as json.
-type JWTRule struct {
-
- // Example: https://foobar.auth0.com
- // Example: 1234567-compute@developer.gserviceaccount.com
- Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
-
- // The list of JWT
- // [audiences](https://tools.ietf.org/html/rfc7519#section-4.1.3).
- // that are allowed to access. A JWT containing any of these
- // audiences will be accepted.
- //
- // The service name will be accepted if audiences is empty.
- //
- // Example:
- //
- // ```yaml
- // audiences:
- // - bookstore_android.apps.example.com
- // bookstore_web.apps.example.com
- // ```
- Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"`
-
- // URL of the provider's public key set to validate signature of the
- // JWT. See [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
- //
- // Optional if the key set document can either (a) be retrieved from
- // [OpenID
- // Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) of
- // the issuer or (b) inferred from the email domain of the issuer (e.g. a
- // Google service account).
- //
- // Example: `https://www.googleapis.com/oauth2/v1/certs`
- //
- // Note: Only one of jwks_uri and jwks should be used. jwks_uri will be ignored if it does.
- JwksUri string `protobuf:"bytes,3,opt,name=jwks_uri,json=jwksUri,proto3" json:"jwks_uri,omitempty"`
-
- // JSON Web Key Set of public keys to validate signature of the JWT.
- // See https://auth0.com/docs/jwks.
- //
- // Note: Only one of jwks_uri and jwks should be used. jwks_uri will be ignored if it does.
- //Jwks string `protobuf:"bytes,10,opt,name=jwks,proto3" json:"jwks,omitempty"`
-
- // List of header locations from which JWT is expected. For example, below is the location spec
- // if JWT is expected to be found in `x-jwt-assertion` header, and have "Bearer " prefix:
- // ```
- // fromHeaders:
- // - name: x-jwt-assertion
- // prefix: "Bearer "
- // ```
- //FromHeaders []*JWTHeader `protobuf:"bytes,6,rep,name=from_headers,json=fromHeaders,proto3" json:"from_headers,omitempty"`
- // List of query parameters from which JWT is expected. For example, if JWT is provided via query
- // parameter `my_token` (e.g /path?my_token=), the config is:
- // ```
- // fromParams:
- // - "my_token"
- // ```
- //FromParams []string `protobuf:"bytes,7,rep,name=from_params,json=fromParams,proto3" json:"from_params,omitempty"`
-
- // This field specifies the header name to output a successfully verified JWT payload to the
- // backend. The forwarded data is `base64_encoded(jwt_payload_in_JSON)`. If it is not specified,
- // the payload will not be emitted.
- // OutputPayloadToHeader string `protobuf:"bytes,8,opt,name=output_payload_to_header,json=outputPayloadToHeader,proto3" json:"output_payload_to_header,omitempty"`
-
- // If set to true, the orginal token will be kept for the ustream request. Default is false.
- //ForwardOriginalToken bool `protobuf:"varint,9,opt,name=forward_original_token,json=forwardOriginalToken,proto3" json:"forward_original_token,omitempty"`
-}
-
-type discDoc struct {
- Issuer string `json:"issuer"`
- AuthURL string `json:"authorization_endpoint"`
- TokenURL string `json:"token_endpoint"`
- JWKSURL string `json:"jwks_uri"`
- UserInfoURL string `json:"userinfo_endpoint"`
- Algorithms []string `json:"id_token_signing_alg_values_supported"`
-}
-
-type userInfo struct {
- Subject string `json:"sub"`
- Profile string `json:"profile"`
- Email string `json:"email"`
-}
-
-type JwtAuthenticator struct {
- trustDomain string
- audiences []string
- verifier *oidc.IDTokenVerifier
-}
-
-// newJwtAuthenticator is used when running istiod outside of a cluster, to validate the tokens using OIDC
-// K8S is created with --service-account-issuer, service-account-signing-key-file and service-account-api-audiences
-// which enable OIDC.
-func NewJwtAuthenticator(jwtRule JWTRule, trustDomain string) (*JwtAuthenticator, error) {
- issuer := jwtRule.Issuer
- jwksURL := jwtRule.JwksUri
- // The key of a JWT issuer may change, so the key may need to be updated.
- // Based on https://godoc.org/github.com/coreos/go-oidc#NewRemoteKeySet,
- // the oidc library handles caching and cache invalidation. Thus, the verifier
- // is only created once in the constructor.
- var verifier *oidc.IDTokenVerifier
- if len(jwksURL) == 0 {
- // OIDC discovery is used if jwksURL is not set.
- provider, err := oidc.NewProvider(context.Background(), issuer)
- // OIDC discovery may fail, e.g. http request for the OIDC server may fail.
- if err != nil {
- return nil, fmt.Errorf("failed at creating an OIDC provider for %v: %v", issuer, err)
- }
- verifier = provider.Verifier(&oidc.Config{SkipClientIDCheck: true})
- } else {
- keySet := oidc.NewRemoteKeySet(context.Background(), jwksURL)
- verifier = oidc.NewVerifier(issuer, keySet, &oidc.Config{SkipClientIDCheck: true})
- }
- return &JwtAuthenticator{
- trustDomain: trustDomain,
- verifier: verifier,
- audiences: jwtRule.Audiences,
- }, nil
-}
-
-const (
- // IdentityTemplate is the SPIFFE format template of the identity.
- IdentityTemplate = "spiffe://%s/ns/%s/sa/%s"
-)
-
-func (j *JwtAuthenticator) Authenticate(ctx context.Context, bearerToken string) ([]string, error) {
- idToken, err := j.verifier.Verify(ctx, bearerToken)
- if err != nil {
- return nil, fmt.Errorf("failed to verify the JWT token (error %v)", err)
- }
-
- sa := &JwtPayload{}
-
- // "aud" for trust domain, "sub" has "system:serviceaccount:$namespace:$serviceaccount".
- // in future trust domain may use another field as a standard is defined.
- if err := idToken.Claims(&sa); err != nil {
- return nil, fmt.Errorf("failed to extract claims from WorkloadID token: %v", err)
- }
-
- if !strings.HasPrefix(sa.Sub, "system:serviceaccount") {
- return nil, fmt.Errorf("invalid sub %v", sa.Sub)
- }
-
- parts := strings.Split(sa.Sub, ":")
- ns := parts[2]
- ksa := parts[3]
- if !checkAudience(sa.Aud, j.audiences) {
- return nil, fmt.Errorf("invalid audiences %v", sa.Aud)
- }
-
- return []string{fmt.Sprintf(IdentityTemplate, j.trustDomain, ns, ksa)}, nil
-}
-
-// checkAudience() returns true if the audiences to check are in
-// the expected audiences. Otherwise, return false.
-func checkAudience(audToCheck []string, audExpected []string) bool {
- for _, a := range audToCheck {
- for _, b := range audExpected {
- if a == b {
- return true
- }
- }
- }
- return false
-}
-
-type JwtPayload struct {
- // Aud is the expected audience, defaults to istio-ca - but is based on istiod.yaml configuration.
- // If set to a different value - use the value defined by istiod.yaml. Env variable can
- // still override
- Aud []string `json:"aud"`
-
- // Exp is not currently used - we don't use the token for authn, just to determine k8s settings
- Exp int `json:"exp"`
-
- // Issuer - configured by K8S admin for projected tokens. Will be used to verify all tokens.
- Iss string `json:"iss"`
-
- Sub string `json:"sub"`
-}
diff --git a/ugated/pkg/quic/envoy_quic.yaml b/pkg/quic/envoy_quic.yaml
similarity index 100%
rename from ugated/pkg/quic/envoy_quic.yaml
rename to pkg/quic/envoy_quic.yaml
diff --git a/pkg/quic/go.mod b/pkg/quic/go.mod
new file mode 100644
index 0000000..468b9a7
--- /dev/null
+++ b/pkg/quic/go.mod
@@ -0,0 +1,28 @@
+module github.com/costinm/ugate/pkg/quic
+
+go 1.21
+
+replace github.com/costinm/ugate => ../..
+
+require (
+ github.com/costinm/meshauth v0.0.0-20240105003042-ccb7c7765ee0
+ github.com/costinm/ugate v0.0.0-00010101000000-000000000000
+ github.com/quic-go/quic-go v0.40.1
+)
+
+require (
+ github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d // indirect
+ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
+ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
+ github.com/onsi/ginkgo/v2 v2.9.5 // indirect
+ github.com/quic-go/qpack v0.4.0 // indirect
+ github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
+ go.uber.org/mock v0.3.0 // indirect
+ golang.org/x/crypto v0.17.0 // indirect
+ golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
+ golang.org/x/mod v0.14.0 // indirect
+ golang.org/x/net v0.19.0 // indirect
+ golang.org/x/sys v0.15.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ golang.org/x/tools v0.16.0 // indirect
+)
diff --git a/pkg/quic/mux.go b/pkg/quic/mux.go
new file mode 100644
index 0000000..515a860
--- /dev/null
+++ b/pkg/quic/mux.go
@@ -0,0 +1,148 @@
+package quic
+
+import (
+ "context"
+
+ "github.com/costinm/ugate"
+ "github.com/quic-go/quic-go"
+
+ //"io"
+ "log"
+ "net"
+)
+
+// QuicMUX is a mux to a specific node. May be accepted or dialed.
+// Equivalent with quic/h3/client.go ( when dialing ), and Quic server when accepting.
+type QuicMUX struct {
+ // Remote - has an WorkloadID and Addr. Set for client connections.
+ n *ugate.MeshCluster
+ client bool
+
+ // Can be accepted or dialed - the protocol is symmetric.
+ s quic.EarlyConnection
+
+}
+
+const errorNoError = 0x100
+var Debug = false
+
+func (ugs *QuicMUX) Close() error {
+ if Debug {
+ log.Println("H3: MUX close ", ugs.n.ID)
+ }
+ return ugs.s.CloseWithError(0, "")
+}
+
+
+//func (ugs *QuicMUX) DialStream(ctx context.Context, addr string, inStream util.Stream) (util.Stream, error) {
+// //if UseRawStream {
+// s, err := ugs.s.OpenStream()
+// if err != nil {
+// return nil, err
+// }
+//
+// str := util.GetStream(s, s)
+// if inStream != nil && inStream.RequestHeader() != nil {
+// for k, v := range inStream.RequestHeader() {
+// str.Header()[k] = v
+// }
+// }
+//
+// str.Header().Set("dest", addr)
+// err = str.SendHeader(s, str.Header())
+// if err != nil {
+// return nil, err
+// }
+//
+// // RoundTripStart sending
+// if inStream != nil {
+// go func() {
+// // Equivalent with proxyToClient.
+// str.CopyBuffered(s, inStream, true)
+// // TODO: do something on err, done
+// log.Println("QUIC out - copy reader close ", str.StreamId, addr)
+//
+// }()
+// }
+//
+// err = str.ReadHeader(s)
+// if err != nil {
+// return nil, err
+// }
+// log.Println("QUIC out stream res", str.StreamId, addr, str.InHeader)
+//
+// return str, nil
+//}
+
+// DialContext uses the current association to open a stream.
+//
+// Note that H3 is handled separately - this is an L4 use of QUIC, similar to SSH.
+//
+func (ugs *QuicMUX) DialContext(ctx context.Context, net, addr string) (net.Conn, error) {
+ str, err := ugs.s.OpenStream()
+ if err != nil {
+ return nil, err
+ }
+
+ return &QuicNetCon{Stream: str}, nil
+}
+
+type QuicNetCon struct {
+ quic.Stream
+}
+
+func (q QuicNetCon) LocalAddr() net.Addr {
+ //TODO implement me
+ panic("implement me")
+}
+
+func (q QuicNetCon) RemoteAddr() net.Addr {
+ //TODO implement me
+ panic("implement me")
+}
+
+//// RoundTrip is used for forwarding HTTP connections back to the client (normal) or
+//// server ( reverse ).
+//func (ugs *QuicMUX) RoundTrip(request *http.Request) (*http.Response, error) {
+// // make sure the request will be accepted
+// request.URL.Scheme = "https"
+// request.URL.Host = ugs.hostname
+// if Debug {
+// if ugs.n != nil {
+// log.Println("H3: RT-start", ugs.n.ID, request.URL, ugs.client)
+// } else {
+// log.Println("H3: RT-start", request.URL, ugs.client)
+// }
+// }
+// var res *http.Response
+// var err error
+// if ugs.rt != nil {
+// res, err = ugs.rt.RoundTrip(request)
+// } else {
+// // Replacement for the lack of support in QUIC for using the H3 request programmatically.
+// // This only works with h3s servers.
+// s := util.NewStream()
+// s.Request = request
+// s.In = request.Body
+//
+// rs, err1 := ugs.DialStream(request.Context(), request.URL.Host, s)
+// if err1 != nil {
+// return nil, err1
+// }
+//
+// res = &http.Response{
+// Body: rs, // rs.In
+// Header: rs.Header(),
+// }
+// }
+// if Debug {
+// log.Println("H3: RT-done", request.URL, ugs.client, err)
+// if err == nil {
+// go func() {
+// <-request.Context().Done()
+// log.Println("H3: RT-ctx-done", request.URL)
+// }()
+// }
+// }
+// return res, err
+//}
diff --git a/ugated/pkg/quic/quic.go b/pkg/quic/quic.go
similarity index 52%
rename from ugated/pkg/quic/quic.go
rename to pkg/quic/quic.go
index 9bb97a3..5d68957 100644
--- a/ugated/pkg/quic/quic.go
+++ b/pkg/quic/quic.go
@@ -7,53 +7,32 @@ import (
"log"
"net"
"net/http"
+ "os"
"time"
- "github.com/costinm/hbone/nio"
"github.com/costinm/meshauth"
+ "github.com/costinm/ssh-mesh/nio"
"github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/ugatesvc"
- "github.com/lucas-clemente/quic-go"
- "github.com/lucas-clemente/quic-go/http3"
-)
-func init() {
- ugatesvc.InitHooks = append(ugatesvc.InitHooks, func(ug *ugatesvc.UGate) ugatesvc.StartFunc {
- qa := New(ug)
+ "github.com/quic-go/quic-go"
- return func(ug *ugatesvc.UGate) {
- qa.Start()
- }
- })
-}
+ "github.com/quic-go/webtransport-go"
+
+)
// Quic is the adapter to QUIC/H3/MASQUE for uGate.
-//
-// Implements:
-// - MuxDialer
-//
-// # Will start a H3 server and dispatch streams and H3 requests to uGate
-//
-// Integration with Quic library:
-// - fork to expose few internal methods needed
-// - low level UDP will be multiplexed with STUN/TURN - feature is supported upstream
-// - using the raw QUIC library for streams, to get access to the reverse path
-// - main RoundTripper is uGate, this acts as 'client.go'.
-//
-// TODO: Datagram will also be dispatched - either as UDP or as Webpush messages
-// TODO: define 'webpush over MASQUE'
-// TODO: also MASQUE-IP, if TUN support is enabled ( Android )
type Quic struct {
Auth *meshauth.MeshAuth
- Port int
// Incoming streams are mapped to HTTP
- HTTPHandler http.Handler
- server *http3.Server
+ //HTTPHandler http.Handler
+ //server *http3.Server
// UgateSVC - for node tracking
- UG *ugatesvc.UGate
+ UG *ugate.UGate
tlsServerConfig *tls.Config
+
+ l *meshauth.PortListener
}
// DataSreamer is implemented by response writer on server side to take over the stream.
@@ -61,24 +40,42 @@ type DataStreamer interface {
DataStream() quic.Stream
}
-func New(ug *ugatesvc.UGate) *Quic {
- //os.Setenv("QUIC_GO_LOG_LEVEL", "DEBUG")
+// Not in init
+func InitQuic(gate *ugate.UGate) {
+ //ugate.Modules["quic"] = func(gate *ugate.UGate) {
+ gate.ListenerProto["quic"] = func(gate *ugate.UGate, ll *meshauth.PortListener) error {
+ qa := New(gate, ll)
+
+ gate.StartFunctions = append(gate.StartFunctions, func(ug *ugate.UGate) {
+ qa.Start()
+ })
+ return nil
+ }
+
+ // Only for H3 server !
+ gate.ListenerProto["webtransport"] = func(gate *ugate.UGate, ll *meshauth.PortListener) error {
+ wts := webtransport.Server{}
+ gate.Mux.HandleFunc("/.well-known/webtransport", func(writer http.ResponseWriter, request *http.Request) {
+ // expects CONNECT - can't be handled by Mux
+ wts.Upgrade(writer, request)
+ })
+ return nil
+ }
+
+}
+
+func New(ug *ugate.UGate, ll *meshauth.PortListener) *Quic {
+ os.Setenv("QUIC_GO_LOG_LEVEL", "DEBUG")
- // We will only register a single QUIC server by default, and a factory for cons
- port := ug.Config.BasePort + ugate.PORT_BTS
- //if os.Getuid() == 0 {
- // port = 443
- //}
qa := &Quic{
- Port: port,
+ l: ll,
Auth: ug.Auth,
- HTTPHandler: ug.H2Handler,
+ //HTTPHandler: ug.H2Handler,
UG: ug,
}
- ug.MuxDialers["quic"] = qa
- mtlsServerConfig := qa.Auth.GenerateTLSConfigServer()
+ mtlsServerConfig := qa.Auth.GenerateTLSConfigServer(true)
// Overrides
mtlsServerConfig.NextProtos = []string{"h3r", "h3-34"}
@@ -89,6 +86,7 @@ func New(ug *ugatesvc.UGate) *Quic {
for i, certEntry := range rawCerts {
certs[i], _ = x509.ParseCertificate(certEntry)
}
+ log.Println("H3: verifyPeerCertificate", certs)
return nil
}
mtlsServerConfig.VerifyConnection = func(state tls.ConnectionState) error {
@@ -125,6 +123,41 @@ func New(ug *ugatesvc.UGate) *Quic {
return qa
}
+
+// Either direction - h3 is indicated by a header frame.
+// Format is: i(type) i(len) payload[len]
+// Type: data(0), header(1),
+func (q *Quic) handleRaw(qs quic.Stream) {
+ str := nio.GetStream(qs, qs)
+
+ err := str.ReadHeader(qs)
+ if err != nil {
+ log.Println("Receive error ", err)
+ return
+ }
+
+ str.Dest = str.InHeader.Get("dest")
+ log.Println("QUIC stream IN", str.StreamId, str.Dest)
+
+ str.PostDialHandler = func(conn net.Conn, err error) {
+ str.Header().Set("status", "200")
+ str.SendHeader(qs, str.Header())
+ log.Println("QUIC stream IN rcv", str.StreamId, str.InHeader)
+ }
+
+ nc, err := q.UG.Dial("tcp", str.Dest)
+ if err != nil {
+ str.PostDialHandler(nil, err)
+ return
+ }
+ str.PostDialHandler(nil, nil)
+
+ nio.Proxy(nc, str, str, str.Dest)
+
+}
+
+
+
func (q *Quic) quicConfig() *quic.Config {
return &quic.Config{
//RequestConnectionIDOmission: false,
@@ -135,7 +168,7 @@ func (q *Quic) quicConfig() *quic.Config {
HandshakeIdleTimeout: 4 * time.Second, // default 10
// make sure we don't get 0.
- ConnectionIDLength: 4,
+ //ConnectionIDLength: 4,
MaxIncomingStreams: 30000,
MaxIncomingUniStreams: 30000,
@@ -153,7 +186,9 @@ func (q *Quic) quicConfig() *quic.Config {
}
}
-func (qd *Quic) DialMux(ctx context.Context, node *ugate.Cluster, meta http.Header, ev func(t string, stream *nio.Stream)) (ugate.Muxer, error) {
+
+
+func (qd *Quic) DialMux(ctx context.Context, node *ugate.MeshCluster) (*QuicMUX, error) {
tlsConf := &tls.Config{
// VerifyPeerCertificate used instead
InsecureSkipVerify: true,
@@ -174,49 +209,24 @@ func (qd *Quic) DialMux(ctx context.Context, node *ugate.Cluster, meta http.Head
}
// session.Context() is canceled when the session is closed.
- session, err := quic.DialEarlyContext(ctx, udpConn, udpAddr, addr, tlsConf, qd.quicConfig())
+ session, err := quic.DialEarly(ctx, udpConn, udpAddr, tlsConf, qd.quicConfig())
if err != nil {
return nil, err
}
- var rt http.RoundTripper
+ //var rt http.RoundTripper
// TODO: use node.WorkloadID if available - Addr is a temp address and may
// be shared.
- tok := qd.Auth.VAPIDToken(node.ID)
+ //tok := qd.Auth.VAPIDToken(node.ID)
- session.SendMessage([]byte(tok))
+ //session.SendDatagram([]byte(tok))
- //if !UseRawStream {
- // // Exposed in fork only.
- // // Will call OpenUniStream, AcceptUniStream and OpenStream
- // rt = http3.NewClient(node.WorkloadID, session, qd.quicConfig())
- //
- // // TODO: use MASQUE ( with extension headers ? )
- // initReq, _ := http.NewRequest("GET", "https://"+node.WorkloadID+"/_dm/id/Q/"+qd.Auth.WorkloadID, nil)
- // initReq.Header.StartListener("authorization", tok)
- // res, err := rt.RoundTrip(initReq)
- // if err != nil {
- // return nil, err
- // }
- // // TODO: parse the data, use MASQUE format for handshake
- // _, _ = ioutil.ReadAll(res.Body)
- // res.Body.Close()
- //
- // if res != nil && res.StatusCode == 200 {
- // log.Println("H3R: start on ", qd.Auth.WorkloadID, "for", node.WorkloadID, session.RemoteAddr())
- // } else {
- // log.Println("H3: start on ", qd.Auth.WorkloadID, "for", node.WorkloadID, session.RemoteAddr())
- // }
- //}
go func() {
<-session.Context().Done()
log.Println("H3: stop on ", qd.Auth.ID, "for", node.ID, session.RemoteAddr())
- node.Muxer = nil
- // TODO: anything to do on close ?
- qd.UG.OnMuxClose(node)
}()
- ugc := &QuicMUX{s: session, rt: rt, hostname: node.ID, client: true}
+ ugc := &QuicMUX{s: session, n: node, client: true}
//decoder := qpack.NewDecoder(nil)
go func() {
@@ -226,32 +236,18 @@ func (qd *Quic) DialMux(ctx context.Context, node *ugate.Cluster, meta http.Head
log.Println("H3: acceptStream err", err)
return
}
-
- //if UseRawStream {
go qd.handleRaw(str)
- //} else {
- // // Treat the remote (server) originated stream as a H3 reverse request.
- // // The server will process the session and dispatch to a handler.
- // go qd.server.HandleRequest(session, str, decoder, func() {
- // // Called when done
- // })
- //}
}
}()
go qd.handleMessages(ugc)
- node.Muxer = ugc
+ node.Dialer = ugc
return ugc, nil
}
-// will eventually support the MASQUE protocol, multiplexing
-// other proxy protocols over H3.
-
func (qd *Quic) Start() error {
- // TODO: MUX, same port as client side (for better STUN)
-
c, err := net.ListenUDP("udp", &net.UDPAddr{
- Port: qd.Port,
+ Port: int(qd.l.GetPort()),
})
if err != nil {
log.Println("H3: Failed to listen quic ", err)
@@ -263,6 +259,7 @@ func (qd *Quic) Start() error {
log.Println("H3: Failed to start server ", err)
return err
}
+
go func() {
for {
s, err := l.Accept(context.Background())
@@ -279,7 +276,6 @@ func (qd *Quic) Start() error {
// not blocking
qd.handleMessages(ugc)
- //if UseRawStream {
go func() {
for {
str, err := s.AcceptStream(context.Background())
@@ -290,25 +286,6 @@ func (qd *Quic) Start() error {
go qd.handleRaw(str)
}
}()
- //} else {
- // // TODO: we need a way to pass the mux on the first
- // // request ( or the WorkloadID request ) to associate it with the node.
- // // At this point we don't have the identity.
- // // Currently we use x-quic-session as experiment.
- // go func() {
- // qd.server.HandleConn(s)
- //
- // if ugc.n != nil {
- // ugc.n.Muxer = nil
- // log.Println("H3R: stop on ", qd.Auth.WorkloadID, "for", ugc.n.WorkloadID, s.RemoteAddr())
- // qd.UG.OnMuxClose(ugc.n)
- // } else {
- // log.Println("H3: stop on ", qd.Auth.WorkloadID, s.RemoteAddr())
- // }
- //
- // }()
- //}
-
}
}()
@@ -319,9 +296,8 @@ func (qd *Quic) Start() error {
// Will call the cancel function when done.
func (qd *Quic) handleMessages(ugc *QuicMUX) {
go func() {
- var n *ugate.Cluster
for {
- d, err := ugc.s.ReceiveMessage()
+ d, err := ugc.s.ReceiveDatagram(context.Background())
if err != nil {
log.Println("H3: ReceiveMessage err ", err)
return
@@ -329,23 +305,7 @@ func (qd *Quic) handleMessages(ugc *QuicMUX) {
if len(d) == 0 {
continue
}
- if d[0] == 'v' { // 'vapid t= ,k=
- jwt := string(d)
- _, pub, err := meshauth.CheckVAPID(jwt, time.Now())
- if err == nil {
- remoteID := meshauth.IDFromPublicKeyBytes(pub)
- log.Println("H3R: start", remoteID, "on", qd.UG.Auth.ID)
- n = qd.UG.GetOrAddNode(remoteID)
-
- ugc.n = n
- ugc.hostname = n.ID
- //ugc.rt = http3.NewClient(remoteID, ugc.s, qd.quicConfig())
-
- n.Muxer = ugc
- }
- continue
- }
- // TODO: other message types
+ log.Println("Received QUIC message", string(d))
}
}()
}
diff --git a/ugated/pkg/quic/quic_raw.go b/pkg/quic/quic_raw.go
similarity index 100%
rename from ugated/pkg/quic/quic_raw.go
rename to pkg/quic/quic_raw.go
diff --git a/ugated/pkg/quic/quic_test.go b/pkg/quic/quic_test.go
similarity index 51%
rename from ugated/pkg/quic/quic_test.go
rename to pkg/quic/quic_test.go
index cb76545..1875286 100644
--- a/ugated/pkg/quic/quic_test.go
+++ b/pkg/quic/quic_test.go
@@ -7,28 +7,26 @@ import (
"testing"
"time"
+ "github.com/costinm/meshauth"
"github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/ugatesvc"
- "github.com/costinm/ugate/test"
+ "github.com/costinm/ugate/pkg/test"
)
func BenchmarkUGateQUIC(b *testing.B) {
// Fixed key, config from filesystem. Base is 14000
- alice := test.InitTestServer(test.ALICE_KEYS, &ugate.MeshSettings{BasePort: 6300, NoAccessLog: true, Name: "alice"}, func(gate *ugatesvc.UGate) {
- New(gate)
- })
+ alice := test.NewTestNode(test.AliceMeshAuthCfg, &ugate.MeshSettings{BasePort: 6300})
+ New(alice, &meshauth.PortListener{Address: ":6301"})
// In memory config store. All options
- bob := test.InitTestServer(test.BOB_KEYS, &ugate.MeshSettings{BasePort: 6400, NoAccessLog: true, Name: "bob"}, func(bob *ugatesvc.UGate) {
- qb := New(bob)
- qb.Start()
- })
+ bob := test.NewTestNode(test.BobMeshAuthCfg, &ugate.MeshSettings{BasePort: 6400})
+ qb := New(bob, &meshauth.PortListener{Address: ":6401"})
+ qb.Start()
log.Println(bob.Auth.VIP6)
- bobAddr := "localhost:" + strconv.Itoa(bob.Config.BasePort+ugate.PORT_BTS)
+ bobAddr := "localhost:" + strconv.Itoa(bob.BasePort+7)
// Alice dials a MUX to bob
- bobNode := alice.GetOrAddNode(bob.Auth.ID)
+ bobNode, _ := alice.Cluster(nil, bob.Auth.ID)
bobNode.Addr = bobAddr
_, err := alice.DialMUX(context.Background(), "quic", bobNode, nil)
if err != nil {
@@ -64,30 +62,32 @@ func BenchmarkUGateQUIC(b *testing.B) {
func TestQuic(t *testing.T) {
// Fixed key, config from filesystem. Base is 14000
- alice := test.InitTestServer(test.ALICE_KEYS, &ugate.MeshSettings{BasePort: 6300, Name: "alice"}, func(gate *ugatesvc.UGate) {
- New(gate)
- })
+ alice := test.NewTestNode(test.AliceMeshAuthCfg, &ugate.MeshSettings{BasePort: 6300})
+ New(alice, &meshauth.PortListener{Address: ":6307"})
// In memory config store. All options
- bob := test.InitTestServer(test.BOB_KEYS, &ugate.MeshSettings{BasePort: 6400, Name: "bob"}, func(bob *ugatesvc.UGate) {
- qb := New(bob)
- qb.Start()
- })
- log.Println(bob.Auth.VIP6)
+ bob := test.NewTestNode(test.BobMeshAuthCfg, &ugate.MeshSettings{BasePort: 6400})
+ qb := New(bob, &meshauth.PortListener{Address: ":6407"})
+ bob.Start()
+ qb.Start()
- bobAddr := "localhost:" + strconv.Itoa(bob.Config.BasePort+ugate.PORT_BTS)
- // Alice dials a MUX to bob
- bobNode := alice.GetOrAddNode(bob.Auth.ID)
+ bobAddr := "localhost:" + strconv.Itoa(bob.BasePort+7)
+
+ // Add a cluster to alice with bob's ID, address and protocol
+ bobNode, _ := alice.Cluster(nil, bob.Auth.ID)
bobNode.Addr = bobAddr
- _, err := alice.DialMUX(context.Background(), "quic", bobNode, nil)
- if err != nil {
- t.Fatal("Error dialing mux", err)
- }
+ bobNode.Proto = "quic"
+
+ //_, err := alice.DialMUX(context.Background(), "quic", bobNode, nil)
+ //if err != nil {
+ // t.Fatal("Error dialing mux", err)
+ //}
// Alice -> QUIC -> Bob -> Echo
t.Run("egress", func(t *testing.T) {
// Using DialContext interface - mesh address will use the node.
+ // The port is the echo port on Bob.
con, err := alice.DialContext(context.Background(), "tcp", bob.Auth.ID+":6412")
if err != nil {
t.Fatal(err)
@@ -95,34 +95,34 @@ func TestQuic(t *testing.T) {
_, err = test.CheckEcho(con, con)
})
- t.Run("egress10", func(t *testing.T) {
- for i := 0; i < 10; i++ {
- // Using DialContext interface - mesh address will use the node.
- con, err := alice.DialContext(context.Background(), "tcp", bob.Auth.ID+":6412")
- if err != nil {
- t.Fatal(err)
- }
- _, err = test.CheckEcho(con, con)
- }
- })
-
- t.Run("egress10p", func(t *testing.T) {
- ch := make(chan string, 10)
- for i := 0; i < 10; i++ {
- go func() {
- // Using DialContext interface - mesh address will use the node.
- con, err := alice.DialContext(context.Background(), "tcp", bob.Auth.ID+":6412")
- if err != nil {
- t.Fatal(err)
- }
- _, err = test.CheckEcho(con, con)
- ch <- ""
- }()
- }
- for i := 0; i < 10; i++ {
- <-ch
- }
- })
+ //t.Run("egress10", func(t *testing.T) {
+ // for i := 0; i < 10; i++ {
+ // // Using DialContext interface - mesh address will use the node.
+ // con, err := alice.DialContext(context.Background(), "tcp", bob.Auth.ID+":6412")
+ // if err != nil {
+ // t.Fatal(err)
+ // }
+ // _, err = test.CheckEcho(con, con)
+ // }
+ //})
+ //
+ //t.Run("egress10p", func(t *testing.T) {
+ // ch := make(chan string, 10)
+ // for i := 0; i < 10; i++ {
+ // go func() {
+ // // Using DialContext interface - mesh address will use the node.
+ // con, err := alice.DialContext(context.Background(), "tcp", bob.Auth.ID+":6412")
+ // if err != nil {
+ // t.Fatal(err)
+ // }
+ // _, err = test.CheckEcho(con, con)
+ // ch <- ""
+ // }()
+ // }
+ // for i := 0; i < 10; i++ {
+ // <-ch
+ // }
+ //})
// Bob -> H3R -> Alice -> Echo
// Bob did not dial Alice, doesn't have the address ( and alice didn't start server )
diff --git a/pkg/sni/sni.go b/pkg/sni/sni.go
new file mode 100644
index 0000000..e6263ea
--- /dev/null
+++ b/pkg/sni/sni.go
@@ -0,0 +1,71 @@
+package sni
+
+import (
+ "context"
+ "errors"
+ "net"
+ "strings"
+
+ "github.com/costinm/ssh-mesh/nio"
+ "github.com/costinm/ugate"
+)
+
+type SNIHandler struct {
+ UGate *ugate.UGate
+ Dialer net.Dialer
+}
+
+// HandleSNIConn implements SNI based routing. This can be used for compat
+// with Istio. Was original method to tunnel for serverless.
+//
+// This can be used for a legacy CNI to UGate bridge. The old Istio client expects an mTLS connection
+// to the other end - the UGate proxy is untrusted.
+func (snih *SNIHandler) HandleConn(conn net.Conn) error {
+ hb := snih.UGate
+
+ s := nio.NewBufferReader(conn)
+ defer conn.Close()
+ defer s.Buffer.Recycle()
+
+ cn, sni, err := nio.SniffClientHello(s)
+ if err != nil {
+ return err
+ }
+ if cn == nil {
+ // First bytes are not TLS
+ return errors.New("Not TLS")
+ }
+
+ // At this point we have a SNI service name. Need to convert it to a real service
+ // name, RoundTripStart and proxy.
+
+ addr := sni + ":443"
+ // Based on SNI, make a hbone request, using JWT auth.
+ if strings.HasPrefix(sni, "outbound_.") {
+ // Current Istio SNI looks like:
+ //
+ // outbound_.9090_._.prometheus-1-prometheus.mon.svc.cluster.local
+ // We need to map it to a cloudrun external address, add token based on the audience, and
+ // make the call using the tunnel.
+ //
+ // Also supports the 'natural' form and egress
+
+ //
+ //
+ parts := strings.SplitN(sni, ".", 4)
+ remoteService := parts[3]
+ // TODO: extract 'version' from URL, convert it to cloudrun revision ?
+ addr = net.JoinHostPort(remoteService, parts[1])
+ }
+
+ ctx := context.Background()
+ nc, err := hb.DialContext(ctx, "tcp", addr)
+ if err != nil {
+ return err
+ }
+ err = nio.Proxy(nc, s, conn, addr)
+ if err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/pkg/socks/socks5_capture.go b/pkg/socks/socks5_capture.go
deleted file mode 100644
index fa04115..0000000
--- a/pkg/socks/socks5_capture.go
+++ /dev/null
@@ -1,247 +0,0 @@
-package socks
-
-import (
- "encoding/binary"
- "errors"
- "fmt"
- "log"
- "net"
- "strconv"
-
- "github.com/costinm/hbone"
- "github.com/costinm/hbone/nio"
- "github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/ugatesvc"
-)
-
-// Egress capture. See also iptables, TUN, CONNECT proxy
-// Should be on a dedicated port.
-
-// curl --socks5 127.0.0.1:15004 ....
-// export HTTP_PROXY=socks5://127.0.0.1:15004
-
-// TODO: tor extensions
-// - send client data in advance, forward to the server
-// - resolve
-
-// Note: max DNS size is 255 ( including trailing 0, and len labels )
-//
-
-const (
- ConnectCommand = uint8(1)
- BindCommand = uint8(2)
- AssociateCommand = uint8(3)
- ipv4Address = uint8(1)
- fqdnAddress = uint8(3)
- ipv6Address = uint8(4)
-)
-
-const (
- successReply uint8 = iota
- serverFailure
- ruleFailure
- networkUnreachable
- hostUnreachable
- connectionRefused
- ttlExpired
- commandNotSupported
- addrTypeNotSupported
-)
-
-const (
- NoAuth = uint8(0)
- noAcceptable = uint8(255)
- UserPassAuth = uint8(2)
- userAuthVersion = uint8(1)
- authSuccess = uint8(0)
- authFailure = uint8(1)
-)
-
-/*
- RFC1928
-
- 1. Req:
- VER 0x05
- NMETHODS 0x01
- METHOD 0x00 [one byte for each method - NoAuth]
- (other auth not supported - we bind on 127.0.0.1 or use mtls)
-
- Res:
- VER 0x05
- METHOD 0x00
-
- 2. VER: X'05'
- CMD
- o CONNECT X'01'
- o BIND X'02'
- o UDP ASSOCIATE X'03'
- RSV RESERVED 0x00
- ATYP address type of following address
- o IP V4 address: X'01'
- o DOMAINNAME: X'03'
- o IP V6 address: X'04'
- DST.ADDR desired destination address
- DST.PORT desired destination port in network octet order
-*/
-func New(ug *ugatesvc.UGate) {
- p := ug.Config.BasePort + ugate.PORT_SOCKS
- ll := &hbone.Listener{
- Address: fmt.Sprintf("127.0.0.1:%d", p),
- Protocol: ugate.ProtoSocks,
- PortHandler: &Socks{ug: ug},
- }
-
- err := ug.StartListener(ll)
- if err != nil {
- log.Println("Failed to start SOCKS, continue ", err)
- }
-}
-
-type Socks struct {
- ug *ugatesvc.UGate
-}
-
-func (s *Socks) String() string {
- return "socks"
-}
-
-func (s *Socks) Handle(bconn *nio.Stream) error {
- bconn.Direction = nio.StreamTypeOut
-
- _, bconn.ReadErr = Unmarshal(bconn)
- if bconn.ReadErr != nil {
- return bconn.ReadErr
- }
-
- // Dest is set, will be forwarded to the dest.
- bconn.ReadErr = s.ug.HandleStream(bconn)
- return bconn.ReadErr
-}
-
-func Unmarshal(s *nio.Stream) (done bool, err error) {
- // Fill the read buffer with one Read.
- // Typically 3-4 bytes unless client is eager.
-
- head, err := s.Fill(3)
- if err != nil {
- return false, err
- }
-
- if head[0] != 5 {
- return false, errors.New("invalid header")
- }
- // Client: 0x05 0x01 0x00
- // 0x05 0x02 0x00 0x01
- // Server: 0x05 0x00
- off := 1
- sz := int(head[off])
- off++ // 2
- if len(head) < off+sz { // if it only read 2, probably malicious - 2 < 2 + 1
- head, err = s.Fill(off + sz)
- if err != nil {
- return false, err
- }
- }
- off += sz // 3
-
- s.Write([]byte{5, 0})
-
- // We may have bytes in the buffer, in case sender didn't wait
- if len(head) <= off+6 {
- head, err = s.Fill(off + sz)
- if err != nil {
- return false, err
- }
- }
- // We have at least 6 bytes
- if head[off] != 5 {
- return false, errors.New("invalid header 2")
- }
- off++
- if head[off] != 1 {
- return false, errors.New("invalid method " + strconv.Itoa(int(head[off])))
- }
- off++
- off++ // rsvd
-
- atyp := head[off+3]
- off++
-
- destName := ""
- var destIP []byte
- // off should be 3 or 4
- switch atyp {
- case 1:
- if len(head) <= off+6 {
- head, err = s.Fill(off + 6)
- }
- destIP = make([]byte, 4)
- copy(destIP, head[off:off+4])
- off += 4
- case 4:
- if len(head) <= off+18 {
- head, err = s.Fill(off + 18)
- }
- destIP = make([]byte, 16)
- copy(destIP, head[off:off+16])
- off += 16
-
- case 3:
- dlen := int(head[off])
- off++
- if len(head) <= off+dlen+2 {
- head, err = s.Fill(off + dlen + 2)
- }
- destName = string(head[off : off+dlen])
- off += dlen
- }
- if err != nil {
- return false, err
- }
- port := binary.BigEndian.Uint16(head[off:])
- off += 2
-
- // Any reminding bytes are eager sent
- s.Skip(off)
-
- if atyp == 3 {
- s.Dest = net.JoinHostPort(destName, strconv.Itoa(int(port)))
- s.Type = "socks5"
- } else {
- s.DestAddr = &net.TCPAddr{IP: destIP, Port: int(port)}
- s.Dest = s.DestAddr.String()
- s.Type = "socks5IP"
- }
-
- // Must be called before sending any data.
- s.PostDialHandler = func(conn net.Conn, err error) {
- if err != nil || conn == nil {
- // TODO: write error code
- s.Write([]byte{5, 1})
- s.Close()
- }
- // Not accurate for tcp-over-http.
- // TODO: pass a 'on connect' callback
- localAddr := conn.LocalAddr()
- tcpAddr := localAddr.(*net.TCPAddr)
- r := make([]byte, len(tcpAddr.IP)+6)
- r[0] = 5
- r[1] = 0 // success
- r[2] = 0 // rsv
- off := 4
- if tcpAddr.IP.To4() != nil {
- r[3] = 1
- copy(r[off:off+4], []byte(tcpAddr.IP))
- off += 4
- } else {
- r[3] = 2
- copy(r[off:off+16], []byte(tcpAddr.IP))
- off += 16
- }
- binary.BigEndian.PutUint16(r[off:], uint16(tcpAddr.Port))
- off += 2
- s.Write(r[0:off])
- }
-
- return true, nil
-}
diff --git a/pkg/tcp_proxy/tcp_proxy.go b/pkg/tcp_proxy/tcp_proxy.go
new file mode 100644
index 0000000..6537065
--- /dev/null
+++ b/pkg/tcp_proxy/tcp_proxy.go
@@ -0,0 +1 @@
+package tcp_proxy
diff --git a/pkg/test/testing.go b/pkg/test/testing.go
new file mode 100644
index 0000000..4daa3ac
--- /dev/null
+++ b/pkg/test/testing.go
@@ -0,0 +1,235 @@
+package test
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "io"
+ "log"
+ "testing"
+ "time"
+
+ "github.com/costinm/meshauth"
+ "github.com/costinm/ssh-mesh/nio"
+ "github.com/costinm/ugate"
+ "github.com/costinm/ugate/pkg/echo"
+)
+
+// Separate package to avoid recursive deps.
+// The ugated package depends on each protocol impl.
+// This is used from each protocol dir for single-protocol tests.
+// Also an example on how to use without configs.
+
+// NewClientNode inits a test node from a config dir, with no default listeners.
+func NewClientNode(maCfg *meshauth.MeshCfg, cfg *ugate.MeshSettings) (*ugate.UGate, error) {
+ ma := meshauth.NewMeshAuth(maCfg)
+
+ // This is a base gate - without any special protocol (from ugated).
+ ug := ugate.New(ma, cfg)
+ ug.ListenerProto["echo"] = echo.EchoPortHandler
+
+ err := ug.Start()
+ return ug, err
+}
+
+// NewTestNode creates a node with the given config.
+func NewTestNode(acfg *meshauth.MeshCfg, cfg *ugate.MeshSettings) *ugate.UGate {
+ basePort := cfg.BasePort
+
+ a := meshauth.NewMeshAuth(acfg)
+ if a.Priv == "" {
+ a.InitSelfSigned("")
+ }
+ ug := ugate.New(a, cfg)
+
+ ech := &echo.EchoHandler{UGate: ug}
+ ug.Mux.Handle("/debug/echo/", ech)
+
+ ug.ListenerProto["echo"] = echo.EchoPortHandler
+
+ // Echo - TCP
+ ug.StartListener(&meshauth.PortListener{
+ Address: fmt.Sprintf("0.0.0.0:%d", basePort+11),
+ Protocol: "echo", // TLS ?
+ })
+ ug.StartListener(&meshauth.PortListener{
+ Address: fmt.Sprintf("0.0.0.0:%d", basePort+12),
+ Protocol: "echo",
+ })
+
+ return ug
+}
+
+func InitEcho(port int) *ugate.UGate {
+ //cs := meshauth.NewConf()
+ ug := ugate.New(nil, &ugate.MeshSettings{
+ BasePort: port,
+ })
+
+ // Echo - TCP
+
+ ug.ListenerProto["echo"] = echo.EchoPortHandler
+
+ ug.StartListener(&meshauth.PortListener{
+ Address: fmt.Sprintf("0.0.0.0:%d", port+12),
+ Protocol: "echo",
+ })
+ return ug
+}
+
+var chunk1 = []byte("Hello world")
+var chunk2 = []byte("chunk2")
+
+// CheckEcho will verify the behavior of the echo server.
+// - write chunk1 (to verify we don't hang )
+// - read response from server - should include metadata for the request plus chunk1
+// -
+func CheckEcho(in io.Reader, out io.Writer) (string, error) {
+
+ d := make([]byte, 2048)
+ // RoundTripStart with a write - client send first (echo will wait, to verify that body is not cached)
+ _, err := out.Write(chunk1)
+ if err != nil {
+ return "", err
+ }
+
+ //ab.SetDeadline(time.Now().StartListener(5 * time.Second))
+ n, err := in.Read(d)
+ if err != nil {
+ return "", err
+ }
+
+ idx := bytes.IndexByte(d[0:n], '\n')
+ if idx < 0 {
+ return string(d[0:n]), errors.New("missing header")
+ }
+ js := string(d[0:idx])
+ idx++ // skip \n
+ // Server writes 2 chunkes - the header and what we wrote. There is a flush, but
+ // the transports don't guarantee boundary.
+ start := 0
+ if idx < n {
+ copy(d[0:], d[idx:n])
+ start = n - idx
+ n = start
+ } else {
+ n = 0
+ }
+ if n < len(chunk1) {
+ n, err = in.Read(d[start:])
+ if err != nil {
+ return "", err
+ }
+ n += start
+ }
+
+ if !bytes.Equal(chunk1, d[0:n]) {
+ return js, errors.New("miss-matched result1 " + string(d[0:n]))
+ }
+
+ _, err = out.Write(chunk2)
+ if err != nil {
+ return "", err
+ }
+
+ n, err = in.Read(d)
+ if err != nil {
+ return "", err
+ }
+
+ if !bytes.Equal(chunk2, d[0:n]) {
+ return js, errors.New("miss-matched result " + string(d[0:n]))
+ }
+
+ /* _, err = out.Write([]byte("close\n"))
+ if err != nil {
+ return "", err
+ }
+ */
+ if cw, ok := out.(nio.CloseWriter); ok {
+ cw.CloseWrite()
+ } else {
+ out.(io.Closer).Close()
+ }
+ // Possible issue: the server has sent FIN, but reader (h3 response body) did not
+ // receive it.
+
+ n, err = in.Read(d)
+ if err != io.EOF {
+ return "", err
+ }
+
+ return js, nil
+}
+
+var AliceMeshAuthCfg = &meshauth.MeshCfg{
+ Name: "alice",
+ Domain: "test.m.internal",
+ Priv: `
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIOa4YuOsiCIqcFqqknjeTaPCwVEuF/X9YJMdf77V09HyoAoGCCqGSM49
+AwEHoUQDQgAE1ac88a5eI83WDHmtOJmce4HhRO3s9iObYKnP9QkpZPMRYwJcvi0i
+N9miG3v5LoooDq6r9Nt2e/koHw6E1SvmlQ==
+-----END EC PRIVATE KEY-----
+`,
+ CertBytes: `
+-----BEGIN CERTIFICATE-----
+MIIBeDCCAR+gAwIBAgIQUzvKlOHbjBotS03Lku+pBTAKBggqhkjOPQQDAjAXMQkw
+BwYDVQQKEwAxCjAIBgNVBAMTAS4wHhcNMjQwMTA1MTg0NDMyWhcNMjUwMTA0MTg0
+NDMyWjAXMQkwBwYDVQQKEwAxCjAIBgNVBAMTAS4wWTATBgcqhkjOPQIBBggqhkjO
+PQMBBwNCAATVpzzxrl4jzdYMea04mZx7geFE7ez2I5tgqc/1CSlk8xFjAly+LSI3
+2aIbe/kuiigOrqv023Z7+SgfDoTVK+aVo00wSzAOBgNVHQ8BAf8EBAMCBaAwHQYD
+VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwDAYDVR0R
+BAUwA4IBLjAKBggqhkjOPQQDAgNHADBEAiAGfrW7fgnGYV0AHPhc2sgymzpuy0DS
+T8kswXTqlc/b2gIgUNTQoHbS9R/VTrxIbHCQeL5TZE4XCGq3DQ9lHgAld4E=
+-----END CERTIFICATE-----
+`,
+}
+
+var BobMeshAuthCfg = &meshauth.MeshCfg{
+ Name: "bob",
+ Domain: "test.m.internal",
+ Priv: `-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIG0y/ACuY0grzpMCZRWs/mUCgXY/vaMFN5MZOY+X901IoAoGCCqGSM49
+AwEHoUQDQgAE51wdYyA7nhXKgUzvruRo4ZchJLNgJTlSkKRLpNYHhLrBjHivC4A4
+HgysDlU4frwsTSg6qPOiXkTkA8VZJzdHMg==
+-----END EC PRIVATE KEY-----`,
+ CertBytes: `-----BEGIN CERTIFICATE-----
+MIIBejCCASCgAwIBAgIRAK9oRInSJbAZDLpCWQX/UN8wCgYIKoZIzj0EAwIwFzEJ
+MAcGA1UEChMAMQowCAYDVQQDEwEuMB4XDTIyMTEwNDE0MjgxMFoXDTIzMTEwNDE0
+MjgxMFowFzEJMAcGA1UEChMAMQowCAYDVQQDEwEuMFkwEwYHKoZIzj0CAQYIKoZI
+zj0DAQcDQgAE51wdYyA7nhXKgUzvruRo4ZchJLNgJTlSkKRLpNYHhLrBjHivC4A4
+HgysDlU4frwsTSg6qPOiXkTkA8VZJzdHMqNNMEswDgYDVR0PAQH/BAQDAgWgMB0G
+A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMAwGA1Ud
+EQQFMAOCAS4wCgYIKoZIzj0EAwIDSAAwRQIhALQoenr80BTUkIeFKyqOJTQM75sx
+31/cQyVaS0hZfTRsAiBPnuyNeeLFuQ7+2ogMB2FQsg8oIjFEcd781XFEjJWMDg==
+-----END CERTIFICATE-----
+`,
+}
+
+// Helpers for setting up a ugate test env.
+
+// Verify using the basic echo server.
+func EchoClient2(t *testing.T, lout io.WriteCloser, lin io.Reader, serverFirst bool) {
+ b := make([]byte, 1024)
+ timer := time.AfterFunc(3*time.Second, func() {
+ log.Println("timeout")
+ //lin.CloseWithError(errors.New("timeout"))
+ lout.Close() // (errors.New("timeout"))
+ })
+
+ if serverFirst {
+ b := make([]byte, 1024)
+ n, err := lin.Read(b)
+ if n == 0 || err != nil {
+ t.Fatal(n, err)
+ }
+ }
+
+ lout.Write([]byte("Ping"))
+ n, err := lin.Read(b)
+ if n != 4 {
+ t.Error(n, err)
+ }
+ timer.Stop()
+}
diff --git a/pkg/udp/buffer_pool.go b/pkg/udp/buffer_pool.go
deleted file mode 100644
index 15953d6..0000000
--- a/pkg/udp/buffer_pool.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package udp
-
-import (
- "sync"
-)
-
-type packetBuffer struct {
- Data []byte
-
- // refCount counts how many packets Data is used in.
- // It doesn't support concurrent use.
- // It is > 1 when used for coalesced packet.
- refCount int
-}
-
-// Split increases the refCount.
-// It must be called when a packet buffer is used for more than one packet,
-// e.g. when splitting coalesced packets.
-func (b *packetBuffer) Split() {
- b.refCount++
-}
-
-// Decrement decrements the reference counter.
-// It doesn't put the buffer back into the pool.
-func (b *packetBuffer) Decrement() {
- b.refCount--
- if b.refCount < 0 {
- panic("negative packetBuffer refCount")
- }
-}
-
-// MaybeRelease puts the packet buffer back into the pool,
-// if the reference counter already reached 0.
-func (b *packetBuffer) MaybeRelease() {
- // only put the packetBuffer back if it's not used any more
- if b.refCount == 0 {
- b.putBack()
- }
-}
-
-// Release puts back the packet buffer into the pool.
-// It should be called when processing is definitely finished.
-func (b *packetBuffer) Release() {
- b.Decrement()
- if b.refCount != 0 {
- panic("packetBuffer refCount not zero")
- }
- b.putBack()
-}
-
-// Len returns the length of Data
-func (b *packetBuffer) Len() int {
- return len(b.Data)
-}
-
-const MaxPacketBufferSize = 9000
-
-func (b *packetBuffer) putBack() {
- if cap(b.Data) != int(MaxPacketBufferSize) {
- panic("putPacketBuffer called with packet of wrong size!")
- }
- bufferPool.Put(b)
-}
-
-var bufferPool sync.Pool
-
-func getPacketBuffer() *packetBuffer {
- buf := bufferPool.Get().(*packetBuffer)
- buf.refCount = 1
- buf.Data = buf.Data[:0]
- return buf
-}
-
-func init() {
- bufferPool.New = func() interface{} {
- return &packetBuffer{
- Data: make([]byte, 0, MaxPacketBufferSize),
- }
- }
-}
diff --git a/pkg/udp/conn_oob.go b/pkg/udp/conn_oob.go
index ae54509..c579064 100644
--- a/pkg/udp/conn_oob.go
+++ b/pkg/udp/conn_oob.go
@@ -16,10 +16,15 @@ import (
"time"
"unsafe"
+ "github.com/costinm/ssh-mesh/nio"
"golang.org/x/sys/unix"
)
-// If the PacketConn passed to RoundTripStart or Listen satisfies this interface, quic-go will read the ECN bits from the IP header.
+const MaxPacketBufferSize = 9000
+
+// If the PacketConn passed to RoundTripStart or Listen satisfies this interface, quic-go will read the
+// ECN bits from the IP header.
+//
// In this case, ReadMsgUDP() will be used instead of ReadFrom() to read packets.
type OOBCapablePacketConn interface {
net.PacketConn
@@ -33,7 +38,7 @@ type packetInfo struct {
}
type receivedPacket struct {
- buffer *packetBuffer
+ buffer *nio.Buffer
remoteAddr net.Addr
rcvTime time.Time
@@ -58,11 +63,12 @@ const (
const ecnMask uint8 = 0x3
-func setReceiveBuffer(c net.PacketConn, minSize int) error {
+func SetReceiveBuffer(c net.PacketConn, minSize int) error {
conn, ok := c.(interface{ SetReadBuffer(int) error })
if !ok {
return errors.New("connection doesn't allow setting of receive buffer size. Not a *net.UDPConn?")
}
+
size, err := inspectReadBuffer(c)
if err != nil {
return fmt.Errorf("failed to determine receive buffer size: %w", err)
@@ -70,6 +76,7 @@ func setReceiveBuffer(c net.PacketConn, minSize int) error {
if size >= minSize {
return nil
}
+
if err := conn.SetReadBuffer(minSize); err != nil {
return fmt.Errorf("failed to increase receive buffer size: %w", err)
}
@@ -84,6 +91,7 @@ func setReceiveBuffer(c net.PacketConn, minSize int) error {
if newSize < minSize {
return fmt.Errorf("failed to sufficiently increase receive buffer size (was: %d kiB, wanted: %d kiB, got: %d kiB)", size/1024, minSize/1024, newSize/1024)
}
+
log.Printf("Increased receive buffer size to %d kiB", newSize/1024)
return nil
}
@@ -167,12 +175,13 @@ func newConn(c OOBCapablePacketConn) (*oobConn, error) {
}
func (c *oobConn) ReadPacket() (*receivedPacket, error) {
- buffer := getPacketBuffer()
+ buffer := nio.GetBuffer(0, MaxPacketBufferSize)
// The packet size should not exceed protocol.MaxPacketBufferSize bytes
// If it does, we only read a truncated packet, which will then end up undecryptable
- buffer.Data = buffer.Data[:MaxPacketBufferSize]
+ //buffer = buffer[:MaxPacketBufferSize]
c.oobBuffer = c.oobBuffer[:cap(c.oobBuffer)]
- n, oobn, _, addr, err := c.OOBCapablePacketConn.ReadMsgUDP(buffer.Data, c.oobBuffer)
+ data := buffer.Buffer()
+ n, oobn, _, addr, err := c.OOBCapablePacketConn.ReadMsgUDP(data[0:cap(data)], c.oobBuffer)
if err != nil {
return nil, err
}
@@ -231,7 +240,7 @@ func (c *oobConn) ReadPacket() (*receivedPacket, error) {
return &receivedPacket{
remoteAddr: addr,
rcvTime: time.Now(),
- data: buffer.Data[:n],
+ data: data[:n],
ecn: ecn,
info: info,
buffer: buffer,
diff --git a/pkg/udp/tproxy_udp.go b/pkg/udp/tproxy_udp.go
new file mode 100644
index 0000000..83f7dbc
--- /dev/null
+++ b/pkg/udp/tproxy_udp.go
@@ -0,0 +1,198 @@
+package udp
+
+import (
+ "bytes"
+ "encoding/binary"
+ "fmt"
+ "log"
+ "net"
+ "strconv"
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/net/ipv4"
+)
+
+// WIP: requires root, UDP proxy using orig dest.
+
+// To preserve the original srcIP it is also possible to use udp.WriteMsg.
+
+func UDPAccept(con *net.UDPConn, u func(ip net.IP, port uint16, ip2 net.IP, u uint16, bytes []byte)) {
+ //go tu.blockingLoop(tu.con, u)
+ go blockingLoop(con, u)
+}
+
+// ReadFromUDP reads a UDP packet from c, copying the payload into b.
+// It returns the number of bytes copied into b and the return address
+// that was on the packet.
+//
+// RequestInPipe-of-band data is also read in so that the original destination
+// address can be identified and parsed.
+func ReadFromUDP(conn *net.UDPConn, b []byte) (int, *net.UDPAddr, *net.UDPAddr, error) {
+ oob := make([]byte, 2048)
+ n, oobn, _, addr, err := conn.ReadMsgUDP(b, oob)
+ if err != nil {
+ return 0, nil, nil, err
+ }
+
+ msgs, err := syscall.ParseSocketControlMessage(oob[:oobn])
+ if err != nil {
+ return 0, nil, nil, fmt.Errorf("parsing socket control message: %s", err)
+ }
+
+ var originalDst *net.UDPAddr
+ for _, msg := range msgs {
+ //if msg.Header.Level == syscall.SOL_IPV6 && msg.Header.Type == syscall.IPV6_PKTINFO {
+ // // 20 bytes
+ // log.Println(msg.Header.Level, msg.Header.Type, msg.Data)
+ // rawaddr := make([]byte, 16)
+ // // raw IP address, 4 bytes for IPv4 or 16 bytes for IPv6, only IPv4 is supported now
+ // copy(rawaddr, msg.Data[0:16])
+ // origIP := net.IP(rawaddr)
+ //
+ // // Bigendian is the network bit order, seems to be used here.
+ // origPort := binary.BigEndian.Uint16(msg.Data[16:])
+ // originalDst = &net.UDPAddr{
+ // IP: origIP,
+ // Port: int(origPort),
+ // }
+ //} else
+ if msg.Header.Level == syscall.SOL_IPV6 && msg.Header.Type == 74 {
+ // 28 bytes - family, port,
+ rawaddr := make([]byte, 16)
+ // raw IP address, 4 bytes for IPv4 or 16 bytes for IPv6, only IPv4 is supported now
+ copy(rawaddr, msg.Data[8:])
+ origIP := net.IP(rawaddr)
+
+ // Bigendian is the network bit order, seems to be used here.
+ origPort := binary.BigEndian.Uint16(msg.Data[2:])
+ originalDst = &net.UDPAddr{
+ IP: origIP,
+ Port: int(origPort),
+ }
+ } else if msg.Header.Level == syscall.SOL_IP && msg.Header.Type == syscall.IP_RECVORIGDSTADDR {
+ originalDstRaw := &syscall.RawSockaddrInet4{}
+ if err = binary.Read(bytes.NewReader(msg.Data), binary.LittleEndian, originalDstRaw); err != nil {
+ return 0, nil, nil, fmt.Errorf("reading original destination address: %s", err)
+ }
+
+ switch originalDstRaw.Family {
+ case syscall.AF_INET:
+ pp := (*syscall.RawSockaddrInet4)(unsafe.Pointer(originalDstRaw))
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ originalDst = &net.UDPAddr{
+ IP: net.IPv4(pp.Addr[0], pp.Addr[1], pp.Addr[2], pp.Addr[3]),
+ Port: int(p[0])<<8 + int(p[1]),
+ }
+
+ case syscall.AF_INET6:
+ pp := (*syscall.RawSockaddrInet6)(unsafe.Pointer(originalDstRaw))
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ originalDst = &net.UDPAddr{
+ IP: net.IP(pp.Addr[:]),
+ Port: int(p[0])<<8 + int(p[1]),
+ Zone: strconv.Itoa(int(pp.Scope_id)),
+ }
+
+ default:
+ return 0, nil, nil, fmt.Errorf("original destination is an unsupported network family")
+ }
+ } else {
+ log.Println(msg.Header.Level, msg.Header.Type)
+ }
+ }
+
+ if originalDst == nil {
+ return 0, nil, nil, fmt.Errorf("unable to obtain original destination: %s", err)
+ }
+
+ return n, addr, originalDst, nil
+}
+
+// Handle packets received on the tproxy interface.
+func blockingLoop(con *net.UDPConn, u func(ip net.IP, port uint16, ip2 net.IP, u uint16, bytes []byte)) {
+ data := make([]byte, 1600)
+
+ for {
+ n, a1, addr, err := ReadFromUDP(con, data)
+ if err != nil {
+ log.Println("Read err", err)
+ continue
+ }
+
+ go u(a1.IP, uint16(a1.Port), addr.IP, uint16(addr.Port), data[0:n])
+ }
+}
+
+// Initialize a port as a TPROXY socket. This can be sent over UDS from the root, and used for
+// UDP capture.
+func StartUDPTProxyListener6(port int) (*net.UDPConn, error) {
+ network := "udp"
+ laddr := &net.UDPAddr{Port: port}
+ listener, err := net.ListenUDP(network, laddr)
+ if err != nil {
+ return nil, err
+ }
+
+ fileDescriptorSource, err := listener.File()
+ if err != nil {
+ return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("get file descriptor: %s", err)}
+ }
+ defer fileDescriptorSource.Close()
+
+ fileDescriptor := int(fileDescriptorSource.Fd())
+ if err = syscall.SetsockoptInt(fileDescriptor, syscall.SOL_IP, syscall.IP_TRANSPARENT, 1); err != nil {
+ return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("set socket option: IP_TRANSPARENT: %s", err)}
+ }
+
+ if err = syscall.SetsockoptInt(fileDescriptor, syscall.IPPROTO_IP, syscall.IP_RECVORIGDSTADDR, 1); err != nil {
+ return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("set socket option: IP_RECVORIGDSTADDR: %s", err)}
+ }
+ // doesn't work
+ // if err = syscall.SetsockoptInt(fileDescriptor, syscall.IPPROTO_IPV6, syscall.IP_RECVORIGDSTADDR, 1); err != nil {
+ // return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("set socket option: IP_RECVORIGDSTADDR: %s", err)}
+ // }
+ // only ip
+ //if err = syscall.SetsockoptInt(fileDescriptor, syscall.IPPROTO_IPV6, syscall.IPV6_RECVPKTINFO, 1); err != nil {
+ // return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("set socket option: IP_RECVORIGDSTADDR: %s", err)}
+ //}
+ // IPV6_ORIGDSTADDR
+ if err = syscall.SetsockoptInt(fileDescriptor, syscall.IPPROTO_IPV6, 74, 1); err != nil {
+ return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("set socket option: IP_RECVORIGDSTADDR: %s", err)}
+ }
+ // no work
+ //if err = syscall.SetsockoptInt(fileDescriptor, syscall.IPPROTO_IPV6, syscall.IPV6_DSTOPTS, 1); err != nil {
+ // return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("set socket option: IP_RECVORIGDSTADDR: %s", err)}
+ //}
+ // New
+ //if err = syscall.SetsockoptInt(fileDescriptor, syscall.IPPROTO_IP, syscall.IP_PKTINFO, 1); err != nil {
+ // return nil, &net.OpError{Op: "listen", Net: network, Source: nil, Addr: laddr, Err: fmt.Errorf("set socket option: IP_RECVORIGDSTADDR: %s", err)}
+ //}
+
+ return listener, nil
+}
+
+// Handles UDP packets intercepted using TProxy.
+// Can send packets preserving original IP/port.
+type TProxyUDP struct {
+ con *net.UDPConn
+ con6 *net.UDPConn
+}
+
+// UDP write with source address control.
+func (tudp *TProxyUDP) WriteTo(data []byte, dstAddr *net.UDPAddr, srcAddr *net.UDPAddr) (int, error) {
+
+ // Attempt to write as UDP
+ cm4 := new(ipv4.ControlMessage)
+ cm4.Src = srcAddr.IP
+ oob := cm4.Marshal()
+ n, _, err := tudp.con.WriteMsgUDP(data, oob, dstAddr)
+ if err != nil {
+ n, err = tudp.con.WriteToUDP(data, dstAddr)
+ if err != nil {
+ log.Print("Failed to send DNS ", dstAddr, srcAddr)
+ }
+ }
+
+ return n, err // tudp.con.WriteTo(data, dstAddr)
+}
diff --git a/pkg/udp/udpproxy.go b/pkg/udp/udpproxy.go
index 7b1a8f6..656bb36 100644
--- a/pkg/udp/udpproxy.go
+++ b/pkg/udp/udpproxy.go
@@ -23,19 +23,18 @@
package udp
import (
+ "context"
"encoding/json"
"log"
"net"
"net/http"
- "net/url"
"strconv"
- "strings"
"sync"
"time"
- "github.com/costinm/hbone"
+ "github.com/costinm/meshauth"
+ "github.com/costinm/ssh-mesh/nio"
"github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/ugatesvc"
)
// TODO: For TUN capture, we can process the UDP packet directly, without going through the stack.
@@ -113,14 +112,14 @@ var (
// This should be sufficient for local capture and small p2p nets.
// In the mesh, UDP should be encapsulated in WebRTC or quic.
type UdpNat struct {
- ugate.Stats
+ nio.Stats
// External address - string
Dest string
// External address
DestAddr *net.UDPAddr
- //nio.Stream
+ //util.Stream
// bound to a local port (on the real network).
UDP *net.UDPConn
@@ -139,14 +138,14 @@ type UdpNat struct {
// This is typically a netstack or TProxy
var TransparentUDPWriter ugate.UdpWriter
-type UDPGate struct {
- cfg *ugatesvc.UGate
+type UDPListener struct {
+ cfg *ugate.UGate
// NAT
udpLock sync.RWMutex
ActiveUdp map[string]*UdpNat
- AllUdpCon map[string]*ugate.HostStats
+ //AllUdpCon map[string]*ugatesvc.HostStats
// UDP
// Capture return - sends packets back to client app.
@@ -155,49 +154,37 @@ type UDPGate struct {
// Timeout for UDP sockets. Default 60 sec.
ConnTimeout time.Duration
+ l *meshauth.PortListener
}
-func New(ug *ugatesvc.UGate) *UDPGate {
- udpg := &UDPGate{
- cfg: ug,
- ConnTimeout: 60 * time.Second,
- ActiveUdp: map[string]*UdpNat{},
- AllUdpCon: map[string]*ugate.HostStats{},
- }
- if ug.Mux != nil {
- udpg.InitMux(ug.Mux)
- }
- ug.UDPHandler = udpg
- for k, l := range ug.Config.Listeners {
- if strings.HasPrefix(k, "udp://") {
- l.Address = k
- udpg.Listener(l)
- log.Println("uGate: listen UDP ", l.Address, l.ForwardTo)
+func New(ug *ugate.UGate, l *meshauth.PortListener) *UDPListener {
+ if ug.UDPHandler == nil {
+ udpg := &UDPListener{
+ cfg: ug,
+ ConnTimeout: 60 * time.Second,
+ ActiveUdp: map[string]*UdpNat{},
+ //AllUdpCon: map[string]*ugatesvc.HostStats{},
}
+ udpg.l = l
+ udpg.InitMux(ug.Mux)
+ ug.UDPHandler = udpg
+ udpg.periodic()
}
- udpg.periodic()
- return udpg
+ return ug.UDPHandler.(*UDPListener)
}
-func (udpg *UDPGate) periodic() {
+func (udpg *UDPListener) periodic() {
FreeIdleSockets(udpg)
time.AfterFunc(60*time.Second, udpg.periodic)
}
-// http debug/ui
-
-func (udpg *UDPGate) InitMux(mux *http.ServeMux) {
- mux.HandleFunc("/dmesh/udpa", udpg.HttpUDPNat)
- mux.HandleFunc("/dmesh/udp", udpg.HttpAllUDP)
-}
+// http debug/metrics
-func (udpg *UDPGate) HttpAllUDP(w http.ResponseWriter, r *http.Request) {
- udpg.udpLock.RLock()
- defer udpg.udpLock.RUnlock()
- json.NewEncoder(w).Encode(udpg.AllUdpCon)
+func (udpg *UDPListener) InitMux(mux *http.ServeMux) {
+ mux.HandleFunc("/dmesh/udpa/"+udpg.l.Address, udpg.HttpUDPNat)
}
-func (udpg *UDPGate) HttpUDPNat(w http.ResponseWriter, r *http.Request) {
+func (udpg *UDPListener) HttpUDPNat(w http.ResponseWriter, r *http.Request) {
udpg.udpLock.RLock()
defer udpg.udpLock.RUnlock()
json.NewEncoder(w).Encode(udpg.ActiveUdp)
@@ -225,7 +212,7 @@ func (udpg *UDPGate) HttpUDPNat(w http.ResponseWriter, r *http.Request) {
// the client will see the local address of this node, and the same port that is used with the remote.
//
// udpN is the 'dialed connection' -
-func remoteConnectionReadLoop(gw *UDPGate, localAddr *net.UDPAddr, acceptConn *net.UDPConn, udpN *UdpNat, writer ugate.UdpWriter) {
+func remoteConnectionReadLoop(gw *UDPListener, localAddr *net.UDPAddr, acceptConn *net.UDPConn, udpN *UdpNat, writer ugate.UdpWriter) {
if DumpUdp {
log.Println("Starting remote loop for ", localAddr, udpN.ReverseSrcAddr, udpN.DestAddr, udpN.Dest)
}
@@ -234,7 +221,7 @@ func remoteConnectionReadLoop(gw *UDPGate, localAddr *net.UDPAddr, acceptConn *n
for {
// TODO: reuse, detect MTU. Need to account for netstack buffer ownership
- // upstreamConn is a UDP Listener bound to a random port, receiving messages
+ // upstreamConn is a UDP PortListener bound to a random port, receiving messages
// from the remote app (or any other app in case of STUN)
size, srcAddr, err := udpN.UDP.ReadFromUDP(buffer[0:cap(buffer)])
if err != nil {
@@ -275,7 +262,7 @@ func remoteConnectionReadLoop(gw *UDPGate, localAddr *net.UDPAddr, acceptConn *n
}
}
-func forwardReadLoop(gw *UDPGate, l *hbone.Listener, udpL *net.UDPConn) {
+func forwardReadLoop(gw *UDPListener, l *meshauth.PortListener, udpL *net.UDPConn) {
remoteA, err := net.ResolveUDPAddr("udp", l.ForwardTo)
if err != nil {
log.Println("Invalid forward address ", l.ForwardTo, err)
@@ -288,7 +275,7 @@ func forwardReadLoop(gw *UDPGate, l *hbone.Listener, udpL *net.UDPConn) {
defer bufferPoolUdp.Put(buffer)
for {
// TODO: reuse, detect MTU. Need to account for netstack buffer ownership
- // upstreamConn is a UDP Listener bound to a random port, receiving messages
+ // upstreamConn is a UDP PortListener bound to a random port, receiving messages
// from the remote app (or any other app in case of STUN)
size, srcAddr, err := udpL.ReadFromUDP(buffer[0:cap(buffer)])
if err != nil {
@@ -309,7 +296,7 @@ func forwardReadLoop(gw *UDPGate, l *hbone.Listener, udpL *net.UDPConn) {
udpCon, err := net.ListenUDP("udp", &net.UDPAddr{
Port: 0,
})
- setReceiveBuffer(udpCon, bufferSize)
+ SetReceiveBuffer(udpCon, bufferSize)
if err != nil {
log.Println("udp proxy failed to listen", err)
@@ -354,17 +341,15 @@ func forwardReadLoop(gw *UDPGate, l *hbone.Listener, udpL *net.UDPConn) {
// }
//}
-func (udpg *UDPGate) Listener(lc *hbone.Listener) {
+// Listener creates a regular UDP listener port
+func (udpg *UDPListener) Listener(lc *meshauth.PortListener) {
log.Println("Adding UDP ", lc)
- // port 0
- // TODO: attempt to use the localPort first
- ua, _ := url.Parse(lc.Address)
- _, p, _ := net.SplitHostPort(ua.Host)
+ _, p, _ := net.SplitHostPort(lc.Address)
pp, _ := strconv.Atoi(p)
udpCon, err := net.ListenUDP("udp", &net.UDPAddr{
Port: pp,
})
- setReceiveBuffer(udpCon, bufferSize)
+ SetReceiveBuffer(udpCon, bufferSize)
if err != nil {
log.Println("udp proxy failed to listen", err)
@@ -377,7 +362,7 @@ func (udpg *UDPGate) Listener(lc *hbone.Listener) {
// HandleUDP is processing a captured UDP packet. It can be captured by iptables TPROXY or
// netstack TUN.
// Will create a NAT, using a local port as source and translating back.
-func (udpg *UDPGate) HandleUdp(dstAddr net.IP, dstPort uint16, localAddr net.IP, localPort uint16, data []byte) {
+func (udpg *UDPListener) HandleUdp(dstAddr net.IP, dstPort uint16, localAddr net.IP, localPort uint16, data []byte) {
if dstPort == 1900 {
return
}
@@ -414,17 +399,17 @@ func (udpg *UDPGate) HandleUdp(dstAddr net.IP, dstPort uint16, localAddr net.IP,
return
}
- setReceiveBuffer(udpCon, bufferSize)
+ SetReceiveBuffer(udpCon, bufferSize)
udpN = &UdpNat{
UDP: udpCon,
}
- l := udpg.cfg.FindRoutePrefix(dstAddr, dstPort, "udp://")
- if l.ForwardTo != "" {
- udpN.DestAddr, err = net.ResolveUDPAddr("udp", l.ForwardTo)
+ l, _ := udpg.cfg.Cluster(context.Background(), net.JoinHostPort(dstAddr.String(), strconv.Itoa(int(dstPort)))) //FindRoutePrefix(dstAddr, dstPort, "udp://")
+ if l != nil {
+ udpN.DestAddr, err = net.ResolveUDPAddr("udp", l.Addr)
if err != nil {
- log.Println("Failed to resolve ", l.ForwardTo, err)
+ log.Println("Failed to resolve ", l.Addr, err)
return
}
udpN.ReverseSrcAddr = &net.UDPAddr{IP: dstAddr, Port: int(dstPort)}
@@ -470,7 +455,7 @@ const bufferSize = (1 << 20) * 2
// Called on the periodic cleanup thread (~60sec), or if too many sockets open.
// Will update udp stats. Default UDP timeout to 60 sec.
-func FreeIdleSockets(gw *UDPGate) {
+func FreeIdleSockets(gw *UDPListener) {
var clientsToTimeout []string
@@ -488,18 +473,18 @@ func FreeIdleSockets(gw *UDPGate) {
remote.Closed = true
clientsToTimeout = append(clientsToTimeout, client)
- hs, f := gw.AllUdpCon[remote.Dest]
- if !f {
- hs = &ugate.HostStats{Open: time.Now()}
- gw.AllUdpCon[remote.Dest] = hs
- }
- hs.Last = remote.LastRead
- hs.SentPackets += remote.SentPackets
- hs.SentBytes += remote.SentBytes
- hs.RcvdPackets += remote.RcvdPackets
- hs.RcvdBytes += remote.RcvdBytes
-
- hs.Count++
+ //hs, f := gw.AllUdpCon[remote.MeshCluster]
+ //if !f {
+ // hs = &ugatesvc.HostStats{Open: time.Now()}
+ // gw.AllUdpCon[remote.MeshCluster] = hs
+ //}
+ //hs.Last = remote.LastRead
+ //hs.SentPackets += remote.SentPackets
+ //hs.SentBytes += remote.SentBytes
+ //hs.RcvdPackets += remote.RcvdPackets
+ //hs.RcvdBytes += remote.RcvdBytes
+ //
+ //hs.Count++
} else {
//log.Printf("UDPC: active %v", remote)
active++
@@ -520,7 +505,7 @@ func FreeIdleSockets(gw *UDPGate) {
gw.udpLock.Unlock()
}
-func (gw *UDPGate) Close() error {
+func (gw *UDPListener) Close() error {
gw.udpLock.Lock()
//gw.closed = true
for _, conn := range gw.ActiveUdp {
diff --git a/pkg/uds/uds.go b/pkg/uds/uds.go
index 5306217..6829dfb 100644
--- a/pkg/uds/uds.go
+++ b/pkg/uds/uds.go
@@ -15,8 +15,8 @@ import (
"sync"
"syscall"
- "github.com/costinm/hbone/nio"
msgs "github.com/costinm/ugate/webpush"
+ "golang.org/x/exp/slog"
)
// uds provides helpers for passing credentials and files over UDS streams, and basic
@@ -83,6 +83,8 @@ type UdsServer struct {
var (
Debug = false
+
+ logger = slog.With("name", "uds")
)
// Create a UDS server listening on 'name'.
@@ -95,11 +97,11 @@ func NewServer(name string, mux *msgs.Mux) (*UdsServer, error) {
if err != nil {
return nil, err
}
- return &UdsServer{Name: name,
+ return &UdsServer{
+ Name: name,
listener: us,
Gid: -1,
mux: mux,
- //Handlers: map[string]MessageHandler{},
}, nil
}
@@ -112,6 +114,7 @@ func Dial(ifname string, mux *msgs.Mux, initial map[string]string) (*UdsConn, er
initial: initial,
mux: mux,
}
+
uds.SendMessageToRemote = uds.SendMessage
err := uds.Redial()
@@ -139,12 +142,11 @@ func (uds *UdsServer) Close() {
func (uds *UdsServer) accept() (*UdsConn, error) {
inS, err := uds.listener.AcceptUnix()
if err != nil {
- fmt.Println("Error accepting ", uds.Name, err)
return nil, err
}
err = enableUnixCredentials(inS)
if err != nil {
- log.Println("Error enabling unix creds ", err)
+ logger.Error("Error enabling unix creds ", "error", err)
}
uc := &UdsConn{
con: inS,
@@ -159,11 +161,11 @@ func (uds *UdsServer) accept() (*UdsConn, error) {
}
func (uds *UdsServer) Start() error {
- // TODO: stop and it's channel
+ // stop will happen when uds is closed.
for {
inS, err := uds.accept()
if err != nil {
- fmt.Println("Error accepting ", uds.Name, err)
+ logger.Error("Error accepting", "udsname", uds.Name, "error", err)
return err
}
go uds.serverStream(inS)
@@ -173,7 +175,7 @@ func (uds *UdsServer) Start() error {
var cnt = 0
-// Called after connecting to the remote UDS. Must send something, so credentials are passed.
+// Called after connecting to the remote UDS. Must send something, so user credentials are passed.
func (conn *UdsConn) serverHandshake(uds *UdsServer) error {
//data := make([]byte, 4096)
@@ -182,7 +184,9 @@ func (conn *UdsConn) serverHandshake(uds *UdsServer) error {
// First message from client should include unix credentials
// Should also include the identity of the node !
_, data, err := conn.nextMessage()
+
//ndata, pid, uid, gid, err := conn.GetUnixCreds(data)
+
if err != nil {
return errors.New(fmt.Sprint("Failed to read unix creds ", err))
}
@@ -194,6 +198,7 @@ func (conn *UdsConn) serverHandshake(uds *UdsServer) error {
conn.Name = fmt.Sprintf("udss:%d:%d:%d", conn.Uid, conn.Pid, cnt)
cnt++
+ // Respond so client can get server identity.
conn.SendMessageDirect("ok", nil, nil)
// First message: :open
@@ -482,16 +487,6 @@ func (uds *UdsConn) File() *os.File {
return fd
}
-func processUnixConn(bc *nio.Stream) error {
- uc, ok := bc.Out.(*net.UnixConn)
- if !ok {
- return errors.New("Unexpected con")
- }
- enableUnixCredentials(uc)
-
- return nil
-}
-
// Enable reception of PID/UID/GID
func enableUnixCredentials(conn *net.UnixConn) error {
viaf, err := conn.File()
diff --git a/pkg/uds/uds_test.go b/pkg/uds/uds_test.go
index e714def..0703b06 100644
--- a/pkg/uds/uds_test.go
+++ b/pkg/uds/uds_test.go
@@ -12,6 +12,8 @@ import (
)
func TestUDS(t *testing.T) {
+ //utel.InitDefaultHandler(nil)
+
fn := "testUDS"
us, err := NewServer(fn, msgs.DefaultMux)
defer os.Remove(fn)
@@ -20,6 +22,7 @@ func TestUDS(t *testing.T) {
return
}
go us.Start()
+
msgs.DefaultMux.AddHandler("srv", msgs.HandlerCallbackFunc(func(ctx context.Context, cmdS string, meta map[string]string, data []byte) {
log.Println(cmdS, meta, data)
}))
diff --git a/pkg/ugatesvc/accept.go b/pkg/ugatesvc/accept.go
deleted file mode 100644
index c540607..0000000
--- a/pkg/ugatesvc/accept.go
+++ /dev/null
@@ -1,204 +0,0 @@
-package ugatesvc
-
-import (
- "fmt"
- "log"
- "net"
-
- "github.com/costinm/hbone"
- "github.com/costinm/hbone/nio"
-)
-
-// Accepting connections on ports and extracting metadata, including sniffing.
-
-// WIP: special handling for egress, i.e. locally originated streams.
-// Identification:
-// - dedicated listener ports for iptables, socks5 or tun
-// - listeners with address 127.0.0.1
-// - connections with src/dst address in 127.0.0.0/8
-//
-// The last 2 are 'whitebox' mode, using the Port and address to select
-// the routes.
-//
-// After determining the target from meta or config the request is proxied.
-//func (pl *Listener) handleEgress(acceptedCon net.Stream) error {
-//
-// return nil
-//}
-
-// WIP: handling for accepted connections for this node.
-//func (pl *Listener) handleLocal(acceptedCon net.Stream) error {
-//
-// return nil
-//}
-
-// For BTS/H2 and iptables-in, the config for the actual listen port is virtual.
-// LocalAddr port determines which config to use for routing.
-// RemoteAddr is the (authenticated) remote VIP or the real client IP.
-//
-// TUN and iptables(out) are used for egress, remoteAddr is the destination on a remote
-// computer, and localAddr is on same computer and not very useful.
-
-// New style, based on lwip. Blocks until connect, proxy runs in background.
-func (ug *UGate) HandleTUN(conn net.Conn, ra *net.TCPAddr, la *net.TCPAddr) error {
- bconn := nio.GetStream(conn, conn)
- bconn.Direction = nio.StreamTypeOut
- ug.OnStream(bconn)
- defer ug.OnStreamDone(bconn)
-
- bconn.RemoteA = ra
- bconn.LocalA = la
-
- // Testing/debugging - localhost is captured by table local, rule 0.
- if bconn.Dest == "" {
- bconn.Dest = ra.String()
- log.Println("LTUN ", ra, la, bconn.Dest)
- }
-
- log.Println("TUN TCP ", bconn)
- // TODO: config ? Could be shared with iptables port
- return ug.HandleStream(bconn)
-}
-
-// Handle a virtual (multiplexed) stream, received over
-// another connection, for example H2 POST/CONNECT, etc
-// The connection will have metadata, may include identify of the caller.
-func (ug *UGate) HandleVirtualIN(bconn *nio.Stream) error {
- ug.OnStream(bconn)
- defer ug.OnStreamDone(bconn)
-
- return ug.HandleStream(bconn)
-}
-
-// handleSNI is intended for a dedicated SNI port.
-// Will use the Config.Routes to map the SNI host to a ForwardTo address. If not found,
-// will use a callback for a dynamic route.
-func (ug *UGate) handleSNI(str *nio.Stream) error {
- // Used to present the right cert
- _, str.ReadErr = ParseTLS(str)
- if str.ReadErr != nil {
- return str.ReadErr
- }
-
- route := ug.Config.Routes[str.Dest]
- if route != nil {
- if route.ForwardTo != "" {
- str.Dest = route.ForwardTo
- }
- if route.Handler != nil {
- // SOCKS and others need to send something back - we don't
- // have a real connection, faking it.
- str.PostDial(str, nil)
- str.Dest = fmt.Sprintf("%v", route.Handler)
- err := route.Handler.Handle(str)
- str.Close()
- return err
- }
- }
-
- // Default stream handling is proxy to the SNI dest.
- // Note that SNI does not include port number.
- str.ReadErr = ug.DialAndProxy(str)
- return nil
-}
-
-// Hamdle implements the common interface for handling accepted streams.
-// Will init and log the stream, then handle.
-func (ug *UGate) Handle(s *nio.Stream) {
- ug.OnStream(s)
- defer ug.OnStreamDone(s)
-
- ug.HandleStream(s)
-}
-
-func forwardTo(l net.Listener) string {
- if ul, ok := l.(*hbone.Listener); ok {
- return ul.ForwardTo
- }
- return ""
-}
-
-// A real accepted connection on a 'legacy' port. Will be forwarded to
-// the mesh.
-func (ug *UGate) handleTCPForward(bconn *nio.Stream) error {
- bconn.Direction = nio.StreamTypeForward
-
- ft := forwardTo(bconn.Listener)
- if ft != "" {
- bconn.Dest = ft
- }
-
- bconn.ReadErr = ug.HandleStream(bconn)
- return bconn.ReadErr
-}
-
-func (ug *UGate) handleTCPEgress(bconn *nio.Stream) error {
- bconn.Direction = nio.StreamTypeOut
-
- ft := forwardTo(bconn.Listener)
-
- bconn.Dest = ft
-
- bconn.ReadErr = ug.HandleStream(bconn)
- return bconn.ReadErr
-}
-
-// Auto-detect protocol on the wire, so routing info can be
-// extracted:
-// - TLS ( 22, 3)
-// - HTTP
-// - WS ( CONNECT )
-// - SOCKS (5)
-// - H2
-// - TODO: HAproxy
-//func sniff(pl *ugate.Listener, br *stream.Buffer) error {
-// br.Sniff()
-// var proto string
-//
-// for {
-// _, err := br.Fill()
-// if err != nil {
-// return err
-// }
-// off := br.end
-// if off >= 2 {
-// b0 := br.buf[0]
-// b1 := br.buf[1]
-// if b0 == 5 {
-// proto = ProtoSocks
-// break
-// }
-// // TLS or SNI - based on the hostname we may terminate locally !
-// if b0 == 22 && b1 == 3 {
-// // 22 03 01..03
-// proto = ProtoTLS
-// break
-// }
-// }
-// if off >= 7 {
-// if bytes.Equal(br.buf[0:7], []byte("CONNECT")) {
-// proto = ProtoConnect
-// break
-// }
-// }
-// if off >= len(h2ClientPreface) {
-// if bytes.Equal(br.buf[0:len(h2ClientPreface)], h2ClientPreface) {
-// proto = ProtoH2
-// break
-// }
-// }
-// }
-//
-// // All bytes in the buffer will be Read again
-// br.Reset(0)
-//
-// switch proto {
-// case ProtoSocks:
-// pl.gate.readSocksHeader(br)
-// case ProtoTLS:
-// pl.gate.sniffSNI(br)
-// }
-// br.Stream.Type = proto
-//
-// return nil
-//}
diff --git a/pkg/ugatesvc/handlers.go b/pkg/ugatesvc/handlers.go
deleted file mode 100644
index 869e703..0000000
--- a/pkg/ugatesvc/handlers.go
+++ /dev/null
@@ -1,355 +0,0 @@
-package ugatesvc
-
-import (
- "bytes"
- "encoding/json"
- "io"
- "log"
- "net"
- "net/http"
- "strings"
- "time"
-
- "github.com/costinm/hbone/nio"
- "github.com/costinm/ugate"
-)
-
-// HTTP handlers for admin, debug and testing
-
-// Control handler, also used for testing
-type EchoHandler struct {
-}
-
-var DebugEcho = false
-
-func (eh *EchoHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- if DebugEcho {
- log.Println("ECHOH ", r)
- }
- w.WriteHeader(200)
- w.(http.Flusher).Flush()
-
- // H2 requests require write to be flushed - buffering happens !
- // Wrap w.Body into Stream which does this automatically
- str := nio.NewStreamRequest(r, w, nil)
-
- eh.handle(str, false)
-}
-
-// StreamInfo tracks informations about one stream.
-type StreamInfo struct {
- LocalAddr net.Addr
- RemoteAddr net.Addr
-
- Meta http.Header
-
- RemoteID string
-
- ALPN string
-
- Dest string
-
- Type string
-}
-
-func GetStreamInfo(str *nio.Stream) *StreamInfo {
- si := &StreamInfo{
- LocalAddr: str.LocalAddr(),
- RemoteAddr: str.RemoteAddr(),
- Dest: str.Dest,
- Type: str.Type,
- }
- if str.Request != nil {
- si.Meta = str.Request.Header
- }
- if str.TLS != nil {
- si.ALPN = str.TLS.NegotiatedProtocol
- }
-
- return si
-}
-
-func (*EchoHandler) handle(str *nio.Stream, serverFirst bool) error {
- d := make([]byte, 2048)
- si := GetStreamInfo(str)
- si.RemoteID = RemoteID(str)
- b1, _ := json.Marshal(si)
- b := &bytes.Buffer{}
- b.Write(b1)
- b.Write([]byte{'\n'})
-
- if serverFirst {
- str.Write(b.Bytes())
- }
- //ac.SetDeadline(time.Now().StartListener(5 * time.Second))
- n, err := str.Read(d)
- if err != nil {
- return err
- }
- if DebugEcho {
- log.Println("ECHO rcv", n, "strid", str.StreamId)
- }
- if !serverFirst {
- str.Write(b.Bytes())
- }
- str.Write(d[0:n])
-
- io.Copy(str, str)
- if nio.DebugClose {
- log.Println("ECHO DONE", str.StreamId)
- }
- return nil
-}
-func (eh *EchoHandler) String() string {
- return "Echo"
-}
-func (eh *EchoHandler) Handle(ac *nio.Stream) error {
- if DebugEcho {
- log.Println("ECHOS ", ac)
- }
- return eh.handle(ac, false)
-}
-
-//func (h2p *H2P) InitPush(mux http.ServeMux) {
-// mux.Handle("/push/*", h2p)
-//}
-//
-//type H2P struct {
-// // Key is peer WorkloadID.
-// // TODO: multiple monitors per peer ?
-// mons map[string]*Pusher
-//
-// // Active pushed connections.
-// // Key is peerID / stream WorkloadID
-// active map[string]*net.Stream
-//}
-//
-//// Single Pusher - one for each monitor
-//type Pusher struct {
-// ch chan string
-//}
-//
-//func NewPusher() *Pusher {
-// return &Pusher{
-// ch: make(chan string, 10),
-// }
-//}
-//
-//func (h2p *H2P) ServeHTTP(w http.ResponseWriter, req *http.Request) {
-// if strings.HasPrefix(req.URL.Path, "/push/mon/") {
-// h2p.HTTPHandlerPushPromise(w, req)
-// return
-// }
-// if strings.HasPrefix(req.URL.Path, "/push/up/") {
-// h2p.HTTPHandlerPost(w, req)
-// return
-// }
-//
-// h2p.HTTPHandlerPush(w, req)
-//}
-//
-//// Should be mapped to /push/*
-//// If Method is GET ( standard stack ), only send the content of the con, expect
-//// a separate connection for the POST side.
-//func (h2p *H2P) HTTPHandlerPush(w http.ResponseWriter, req *http.Request) {
-// w.WriteHeader(200)
-// w.Write([]byte{1})
-// io.Copy(w, req.Body)
-//}
-//
-//func (h2p *H2P) HTTPHandlerPost(w http.ResponseWriter, req *http.Request) {
-// w.WriteHeader(200)
-// w.Write([]byte{1})
-// io.Copy(w, req.Body)
-//}
-//
-//// Hanging - will send push frames, corresponding HTTPHandlerPush will be called to service
-//// the stream. When used with the 'standard' h2 stack only GET is supported.
-//func (h2p *H2P) HTTPHandlerPushPromise(w http.ResponseWriter, req *http.Request) {
-// w.WriteHeader(200)
-//
-// p := NewPusher()
-//
-// ctx := req.Context()
-// for {
-// select {
-// case ev := <-p.ch:
-// opt := &http.PushOptions{
-// Header: http.Header{
-// "User-Agent": {"foo"},
-// },
-// }
-// // This will result in a separate handler to get the message
-// if err := w.(http.Pusher).Push("/push/"+ev, opt); err != nil {
-// fmt.Println("error pushing", err)
-// return
-// }
-// case <-ctx.Done():
-// return
-// }
-// }
-//}
-
-// Debug handlers - on default mux, on 15000
-
-// curl -v http://s6.webinf.info:15000/...
-// - /debug/vars
-// - /debug/pprof
-
-func (gw *UGate) HttpTCP(w http.ResponseWriter, r *http.Request) {
- gw.m.RLock()
- defer gw.m.RUnlock()
- w.Header().Add("content-type", "application/json")
- err := json.NewEncoder(w).Encode(gw.ActiveTcp)
- if err != nil {
- log.Println("Error encoding ", err)
- }
-}
-
-// HttpNodesFilter returns the list of directly connected nodes.
-//
-// Optional 't' parameter is a timestamp used to filter recently seen nodes.
-// Uses NodeByID table.
-func (gw *UGate) HttpNodesFilter(w http.ResponseWriter, r *http.Request) {
- gw.m.RLock()
- defer gw.m.RUnlock()
- r.ParseForm()
- w.Header().Add("content-type", "application/json")
- t := r.Form.Get("t")
- rec := []*ugate.Cluster{}
- t0 := time.Now()
- for _, n := range gw.NodesByID {
- if t != "" {
- if t0.Sub(n.LastSeen) < 6000*time.Millisecond {
- rec = append(rec, n)
- }
- } else {
- rec = append(rec, n)
- }
- }
-
- je := json.NewEncoder(w)
- je.SetIndent(" ", " ")
- je.Encode(rec)
- return
-}
-
-func (gw *UGate) HttpH2R(w http.ResponseWriter, r *http.Request) {
- gw.m.RLock()
- defer gw.m.RUnlock()
-
- json.NewEncoder(w).Encode(gw.ActiveTcp)
-}
-
-//// WIP: Istio-style signing
-//func (gw *UGate) SignCert(w http.ResponseWriter, r *http.Request) {
-// // TODO: json and raw proto
-// // use a list of 'authorized' OIDC and roots ( starting with loaded istio and k8s pub )
-// // get the csr and sign
-//}
-//
-
-// HandleID is the first request in a MUX connection.
-//
-// If the request is authenticated, we'll track the node.
-// For QUIC, mTLS handshake completes after 0RTT requests are received, so JWT is
-// needed.
-func (gw *UGate) HandleID(w http.ResponseWriter, r *http.Request) {
- f := r.Header.Get("from")
- if f == "" {
- w.WriteHeader(http.StatusUnauthorized)
- return
- }
- //n := gw.GetOrAddNode(f)
-
- w.WriteHeader(200)
- w.Write([]byte(gw.Auth.ID))
-}
-
-// HandleTCPPRoxy is called for CONNECT and /dm/ADDRESS
-// TODO: also handle /ipfs/... for compat.
-func (gw *UGate) HandleTCPProxy(w http.ResponseWriter, r *http.Request) {
-
- // Create a stream, used for proxy with caching.
- str := nio.NewStreamRequest(r, w, nil)
-
- if r.Method == "CONNECT" {
- str.Dest = r.Host
- } else {
- parts := strings.Split(r.RequestURI, "/")
- str.Dest = parts[2]
- }
-
- str.PostDialHandler = func(conn net.Conn, err error) {
- if err != nil {
- w.Header().Add("Error", err.Error())
- w.WriteHeader(500)
- w.(http.Flusher).Flush()
- return
- }
- //w.Header().Set("Trailer", "X-Close")
- w.WriteHeader(200)
- w.(http.Flusher).Flush()
- }
- defer func() {
- // Handler is done - even if it didn't call close, prevent calling it again.
- if nio.DebugClose {
- log.Println("HTTP.Close - handler done, no close ", str.Dest)
- }
- str.ServerClose = true
- }()
-
- // Treat it as regular stream forwarding
- gw.HandleVirtualIN(str)
-
- if nio.DebugClose {
- log.Println("Handler closed for ", r.RequestURI)
- }
-
-}
-
-// Inbound TLS over H2C.
-// Used in KNative or similar environmnets that get a H2 POST or CONNECT
-// Dest is local.
-func (gw *UGate) HandleTLSoverH2(w http.ResponseWriter, r *http.Request) {
- // Create a stream, used for proxy with caching.
- str := nio.NewStreamRequest(r, w, nil)
-
- parts := strings.Split(r.RequestURI, "/")
- str.Dest = parts[2]
-
- str.PostDialHandler = func(conn net.Conn, err error) {
- if err != nil {
- w.Header().Add("Error", err.Error())
- w.WriteHeader(500)
- w.(http.Flusher).Flush()
- return
- }
- //w.Header().Set("Trailer", "X-Close")
- w.WriteHeader(200)
- w.(http.Flusher).Flush()
- }
- defer func() {
- // Handler is done - even if it didn't call close, prevent calling it again.
- if nio.DebugClose {
- log.Println("HTTP.Close - handler done, no close ", str.Dest)
- }
- str.ServerClose = true
- }()
-
- tlsCfg := gw.TLSConfig
- tc, err := gw.NewTLSConnIn(str.Context(), nil, nil, str, tlsCfg)
- if err != nil {
- str.ReadErr = err
- log.Println("TLS: ", str.RemoteAddr(), str.Dest, err)
- return
- }
-
- // Treat it as regular stream forwarding
- gw.HandleVirtualIN(tc)
-
- if nio.DebugClose {
- log.Println("Handler closed for ", r.RequestURI)
- }
-
-}
diff --git a/pkg/ugatesvc/hbone.go b/pkg/ugatesvc/hbone.go
deleted file mode 100644
index cb38ed9..0000000
--- a/pkg/ugatesvc/hbone.go
+++ /dev/null
@@ -1,193 +0,0 @@
-package ugatesvc
-
-import (
- "context"
- "errors"
- "fmt"
- "io"
- "log"
- "net"
- "net/http"
- "runtime/debug"
- "strings"
- "time"
-
- "github.com/costinm/hbone/nio"
- "golang.org/x/net/http2"
-)
-
-// Dedicated BTS handler, for accepted connections with TLS.
-//
-// Port 443 (if root or redirected), or BASE + 7
-//
-// curl https://$NAME/ --connect-to $NAME:443:127.0.0.1:15007
-func (ug *UGate) acceptedHbone(rawStream *nio.Stream) error {
-
- tlsCfg := ug.TLSConfig
- tc, err := ug.NewTLSConnIn(rawStream.Context(), rawStream.Listener, nil, rawStream, tlsCfg)
- if err != nil {
- rawStream.ReadErr = err
- log.Println("TLS: ", rawStream.RemoteAddr(), rawStream.Dest, err)
- return nil
- }
-
- // Handshake done. Now we have access to the ALPN.
- tc.PostDial(tc, nil)
-
- // http2 and http expect a net.Listener, and do their own accept()
- ug.H2Handler.h2Server.ServeConn(
- tc,
- &http2.ServeConnOpts{
- Handler: ug.H2Handler, // Also plain text, needs to be upgraded
- Context: tc.Context(), // associated with the stream, with cancel
-
- //Context: // can be used to cancel, pass meta.
- // h2 adds http.LocalAddrContextKey(NetAddr), ServerContextKey (*Server)
- })
- return nil
-}
-
-// Handles an accepted connection with plain text h2, intended for
-// hbone protocol.
-func (ug *UGate) acceptedHboneC(tc *nio.Stream) error {
- tc.PostDial(tc, nil)
- ug.H2Handler.h2Server.ServeConn(
- tc,
- &http2.ServeConnOpts{
- Handler: http.HandlerFunc(ug.H2Handler.httpHandleHboneC), // Also plain text, needs to be upgraded
- Context: tc.Context(), // associated with the stream, with cancel
- //Context: // can be used to cancel, pass meta.
- // h2 adds http.LocalAddrContextKey(NetAddr), ServerContextKey (*Server)
- })
- return nil
-}
-
-func (l *H2Transport) httpHandleHboneC(w http.ResponseWriter, r *http.Request) {
- t0 := time.Now()
- defer func() {
- // TODO: add it to an event buffer
- l.ug.OnHClose("Hbone", "", "", r, time.Since(t0))
-
- if r := recover(); r != nil {
- fmt.Println("Recovered in hbone", r)
-
- debug.PrintStack()
-
- // find out exactly what the error was and set err
- var err error
-
- switch x := r.(type) {
- case string:
- err = errors.New(x)
- case error:
- err = x
- default:
- err = errors.New("Unknown panic")
- }
- if err != nil {
- fmt.Println("ERRROR: ", err)
- }
- }
- }()
-
- // TODO: parse Envoy / hbone headers.
-
- if nio.DebugClose {
- log.Println("Hbone-RoundTripStart ", r.Method, r.URL, r.Proto, r.Header, RemoteID, "", r.RemoteAddr)
- }
-
- // TCP proxy for SSH
- if r.Method == "CONNECT" || strings.HasPrefix(r.RequestURI, "/_hbone/") {
- l.ug.HandleTCPProxy(w, r)
- }
-
- tlsCfg := l.ug.TLSConfig
-
- // Create a stream, used for proxy with caching.
- rawStream := nio.NewStreamRequest(r, w, nil)
-
- tc, err := l.ug.NewTLSConnIn(rawStream.Context(), rawStream.Listener, []string{"h2"}, rawStream,
- tlsCfg)
- if err != nil {
- rawStream.ReadErr = err
- log.Println("TLS: ", rawStream.RemoteAddr(), rawStream.Dest, err)
- return
- }
-
- // TODO: All Istio checks go here. The TLS handshake doesn't check
- // root cert or anything - this is proof of concept only, to eval
- // perf.
-
- if tc.TLS.NegotiatedProtocol == "h2" {
- // http2 and http expect a net.Listener, and do their own accept()
- l.ug.H2Handler.h2Server.ServeConn(
- tc,
- &http2.ServeConnOpts{
- Handler: http.HandlerFunc(l.ug.H2Handler.httpHandleHboneCHTTP),
- Context: tc.Context(), // associated with the stream, with cancel
- })
- } else {
- // HTTP/1.1
- // TODO. Typically we want to upgrade over the wire to H2
- }
-}
-
-// At this point we got the TLS stream over H2, and forward to the app
-// We still need to know if the app is H2C or HTTP/1.1
-func (l *H2Transport) httpHandleHboneCHTTP(w http.ResponseWriter, r *http.Request) {
- l.ForwardHTTP(w, r, "127.0.0.1:8080")
-}
-
-// HboneCat copies stdin/stdout to a HBONE stream.
-func HboneCat(ug *UGate, urlOrHost string, tls bool, stdin io.ReadCloser,
- stdout io.WriteCloser) error {
- i, o := io.Pipe()
-
- if !strings.HasPrefix(urlOrHost, "https://") {
- h, p, err := net.SplitHostPort(urlOrHost)
- if err != nil {
- return err
- }
- urlOrHost = "https://" + h + "/hbone/:" + p
- }
- r, _ := http.NewRequest("POST", urlOrHost, i)
- res, err := ug.RoundTrip(r)
- if err != nil {
- return err
- }
-
- var nc *nio.Stream
- if tls {
- plain := nio.NewStreamRequestOut(r, o, res, nil)
- nc, err = ug.NewTLSConnOut(context.Background(), plain, ug.TLSConfig,
- "", []string{"h2"})
- if err != nil {
- return err
- }
- } else {
- nc = nio.NewStreamRequestOut(r, o, res, nil)
- }
- go func() {
- b1 := make([]byte, 1024)
- for {
- n, err := nc.Read(b1)
- if err != nil {
- stdout.Close()
- stdin.Close()
- log.Println("Tun read err", err)
- return
- }
- stdout.Write(b1[0:n])
- }
- }()
-
- b1 := make([]byte, 1024)
- for {
- n, err := stdin.Read(b1)
- if err != nil {
- return err
- }
- nc.Write(b1[0:n])
- }
- return nil
-}
diff --git a/pkg/ugatesvc/headers.go b/pkg/ugatesvc/headers.go
deleted file mode 100644
index 1c96e41..0000000
--- a/pkg/ugatesvc/headers.go
+++ /dev/null
@@ -1,173 +0,0 @@
-package ugatesvc
-
-import (
- "bufio"
- "bytes"
- "encoding/binary"
- "errors"
- "log"
- "net/http"
- "net/textproto"
-
- "github.com/costinm/hbone/nio"
-)
-
-// There are few options on how to pass stream metadata around:
-//
-// Transport proto:
-// - H2 - clear protocol, but has overhead and complexity and because
-// of muxing we can't splice
-//
-// Splice-able proto:
-// - use HTTP/1.1 CONNECT - and mime headers
-// - use HA Proxy - custom binary
-// - use a proto (possibly with simplified proto parsing), like Istio
-// - ???
-//
-// A mixed mode is also possible - proto in a h2 or http header.
-// Encoding/decoding speed and memory use are the key - technically
-// all options can be supported.
-
-type MimeEncoder struct {
-}
-
-func (*MimeEncoder) Unmarshal(s *nio.Stream) (done bool, err error) {
- buf, err := s.Fill(5)
- if err != nil {
- return false, err
- }
-
- len := binary.LittleEndian.Uint32(buf[1:])
- if len > 32*1024 {
- return false, errors.New("header size")
- }
-
- buf, err = s.Fill(5 + int(len))
- if err != nil {
- return false, err
- }
-
- hr := textproto.NewReader(bufio.NewReader(bytes.NewBuffer(buf[5:])))
- mh, err := hr.ReadMIMEHeader()
- s.InHeader = http.Header(mh)
-
- // Skip the headers -
- s.Skip(5 + int(len))
-
- if nio.DebugClose {
- log.Println("Stream.receiveHeaders ", s.StreamId, s.InHeader, s.RBuffer().Size())
- }
-
- return true, nil
-}
-
-func (*MimeEncoder) Marshal(s *nio.Stream) error {
- bb := s.WBuffer()
- h := s.InHeader
- if s.Direction == nio.StreamTypeOut ||
- s.Direction == nio.StreamTypeUnknown {
- h = s.OutHeader
- }
-
- bb.WriteByte(2) // To differentiate from regular H3, using 0
- bb.Write([]byte{0, 0, 0, 0})
- err := s.OutHeader.Write(bb)
- data := bb.Bytes()
-
- binary.LittleEndian.PutUint32(data[1:], uint32(bb.Size()-5))
- if err != nil {
- return err
- }
-
- _, err = s.Write(data)
-
- if err != nil {
- return err
- }
-
- if nio.DebugClose {
- log.Println("Stream.sendHeaders ", s.StreamId, h)
- }
-
- return nil
-}
-
-// BEncoder is a header encoder using a compact encoding, inspired
-// from CBOR, CoAP, FlatBuffers.
-//
-// It is an experiment on evaluating impact of header format on
-// latency for small requests (streams).
-//
-// I am trying to keep the actual encoding wire-compatible with protobuf,
-// but with a careful proto:
-// - flat - to avoid the length-prefix
-// - short tags - look like 1 byte tag in other encodings
-// - 'RoundTripStart' and 'end' fields - regular fields used as delimiters.
-// Could also use (deprecated) RoundTripStart(3)/stop(4) group.
-// See https://groups.google.com/g/protobuf/c/UKpsthqAmjw for benefits
-// of the deprecated group.
-//
-// Tags use last 3 bits as:
-// 0=varint, 1-64fixed, 2=len-delim, 5=32fixed.
-type BEncoder struct {
-}
-
-func (*BEncoder) AddHeader(s *nio.Stream, k, v []byte) {
- bb := s.WBuffer()
- if bb.Size() == 0 {
- bb.WriteByte(0)
- //bb.WriteByte(0x08) // tag=1, varint
- bb.WriteUnint32(0) // header-RoundTripStart
- }
- bb.WriteByte(0x12) // tag=2, len-delim
- bb.WriteVarint(int64(len(k)))
- bb.Write(k)
- bb.WriteByte(0x12) // tag=2, len-delim
- bb.WriteVarint(int64(len(v)))
- bb.Write(v)
-}
-
-func (*BEncoder) Unmarshal(s *nio.Stream) (done bool, err error) {
- h, err := s.Fill(5)
- if err != nil {
- return false, err
- }
- if h[0] != 0 {
- return false, errors.New("unexpected delim")
- }
-
- // WIP
-
- return true, nil
-}
-
-func (*BEncoder) Marshal(s *nio.Stream) error {
- bb := s.WBuffer()
- h := s.InHeader
- if s.Direction == nio.StreamTypeOut ||
- s.Direction == nio.StreamTypeUnknown {
- h = s.OutHeader
- }
- // TODO: leave 5 bytes at RoundTripStart to reproduce streaming gRPC format
- bb.WriteByte(0x08) // tag=1, varint
- bb.WriteByte(1) // header-RoundTripStart
-
- for k, vv := range h {
- for _, v := range vv {
- bb.WriteByte(0x12) // tag=2, len-delim
- bb.WriteVarint(int64(len(k)))
- bb.Write([]byte(k))
- bb.WriteByte(0x12) // tag=2, len-delim
- bb.WriteVarint(int64(len(v)))
- bb.Write([]byte(v))
- }
- }
- bb.WriteByte(0x08)
- bb.WriteByte(2)
-
- if nio.DebugClose {
- log.Println("Stream.sendHeaders ", s.StreamId, h)
- }
-
- return nil
-}
diff --git a/pkg/ugatesvc/http.go b/pkg/ugatesvc/http.go
deleted file mode 100644
index 4f5a1d2..0000000
--- a/pkg/ugatesvc/http.go
+++ /dev/null
@@ -1,369 +0,0 @@
-package ugatesvc
-
-import (
- "bytes"
- "crypto/tls"
- "errors"
- "fmt"
- "log"
- "net"
- "net/http"
- "os"
- "runtime/debug"
- "sync"
- "time"
-
- "github.com/costinm/hbone/nio"
- "github.com/costinm/meshauth"
- "github.com/costinm/ugate"
- "golang.org/x/net/http2"
-)
-
-// HTTP2 based transport, using the standard library.
-// This handles the main https port (BTS), as well as QUIC/H3
-// Will authenticate the request if possible ( JWT or mTLS ).
-
-// It also implements http.Handler, and can be registered with a HTTP/2 or HTTP/1 server.
-// For HTTP/1 it will use websocket, with standard TLS and SPDY for crypto or mux.
-// For HTTP/2 it will the normal connection if mTLS was negotiated.
-// Otherwise will do a TLS+SPDY handshake for the POST method.
-type H2Transport struct {
- ug *UGate
-
- // the 'listener' object accepting
- httpListener *listener
-
- // Transport object for http2 library
- h2t *http2.Transport
- h2Server *http2.Server
-
- // Included file server, for UI.
- fs http.Handler
- conns map[*http2.ClientConn]*ugate.Cluster
-
- m sync.RWMutex
-}
-
-func NewH2Transport(ug *UGate) (*H2Transport, error) {
- h2 := &H2Transport{
- ug: ug,
- httpListener: newListener(),
- conns: map[*http2.ClientConn]*ugate.Cluster{},
- h2t: &http2.Transport{
- ReadIdleTimeout: 10000 * time.Second,
- StrictMaxConcurrentStreams: false,
- AllowHTTP: true,
- },
- }
- h2.h2Server = &http2.Server{}
-
- if _, err := os.Stat("./www"); err == nil {
- h2.fs = http.FileServer(http.Dir("./www"))
- ug.Mux.Handle("/", h2.fs)
- }
-
- //ug.Transport.HandleFunc("/h2r/", h2.HandleH2R)
-
- ug.Mux.HandleFunc("/_dm/", ug.HandleID)
- ug.Mux.HandleFunc("/dm/", ug.HandleTCPProxy)
-
- ug.Mux.HandleFunc("/hbone/", ug.HandleTCPProxy)
- ug.Mux.HandleFunc("/hbonec/", ug.HandleTLSoverH2)
- ug.Mux.HandleFunc("/_hb/", ug.HandleTCPProxy)
- ug.Mux.HandleFunc("/_hbc/", ug.HandleTLSoverH2)
-
- // Plain HTTP requests - we only care about CONNECT/ws
- go http.Serve(h2.httpListener, h2)
-
- return h2, nil
-}
-
-// Common entry point for H1, H2 - both plain and tls
-// Will do the 'common' operations - authn, authz, logging, metrics for all BTS and regular HTTP.
-//
-// Important:
-// When using for BTS we need to work around golang http stack implementation.
-// This should be used as fallback - QUIC and WebRTC have proper mux and TUN support.
-// In particular, while H2 POST and CONNECT allow req/res Body to act as TCP stream,
-// the closing (FIN/RST) are very tricky:
-// - ResponseWriter (in BTS server) does not have a 'Close' method, it is closed after
-// the method returns. That means we can't signal the TCP FIN or RST, which breaks some
-// protocols.
-// - The request must be fully consumed before the method returns.
-func (l *H2Transport) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- t0 := time.Now()
- var RemoteID string
- var SAN string
- defer func() {
- // TODO: add it to an event buffer
- l.ug.OnHClose("HTTP", RemoteID, SAN, r, time.Since(t0))
- if r := recover(); r != nil {
- fmt.Println("Recovered in f", r)
-
- debug.PrintStack()
-
- // find out exactly what the error was and set err
- var err error
-
- switch x := r.(type) {
- case string:
- err = errors.New(x)
- case error:
- err = x
- default:
- err = errors.New("Unknown panic")
- }
- if err != nil {
- fmt.Println("ERRROR: ", err)
- }
- }
- }()
-
- // TODO: parse Envoy
- // https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers
- // In particular:
- //x-forwarded-client-cert: By=http://frontend.lyft.com;
- // Hash=468..;
- // URI=http://testclient.lyft.com,
- // By=http://backend.lyft.com;
- // Hash=9ba61d6425303443;
- // URI=http://frontend.lyft.com;DNS=foo.com
-
- vapidH := r.Header["Authorization"]
- if len(vapidH) > 0 {
- tok, pub, err := meshauth.CheckVAPID(vapidH[0], time.Now())
- if err == nil {
- RemoteID = meshauth.IDFromPublicKeyBytes(pub)
- SAN = tok.Sub
- }
- }
-
- tls := r.TLS
- // If the request was handled by normal uGate listener.
- us := r.Context().Value("nio.Stream")
- if ugs, ok := us.(*nio.Stream); ok {
- tls = ugs.TLS
- r.TLS = tls
- }
- // other keys:
- // - http-server (*http.Server)
- // - local-addr - *net.TCPAddr
- //
-
- if tls != nil && len(tls.PeerCertificates) > 0 {
- pk1 := tls.PeerCertificates[0].PublicKey
- RemoteID = meshauth.IDFromPublicKey(pk1)
- // TODO: Istio-style, signed by a trusted CA. This is also for SSH-with-cert
- sans, _ := meshauth.GetSAN(tls.PeerCertificates[0])
- if len(sans) > 0 {
- SAN = sans[0]
- }
- }
- // Using the 'from' header internally
- if RemoteID != "" {
- r.Header.Set("from", RemoteID)
- } else {
- r.Header.Del("from")
- }
-
- if nio.DebugClose {
- log.Println("HTTP-RoundTripStart ", r.Method, r.URL, r.Proto, r.Header, RemoteID, SAN, r.RemoteAddr)
- }
-
- // TODO: authz for each case !!!!
-
- // Explicit hostname - forwardTo the node.
- // The request may be a BTS TCP proxy or HTTP - either way forwarding is the same
- // if the dest is a mesh node (BTS).
- //
- // Special case: local plain text http or http2 server ( sidecar )
- host, found := l.ug.Config.Clusters[r.Host]
- if found {
- l.ForwardHTTP(w, r, host.Addr)
- return
- }
-
- if r.Method == "CONNECT" {
- l.ug.HandleTCPProxy(w, r)
- return
- }
-
- l.ug.Mux.ServeHTTP(w, r)
-}
-
-// Handle accepted connection on a port declared as "http"
-// Will sniff H2 and http/1.1 and use the right handler.
-//
-// Ex: curl localhost:9080/debug/vars --http2-prior-knowledge
-func (t *H2Transport) handleHTTPListener(bconn *nio.Stream) error {
-
- err := SniffH2(bconn)
- if err != nil {
- return err
- }
- ctx := bconn.Context()
-
- if bconn.Type == ugate.ProtoH2 {
- bconn.TLS = &tls.ConnectionState{
- Version: tls.VersionTLS12,
- CipherSuite: tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
- }
- t.h2Server.ServeConn(
- bconn,
- &http2.ServeConnOpts{
- Handler: t, // Also plain text, needs to be upgraded
- Context: ctx, // associated with the stream, with cancel
-
- //Context: // can be used to cancel, pass meta.
- // h2 adds http.LocalAddrContextKey(NetAddr), ServerContextKey (*Server)
- })
- } else {
- bconn.Type = ugate.ProtoHTTP
- // TODO: identify 'the proxy protocol'
- // port is marked as HTTP - assume it is HTTP
- t.httpListener.incoming <- bconn
- // TODO: wait for connection to be closed.
- <-ctx.Done()
- }
-
- return nil
-}
-
-var (
- // ClientPreface is the string that must be sent by new
- // connections from clients.
- h2ClientPreface = []byte("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n")
-)
-
-func SniffH2(s *nio.Stream) error {
- var proto string
-
- for {
- buf, err := s.Fill(0)
- if err != nil {
- return err
- }
-
- if ix := bytes.IndexByte(buf, '\n'); ix >= 0 {
- if bytes.Contains(buf, []byte("HTTP/1.1")) {
- proto = ugate.ProtoHTTP
- break
- }
- }
- if ix := bytes.IndexByte(buf, '\n'); ix >= 0 {
- if bytes.Contains(buf, []byte("HTTP/2.0")) {
- proto = ugate.ProtoH2
- break
- }
- }
- }
-
- s.Type = proto
-
- return nil
-}
-
-// Handle implements the connection interface for uGate, for HTTPS
-// listeners.
-//
-// Blocking.
-func (t *H2Transport) HandleHTTPS(str *nio.Stream) error {
- // http2 and http expect a net.Listener, and do their own accept()
- if str.TLS != nil && str.TLS.NegotiatedProtocol == "h2" {
- t.h2Server.ServeConn(
- str,
- &http2.ServeConnOpts{
- Handler: t, // Also plain text, needs to be upgraded
- Context: str.Context(), // associated with the stream, with cancel
-
- //Context: // can be used to cancel, pass meta.
- // h2 adds http.LocalAddrContextKey(NetAddr), ServerContextKey (*Server)
- })
- return nil
- }
-
- // Else: HTTP/1.1
- t.httpListener.incoming <- str
- // TODO: wait for connection to be closed.
- <-str.Context().Done()
-
- return nil
-}
-
-func (l *H2Transport) Close() error {
- return nil
-}
-
-// Listener backed on an chan. Go HTTP stack requires a Listener
-// implementation - use with http.Serve().
-// Used with a port sniffer - i.e. a real listener will identify HTTP
-// and H2 requests, and dispatch to the channel listener for HTTP.
-type listener struct {
- l net.Listener
-
- closed chan struct{}
- incoming chan net.Conn
-}
-
-func newListener() *listener {
- return &listener{
- incoming: make(chan net.Conn),
- closed: make(chan struct{}),
- }
-}
-
-func (l *listener) Close() error {
- if l.l != nil {
- return l.l.Close()
- }
- l.closed <- struct{}{}
- return nil
-}
-
-func (l *listener) Addr() net.Addr {
- return l.l.Addr()
-}
-
-func (l *listener) Accept() (net.Conn, error) {
- for {
- select {
- case c, ok := <-l.incoming:
-
- if !ok {
- return nil, fmt.Errorf("listener is closed")
- }
-
- //if l.t.Gater != nil && !(l.t.Gater.InterceptAccept(c) && l.t.Gater.InterceptSecured(n.DirInbound, c.RemotePeer(), c)) {
- // c.Close()
- // continue
- //}
- return c, nil
- case <-l.closed:
- return nil, fmt.Errorf("listener is closed")
- }
- }
-}
-
-//type HttpClientStream struct {
-// nio.Stream
-// *http.Response
-// request *http.Request
-//}
-//
-//func NewHttpClientStream(s *nio.Stream) *HttpClientStream {
-// h := &HttpClientStream{
-// }
-// return h
-//}
-//
-//type HttpServerStream struct {
-// nio.Stream
-// http.ResponseWriter
-// request *http.Request
-//}
-//
-//func NewHttpServerStream(s *nio.Stream) *HttpServerStream {
-// h := &HttpServerStream{
-// }
-// return h
-//}
diff --git a/pkg/ugatesvc/http_proxy.go b/pkg/ugatesvc/http_proxy.go
deleted file mode 100644
index ed7e355..0000000
--- a/pkg/ugatesvc/http_proxy.go
+++ /dev/null
@@ -1,198 +0,0 @@
-package ugatesvc
-
-import (
- "context"
- "io"
- "log"
- "net"
- "net/http"
- "strings"
-
- "github.com/costinm/hbone/nio"
-)
-
-func (ht *H2Transport) ForwardHTTP(w http.ResponseWriter, r *http.Request, pathH string) {
- r.Host = pathH
- r1 := CreateUpstreamRequest(w, r)
-
- r1.URL.Scheme = "http"
-
- // will be used by RoundTrip.
- r1.URL.Host = pathH
-
- // This uses the BTS/H2 protocol or reverse path.
- // Forward to regular sites not supported.
- res, err := ht.ug.RoundTrip(r1)
- SendBackResponse(w, r, res, err)
-}
-
-// Used by both ForwardHTTP and ForwardMesh, after RoundTrip is done.
-// Will copy response headers and body
-func SendBackResponse(w http.ResponseWriter, r *http.Request,
- res *http.Response, err error) {
-
- if err != nil {
- if res != nil {
- CopyResponseHeaders(w.Header(), res.Header)
- w.WriteHeader(res.StatusCode)
- io.Copy(w, res.Body)
- log.Println("Got ", err, res.Header)
- } else {
- http.Error(w, err.Error(), 500)
- }
- return
- }
-
- origBody := res.Body
- defer origBody.Close()
-
- CopyResponseHeaders(w.Header(), res.Header)
- w.WriteHeader(res.StatusCode)
-
- stats := &nio.Stream{}
- n, err := stats.CopyBuffered(w, res.Body, true)
-
- log.Println("Done: ", r.URL, res.StatusCode, n, err)
-}
-
-// createUpstremRequest shallow-copies r into a new request
-// that can be sent upstream.
-//
-// Derived from reverseproxy.go in the standard Go httputil package.
-// Derived from caddy
-func CreateUpstreamRequest(rw http.ResponseWriter, r *http.Request) *http.Request {
- //ctx := r.Context()
- //if cn, ok := rw.(http.CloseNotifier); ok {
- // var cancel context.CancelFunc
- // ctx, cancel = context.WithCancel(ctx)
- // defer cancel()
- // notifyChan := cn.CloseNotify()
- // go func() {
- // select {
- // case <-notifyChan:
- // cancel()
- // case <-ctx.Done():
- // }
- // }()
- //}
- ctx := context.Background()
-
- // URL, Form, TransferEncoding, Header, Trailer, URL
- outreq := r.Clone(ctx)
-
- // We should set body to nil explicitly if request body is empty.
- // For DmDns requests the Request Body is always non-nil.
- if r.ContentLength == 0 {
- outreq.Body = nil
- }
- if outreq.Header == nil {
- outreq.Header = make(http.Header) // Issue 33142: historical behavior was to always allocate
- }
- outreq.Close = false
-
- // We are modifying the same underlying map from req (shallow
- // copied above) so we only copy it if necessary.
- copiedHeaders := false
-
- // Remove hop-by-hop headers listed in the "Connection" header.
- // See RFC 2616, section 14.10.
- if c := outreq.Header.Get("Connection"); c != "" {
- for _, f := range strings.Split(c, ",") {
- if f = strings.TrimSpace(f); f != "" {
- if !copiedHeaders {
- outreq.Header = make(http.Header)
- CopyRequestHeaders(outreq.Header, r.Header)
- copiedHeaders = true
- }
- outreq.Header.Del(f)
- }
- }
- }
-
- // Remove hop-by-hop headers to the backend. Especially
- // important is "Connection" because we want a persistent
- // connection, regardless of what the client sent to us.
- for _, h := range hopHeaders {
- if outreq.Header.Get(h) != "" {
- if !copiedHeaders {
- outreq.Header = make(http.Header)
- CopyRequestHeaders(outreq.Header, r.Header)
- copiedHeaders = true
- }
- outreq.Header.Del(h)
- }
- }
-
- if clientIP, _, err := net.SplitHostPort(r.RemoteAddr); err == nil {
- // If we aren't the first proxy, retain prior
- // X-Forwarded-For information as a comma+space
- // separated list and fold multiple headers into one.
- if prior, ok := outreq.Header["X-Forwarded-For"]; ok {
- clientIP = strings.Join(prior, ", ") + ", " + clientIP
- }
- outreq.Header.Set("X-Forwarded-For", clientIP)
- }
-
- return outreq
-}
-
-// Hop-by-hop headers. These are removed when sent to the backend in createUpstreamRequest
-// http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
-var hopHeaders = []string{
- "Alt-Svc",
- "Alternate-Protocol",
- "Connection",
- "Keep-Alive",
- "HTTPGate-Authenticate",
- "HTTPGate-Authorization",
- "HTTPGate-Connection", // non-standard but still sent by libcurl and rejected by e.g. google
- "Te", // canonicalized version of "TE"
- "Trailer", // not Trailers per URL above; http://www.rfc-editor.org/errata_search.php?eid=4522
- "Transfer-Encoding",
- "Upgrade",
-}
-
-// used in createUpstreamRequetst to copy the headers to the new req.
-func CopyRequestHeaders(dst, src http.Header) {
- for k, vv := range src {
- if _, ok := dst[k]; ok {
- // skip some predefined headers
- // see https://github.com/mholt/caddy/issues/1086
- if _, shouldSkip := skipHeaders[k]; shouldSkip {
- continue
- }
- // otherwise, overwrite to avoid duplicated fields that can be
- // problematic (see issue #1086) -- however, allow duplicate
- // Server fields so we can see the reality of the proxying.
- if k != "Server" {
- dst.Del(k)
- }
- }
- for _, v := range vv {
- dst.Add(k, v)
- }
- }
-}
-
-// Also used in httpproxy_capture, for forward http proxy
-func CopyResponseHeaders(dst, src http.Header) {
- for k := range dst {
- dst.Del(k)
- }
- for k, vs := range src {
- for _, v := range vs {
- dst.Add(k, v)
- }
- }
-}
-
-// skip these headers if they already exist.
-// see https://github.com/mholt/caddy/pull/1112#discussion_r80092582
-var skipHeaders = map[string]struct{}{
- "Content-Type": {},
- "Content-Disposition": {},
- "accept-Ranges": {},
- "Set-Cookie": {},
- "Cache-Control": {},
- "Expires": {},
-}
diff --git a/pkg/ugatesvc/port_listener.go b/pkg/ugatesvc/port_listener.go
deleted file mode 100644
index d214463..0000000
--- a/pkg/ugatesvc/port_listener.go
+++ /dev/null
@@ -1,174 +0,0 @@
-package ugatesvc
-
-import (
- "errors"
- "log"
- "net"
- "strings"
- "time"
-
- "github.com/costinm/hbone"
- "github.com/costinm/hbone/nio"
- "github.com/costinm/ugate"
-)
-
-// K8S:
-// API_SERVER/api/v1/namespaces/%s/pods/%s/portforward
-// Forwards a local port to the pod, using SPDY or Websocket.
-
-// Docs and other options:
-//https://blog.ston3o.me/how-to-expose-local-server-behind-firewall/
-// - OpenVPN - easy to setup docker container
-// - upnpc
-// - tor
-// ngrok - free 40 con/min
-// pagekite - py, $3/month
-// bleenco/localtunnel (go)
-// localtunnel/localtunnel (js)
-// yaler - commercial
-// inlets / rancher remote dialer
-
-// socks bind standard - not commonly implemented
-
-// ssh -R remote_server_ip:12345:localhost:12345
-// - multiplexed over ssh TCP con, flow control per socket
-
-/*
- byte SSH_MSG_CHANNEL_OPEN
- string "forwarded-tcpip"
- uint32 sender channel
-
- uint32 initial window size
- uint32 maximum packet size
-
- string address that was connected
- uint32 port that was connected
-
- string originator IP address
- uint32 originator port
-*/
-
-// concourse TSA - uses ssh, default 2222
-// 'beacon' is effectively using ssh command to forward ports
-// "golang.org/x/crypto/ssh"
-//https://github.com/concourse/tsa/blob/master/tsacmd/server.go
-
-// Rancher 'Reverse Tunneling Dialer' and 'inlets':
-// - use websocket - no multiplexing.
-// - binary messages, using websocket frames
-
-// StartListener and Start a real port listener on a port.
-// Virtual listeners can be added to ug.Conf or the mux.
-func (ug *UGate) StartListener(ll *hbone.Listener) error {
-
- err := ug.startPortListener(ll)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-// Creates a raw (port) TCP listener. Accepts connections
-// on a local port, forwards to a remote destination.
-func (gate *UGate) startPortListener(pl *hbone.Listener) error {
- ll := pl
-
- if pl.Address == "" {
- pl.Address = ":0"
- }
-
- if pl.Address[0] == '-' {
- return nil // virtual listener
- }
-
- if pl.NetListener == nil {
- if strings.HasPrefix(pl.Address, "/") ||
- strings.HasPrefix(pl.Address, "@") {
- us, err := net.ListenUnix("unix",
- &net.UnixAddr{
- Name: pl.Address,
- Net: "unix",
- })
- if err != nil {
- return err
- }
- pl.NetListener = us
- } else {
- // Not supported: RFC: address "" means all families, 0.0.0.0 IP4, :: IP6, localhost IP4/6, etc
- listener, err := net.Listen("tcp", ll.Address)
- if err != nil {
- host, _, _ := net.SplitHostPort(ll.Address)
- ll.Address = host + ":0"
- listener, err = net.Listen("tcp", ll.Address)
- if err != nil {
- log.Println("failed-to-listen", err)
- return err
- }
- }
- pl.NetListener = listener
- }
- }
- switch pl.Protocol {
- case ugate.ProtoTLS:
- pl.PortHandler = nio.HandlerFunc(gate.handleSNI)
- case ugate.ProtoSNI:
- pl.PortHandler = nio.HandlerFunc(gate.handleSNI)
- case ugate.ProtoBTS:
- pl.PortHandler = nio.HandlerFunc(gate.acceptedHbone)
- case ugate.ProtoBTSC:
- pl.PortHandler = nio.HandlerFunc(gate.acceptedHboneC)
- case ugate.ProtoHTTP:
- pl.PortHandler = nio.HandlerFunc(gate.H2Handler.handleHTTPListener)
- case ugate.ProtoTCPOut:
- if pl.ForwardTo == "" {
- return errors.New("invalid TCPOut, missing ForwardTo")
- }
- pl.PortHandler = nio.HandlerFunc(gate.handleTCPEgress)
- case ugate.ProtoTCPIn:
- if pl.ForwardTo == "" {
- return errors.New("invalid TCPIn, missing ForwardTo")
- }
- pl.PortHandler = nio.HandlerFunc(gate.handleTCPForward)
- default:
- log.Println("Unspecified port, default to forward (in)")
- pl.PortHandler = nio.HandlerFunc(gate.handleTCPForward)
- }
-
- go serve(ll, gate)
- return nil
-}
-
-// For -R, runs on the remote ssh server to accept connections and forward back to client, which in turn
-// will forward to a Port/app.
-// Blocking.
-func serve(pl *hbone.Listener, gate *UGate) {
- log.Println("uGate: listen ", pl.Address, pl.NetListener.Addr(), pl.ForwardTo, pl.Protocol, pl.Handler, pl.PortHandler)
- for {
- remoteConn, err := pl.NetListener.Accept()
- ugate.VarzAccepted.Add(1)
- if ne, ok := err.(net.Error); ok {
- ugate.VarzAcceptErr.Add(1)
- if ne.Temporary() {
- time.Sleep(100 * time.Millisecond)
- continue
- }
- }
- if err != nil {
- log.Println("Accept error, closing listener ", pl, err)
- return
- }
- if pl.PortHandler != nil {
- go func() {
- bconn := nio.GetStream(remoteConn, remoteConn)
- bconn.Listener = pl
- bconn.Type = pl.Protocol
- gate.OnStream(bconn)
- defer gate.OnStreamDone(bconn)
-
- pl.PortHandler.Handle(bconn)
- }()
- return
- }
- }
-}
diff --git a/pkg/ugatesvc/reverse.go b/pkg/ugatesvc/reverse.go
deleted file mode 100644
index fa7e4e4..0000000
--- a/pkg/ugatesvc/reverse.go
+++ /dev/null
@@ -1,99 +0,0 @@
-package ugatesvc
-
-import (
- "context"
- "log"
- "net"
- "time"
-
- "github.com/costinm/ugate"
-)
-
-// Reverse tunnel: create a persistent connection to a gateway, and
-// accept connections over that connection.
-//
-// The gateway registers the current endpoint with it's own IP:port
-// (for example WorkloadEntry or Endpoint or in-memory ), and forwards accepted requests over the
-// established connection.
-
-// UpdateReverseAccept updates the upstream accept connections, based on config.
-// Should be called when the config changes
-func (t *H2Transport) UpdateReverseAccept() {
- ev := make(chan string)
- for addr, key := range t.ug.Config.H2R {
- // addr is a hostname
- dm := t.ug.GetOrAddNode(addr)
- if dm.Addr == "" {
- if key == "" {
- dm.Addr = net.JoinHostPort(addr, "443")
- } else {
- dm.Addr = net.JoinHostPort(addr, "15007")
- }
- }
-
- go t.maintainPinnedConnection(dm, ev)
- }
- <-ev
- log.Println("maintainPinned connected for ", t.ug.Auth.VIP6)
-
-}
-
-// Reverse Accept dials a connection to addr, and registers a H2 SERVER
-// conn on it. The other end will register a H2 client, and create streams.
-// The client cert will be used to associate incoming streams, based on config or direct mapping.
-// TODO: break it in 2 for tests to know when accept is in effect.
-func (t *H2Transport) maintainPinnedConnection(dm *ugate.Cluster, ev chan string) {
- // maintain while the host is in the 'pinned' list
- if _, f := t.ug.Config.H2R[dm.ID]; !f {
- return
- }
-
- //ctx := context.Background()
- if dm.Backoff == 0 {
- dm.Backoff = 1000 * time.Millisecond
- }
-
- ctx := context.TODO()
- //ctx, ctxCancel := context.WithTimeout(ctx, 5*time.Second)
- //defer ctxCancel()
-
- protos := []string{"quic", "h2r"}
- var err error
- var muxer ugate.Muxer
- for _, k := range protos {
- muxer, err = t.ug.DialMUX(ctx, k, dm, nil)
- if err == nil {
- break
- }
- }
- if err == nil {
- log.Println("UP: ", dm.Addr, muxer)
- // wait for mux to be closed
- dm.Backoff = 1000 * time.Millisecond
- return
- }
-
- log.Println("UP: err", dm.Addr, err, dm.Backoff)
- // Failed to connect
- if dm.Backoff < 15*time.Minute {
- dm.Backoff = 2 * dm.Backoff
- }
-
- time.AfterFunc(dm.Backoff, func() {
- t.maintainPinnedConnection(dm, ev)
- })
-
- // p := str.TLS.NegotiatedProtocol
- //if p == "h2r" {
- // // Old code used the 'raw' TLS connection to create a server connection
- // t.h2Server.ServeConn(
- // str,
- // &http2.ServeConnOpts{
- // Handler: t, // Also plain text, needs to be upgraded
- // Context: str.Context(),
- //
- // //Context: // can be used to cancel, pass meta.
- // // h2 adds http.LocalAddrContextKey(NetAddr), ServerContextKey (*Server)
- // })
- //}
-}
diff --git a/pkg/ugatesvc/routing.go b/pkg/ugatesvc/routing.go
deleted file mode 100644
index d3aa28c..0000000
--- a/pkg/ugatesvc/routing.go
+++ /dev/null
@@ -1,373 +0,0 @@
-package ugatesvc
-
-import (
- "context"
- "errors"
- "io"
- "log"
- "net"
- "net/http"
- "strings"
- "time"
-
- "github.com/costinm/hbone/nio"
- "github.com/costinm/ugate"
- "golang.org/x/net/http2"
-)
-
-// After a Stream ( TCP+meta or HTTP ) is accepted/captured, we need to route it based on
-// the config.
-//
-// Use cases:
-// - Ingress: proxy to a local port on the same machine or in-process handler
-// - Relay to mesh: use BTS or H2R to another gate. Dest is a mesh node.
-// - Egress to internet - forward to a non-mesh node, on original port.
-// Can be TCP(incl TLS) or HTTP. Client MUST be local or trusted
-// - Gateway to a non-mesh node - probably should not be supported, subcase
-// of 'ingress' but using a non-local address.
-
-var NotFound = errors.New("not found")
-
-func (ug *UGate) Dial(netw, addr string) (net.Conn, error) {
- return ug.DialContext(context.Background(), netw, addr)
-}
-
-// DialTLS opens a direct TLS connection using the dialer for TCP.
-// No peer verification - the returned stream will have the certs.
-// addr is a real internet address, not a mesh one.
-//
-// Used internally to create the raw TLS connections to both mesh
-// and non-mesh nodes.
-func (ug *UGate) DialTLS(ctx context.Context, addr string, alpn []string) (*nio.Stream, error) {
- ctx1, cf := context.WithTimeout(ctx, 5*time.Second)
- defer cf()
- tcpC, err := ug.parentDialer.DialContext(ctx1, "tcp", addr)
- if err != nil {
- return nil, err
- }
- // TODO: parse addr as URL or VIP6 extract peer WorkloadID
- t, err := ug.NewTLSConnOut(ctx1, tcpC, ug.TLSConfig, "", alpn)
- if err != nil {
- return nil, err
- }
- return t, nil
-}
-
-// Primary function for egress streams, after metadata has been parsed.
-//
-// RoundTripStart the target and proxy to it.
-// - if Dest is a mesh node, use BTS
-// - else use TCP proxy.
-//
-//
-// str.Dest is the destination hostname:port or hostname.
-//
-
-func (ug *UGate) DialAndProxy(str *nio.Stream) error {
-
- nc, err := ug.dial(context.Background(), str.Dest, str)
- str.PostDial(nc, err)
- if err != nil {
- // postDial will take care of sending error code.
- return err
- }
- defer nc.Close()
-
- // RoundTripStart may begin streaming from input connection to the dialed.
- // When dial return, the headers from dialed con are received.
-
- if ncs, ok := nc.(*nio.Stream); ok {
- if ncs.OutHeader != nil {
- CopyResponseHeaders(str.Header(), ncs.OutHeader)
- }
- str.Flush()
- }
-
- return str.ProxyTo(nc)
-}
-
-// Stream received via a BTS SNI route.
-// Similar with dialAndProxy
-func (ug *UGate) HandleSNIStream(str *nio.Stream) error {
- idx := strings.Index(str.Dest, ".")
- if idx > 0 {
- // Only SNI route to mesh nodes, ignore the domain name
- str.Dest = str.Dest[0:idx]
- }
-
- nc, err := ug.dial(context.Background(), str.Dest, str)
- str.PostDial(nc, err)
-
- if err != nil {
- // postDial will take care of sending error code.
- return err
- }
- defer nc.Close()
-
- return str.ProxyTo(nc)
-}
-
-// DialContext creates connection to the remote addr, implements
-// x.net.proxy.ContextDialer and ugate.ContextDialer.
-//
-// Used for integration with other libraries without dependencies.
-// Does not support metatada or 0-RTT sending or piping an existing stream.
-func (ug *UGate) DialContext(ctx context.Context, netw, addr string) (net.Conn, error) {
- host, _, err := net.SplitHostPort(addr)
- n := ug.GetNode(host)
- if n != nil {
- // Mesh node
- return ug.dial(ctx, addr, nil)
- }
-
- //ug.dial(addr, )
-
- // Use the Dialer passed as an option, may do additional proxying
- // for the TCP connection.
- tcpC, err := ug.parentDialer.DialContext(ctx, "tcp", addr)
- if err != nil {
- return nil, err
- }
-
- if "tls" == netw {
- // TODO: parse addr as URL or VIP6 extract peer WorkloadID
- return ug.NewTLSConnOut(ctx, tcpC, ug.TLSConfig, "", nil)
- }
-
- return tcpC, err
-}
-
-// DialMUX creates an association with the node, using one of the supported
-// transports.
-//
-// The node should have at least the address or public key or hash populated.
-//
-// If it has real endpoint address - we can use the associated protocol.
-// Else we can try all supported protos.
-func (ug *UGate) DialMUX(ctx context.Context, net string, node *ugate.Cluster, ev func(t string, stream *nio.Stream)) (ugate.Muxer, error) {
- // TODO: list, try them all.
- rd := ug.MuxDialers[net]
- if rd == nil {
- return nil, errors.New("Not found " + net)
- }
- return rd.DialMux(ctx, node, nil, ev)
-}
-
-// This should be called when any MUX is created ( either way )
-func (ug *UGate) OnMUX(node *ugate.Cluster) error {
-
- return nil
-}
-
-// Using pipe: 345Mbps
-//
-// Not using: constant 440Mbps.
-// The QUIC read buffer is 8k
-const usePipe = false
-
-// Dial creates a stream to the given address.
-func (ug *UGate) dial(ctx context.Context, addr string, s *nio.Stream) (net.Conn, error) {
- // sets clientEventContextKey - if ctx is used for a round trip, will
- // set all data.
- // Will also make sure DNSStart, Connect, etc are set (if we want to)
- //ctx, cancel := context.WithCancel(bconn.Meta().Request.Context())
- //ctx := httptrace.WithClientTrace(bconn.Meta().Request.Context(),
- // &bconn.Meta().ClientTrace)
- //ctx = context.WithValue(ctx, "ugate.conn", bconn)
- var nc net.Conn
- var err error
-
- // Extract a mesh WorkloadID from the address, return the WorkloadID or ""
- nid := ug.Auth.Host2ID(addr)
-
- // Destination is a mesh WorkloadID, not a host:port. Use the discovery or
- // existing reverse connections.
- // RoundTripStart out via an existing 'reverse h2' connection
- dmn := ug.GetNode(nid) // no port
- if dmn != nil {
- rt := dmn.Muxer
-
- if rt != nil {
- // We have an active reverse RoundTripper for the host.
- var in io.Reader
- var out io.WriteCloser
-
- h, port, _ := net.SplitHostPort(addr)
-
- if dd, ok := rt.(ugate.StreamDialer); ok {
- return dd.DialStream(ctx, "127.0.0.1:"+port, s)
- }
-
- if usePipe || s == nil || s.In == nil {
- in, out = io.Pipe() // pipe.New()
- //in = p
- //out = p
- } else {
- in = s.In
- }
-
- // Regular TCP stream, upgraded to H2.
- // This is a simple tunnel, so use the right URL
- r1, err := http.NewRequestWithContext(ctx, "POST",
- "https://"+h+"/dm/127.0.0.1:"+port, in)
-
- // RoundTrip Transport guarantees this is set
- if r1.Header == nil {
- r1.Header = make(http.Header)
- }
-
- // RT client - forward the request.
- res, err := rt.RoundTrip(r1)
- if err != nil {
- log.Println("H2R error", addr, err)
- return nil, err
- }
-
- rs := nio.NewStreamRequestOut(r1, out, res, nil)
- if nio.DebugClose {
- log.Println(rs.StreamId, "dial.TUN: ", addr, r1.URL)
- }
- return rs, nil
- }
-
- if dmn.Addr != "" {
- addr = dmn.Addr
- }
- }
-
- // TODO: if it is a mesh node, create a connection !
-
- // TODO: use discovery to map VIPs or key-based hosts to real addr
- // TODO: use local announces
- // TODO: use VPN server for all or for mesh
-
- nc, err = ug.parentDialer.DialContext(context.Background(), "tcp", addr)
- if err != nil {
- log.Println("Failed to connect ", addr, err)
- return nil, err
- }
-
- if dmn != nil {
- lconn, err := ug.NewTLSConnOut(ctx, nc, ug.TLSConfig, "", nil)
- if err != nil {
- return nil, err
- }
- nc = lconn
- }
-
- return nc, nil
-}
-
-// TODO: implement H2 ClientConnPool
-// HTTP round-trip using the mesh connections. Will use H2 and the mesh
-// auth protocol, on the BTS port.
-func (ug *UGate) RoundTrip(req *http.Request) (*http.Response, error) {
- cc, err := ug.H2Handler.GetClientConn(req, req.Host)
- if err != nil {
- return nil, err
- }
- return cc.RoundTrip(req)
-}
-
-func (t *H2Transport) MarkDead(h2c *http2.ClientConn) {
- t.m.Lock()
- dmn := t.conns[h2c]
- if dmn != nil {
- dmn.Muxer = nil
- log.Println("Dead", dmn.ID, h2c)
- }
- t.m.Unlock()
-}
-
-// GetClientConn returns H2 multiplexed client connection for connecting to a mesh host.
-//
-// Part of x.net.http2.ClientConnPool interface.
-// addr is a host:port, based on the URL host.
-// The result implements RoundTrip interface.
-func (t *H2Transport) GetClientConn(req *http.Request, addr string) (*http2.ClientConn, error) {
- // The h2 Transport has support for dialing TLS, with the std handshake.
- // It is possible to replace Transport.DialTLS, used in clientConnPool
- // which tracks active connections. Or specify a custom conn pool.
-
- // addr is either based on req.Host or the resolved IP, in which case Host must be used for TLS verification.
-
- nid := t.ug.Auth.Host2ID(addr)
- // TODO: if mesh node, don't attempt to dial directly
- dmn := t.ug.GetNode(nid)
- if dmn != nil {
- rt := dmn.Muxer
- if rt != nil {
- if rtc, ok := rt.(*http2.ClientConn); ok {
- return rtc, nil
- }
- }
-
- // TODO: if we don't have addr, use discovery
-
- // TODO: if discovery doesn't return an address, use upsteram gate.
- if dmn.Addr == "" {
- return nil, NotFound
- }
- // Real address -
- addr = dmn.Addr
- }
- var tc *nio.Stream
- var err error
- // TODO: use local announces
- // TODO: use VPN server for all or for mesh
- if req.URL.Scheme == "http" {
- rc, err := t.ug.DialContext(req.Context(), "tcp", addr)
- if err != nil {
- return nil, err
- }
- tc = nio.NewStream()
- tc.In = rc
- tc.Out = rc
- } else {
- tc, err = t.ug.DialTLS(req.Context(), addr, []string{"h2"})
- if err != nil {
- return nil, err
- }
- }
-
- // TODO: reuse connection or use egress server
- // TODO: track it by addr
-
- cc, err := t.ug.H2Handler.h2t.NewClientConn(tc)
-
- if dmn != nil {
- // Forward connection ok too.
- dmn.Muxer = cc
- }
- return cc, err
-}
-
-// CreateStream will open a stream to a node.
-//
-// The httpRequest may include metadata (headers), URL and a body.
-// If a body is not provided, a pipe will be created - the result is a
-// net.Stream and can be used as such.
-//
-// - http.Client is specialized on HTTP requests model - has a cookie jar,
-// redirects, deals with idle connections, etc.
-// - http.Client.Do() requires req.URL to be set, as well as Body
-// The request body is closed at the end of Do.
-// - in http client, URL must be set and RequestURI must be empty.
-// - RoundTripper takes a request and returns a *Response.
-//
-// http.Transport supports schem->RoundTripper map !
-// It also supports HTTPS, HTTPProxies, connection caching - should be
-// reused.
-
-// http.Client also sets Authorization Basic, Cookies
-// and has its own timeout.
-
-// it also has a heuristic of looking for the type of the
-// round tripper, checking for *http2.Transport name to
-// guess if it supports context.
-
-// TODO: implement RoundTrip, Muxer in UGate - as main interface
-// TODO: convert client HttpRequest + Response to stream
-// TODO: convert server HttpReq+Res to stream.
-// TODO: 'messages' is a one-way http request
-// TODO: support 'GET'
diff --git a/pkg/ugatesvc/run.go b/pkg/ugatesvc/run.go
deleted file mode 100644
index 0438898..0000000
--- a/pkg/ugatesvc/run.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package ugatesvc
-
-import (
- "log"
-
- "github.com/costinm/ugate"
-)
-
-func Run(config ugate.ConfStore, g *ugate.MeshSettings) (*UGate, error) {
- // RoundTripStart a Gate. Basic H2 and H2R services enabled.
- ug := New(config, nil, g)
-
- sf := []StartFunc{}
- if InitHooks != nil {
- for _, h := range InitHooks {
- s := h(ug)
- if s != nil {
- sf = append(sf, s)
- }
- }
- }
-
- for _, h := range sf {
- go h(ug)
- }
- ug.Start()
- log.Println("Started: ", ug.Auth.ID)
- return ug, nil
-}
diff --git a/pkg/ugatesvc/tls_conn.go b/pkg/ugatesvc/tls_conn.go
deleted file mode 100644
index 84a264f..0000000
--- a/pkg/ugatesvc/tls_conn.go
+++ /dev/null
@@ -1,362 +0,0 @@
-package ugatesvc
-
-import (
- "context"
- "crypto/tls"
- "crypto/x509"
- "errors"
- "log"
- "net"
- "strings"
- "sync"
-
- "github.com/costinm/hbone/nio"
- "github.com/costinm/meshauth"
- "github.com/costinm/ugate"
-)
-
-// TLSConn extends tls.Conn with extra metadata.
-// Adds the Proxy() method, implements ReadFrom and WriteTo using recycled buffers.
-type TLSConn struct {
- // Raw TCP connection, for remote address and stats
- // TODO: for H2-over-TLS-over-WS, it will be a WS conn
- *nio.Stream
-
- // wrapps the original conn for Local/RemoteAddress and deadlines
- // Implements CloseWrite, ConnectionState,
- tls *tls.Conn
-}
-
-func (ug *UGate) NewTLSConnOut(ctx context.Context, nc net.Conn, cfg *tls.Config, peerID string, alpn []string) (*nio.Stream, error) {
- lc := &TLSConn{}
- if mc, ok := nc.(*nio.Stream); ok {
- lc.Stream = mc
- if rnc, ok := lc.Out.(net.Conn); ok {
- nc = rnc
- }
- } else {
- lc.Stream = nio.NewStream()
- }
-
- config, keyCh := ConfigForPeer(ug.Auth, cfg, peerID)
- if alpn != nil {
- config.NextProtos = alpn
- }
- lc.tls = tls.Client(nc, config)
- cs, _, err := lc.handshake(ctx, keyCh)
- if err != nil {
- return nil, err
- }
- lc.Stream.In = lc.tls
- lc.Stream.Out = lc.tls
-
- //lc.tls.ConnectionState().DidResume
- tcs := lc.tls.ConnectionState()
- lc.Stream.TLS = &tcs
- lc.tls = cs
-
- return lc.Stream, err
-}
-
-// SecureInbound runs the TLS handshake as a server.
-// Accepts connections without client certificate - alternate form of auth will be used, either
-// an inner TLS connection or JWT in metadata.
-func (ug *UGate) NewTLSConnIn(ctx context.Context, l net.Listener, alpn []string, nc net.Conn, cfg *tls.Config) (*nio.Stream, error) {
- config, keyCh := ConfigForPeer(ug.Auth, cfg, "")
- if alpn == nil {
- config.NextProtos = []string{"h2r", "h2"}
- } else {
- config.NextProtos = alpn
- }
- tc := &TLSConn{}
- tc.Stream = nio.NewStream()
- if mc, ok := nc.(*nio.Stream); ok {
- m := mc
- // Sniffed, etc
- tc.Route = m.Route
- tc.Dest = m.Dest
- }
-
- tc.tls = tls.Server(nc, config)
- cs, _, err := tc.handshake(ctx, keyCh)
- tc.tls = cs
- if err != nil {
- return nil, err
- }
- tcs := tc.tls.ConnectionState()
- tc.Stream.TLS = &tcs
- tc.Stream.In = tc.tls
- tc.Stream.Out = tc.tls
-
- return tc.Stream, err
-}
-
-func ConfigForPeer(a *meshauth.MeshAuth, cfg *tls.Config, remotePeerID string) (*tls.Config, <-chan []*x509.Certificate) {
- keyCh := make(chan []*x509.Certificate, 1)
- // We need to check the peer WorkloadID in the VerifyPeerCertificate callback.
- // The tls.Config it is also used for listening, and we might also have concurrent dials.
- // Clone it so we can check for the specific peer WorkloadID we're dialing here.
- conf := cfg.Clone()
- // We're using InsecureSkipVerify, so the verifiedChains parameter will always be empty.
- // We need to parse the certificates ourselves from the raw certs.
- conf.VerifyPeerCertificate = func(rawCerts [][]byte, _ [][]*x509.Certificate) error {
- defer close(keyCh)
-
- if remotePeerID == "" && len(rawCerts) == 0 {
- // Legacy infrastructure, client certs not transmitted.
- keyCh <- nil
- return nil
- }
-
- chain, err := meshauth.RawToCertChain(rawCerts)
- if err != nil {
- return err
- }
-
- pubKey, err := meshauth.PubKeyFromCertChain(chain)
- //pubKeyPeerID := auth.IDFromCert(chain)
- pubKeyPeerID := meshauth.IDFromPublicKey(pubKey)
- if err != nil {
- return err
- }
-
- // TODO: also verify the SAN (Istio and DNS style)
-
- if remotePeerID != "" &&
- remotePeerID != pubKeyPeerID {
- return errors.New("peer IDs don't match")
- }
- keyCh <- chain
- return nil
- }
- return conf, keyCh
-}
-
-func (pl *TLSConn) handshake(
- ctx context.Context,
- keyCh <-chan []*x509.Certificate,
-) (*tls.Conn, []*x509.Certificate, error) {
-
- // There's no way to pass a context to tls.Stream.Handshake().
- // See https://github.com/golang/go/issues/18482.
- // Close the connection instead.
-
- done := make(chan struct{})
- var wg sync.WaitGroup
-
- // Ensure that we do not return before
- // either being done or having a context
- // cancellation.
- defer wg.Wait()
- defer close(done)
-
- wg.Add(1)
-
- go func() {
- defer wg.Done()
- select {
- case <-done:
- case <-ctx.Done():
- pl.tls.Close()
- }
- }()
-
- if err := pl.tls.Handshake(); err != nil {
- // if the context was canceled, return the context error
- if ctxErr := ctx.Err(); ctxErr != nil {
- return nil, nil, ctxErr
- }
- return nil, nil, err
- }
-
- // Should be ready by this point, don't block.
- var remotePubKey []*x509.Certificate
- select {
- case remotePubKey = <-keyCh:
- default:
- }
-
- // Also:
- //tlsConn.ConnectionState().PeerCertificates
- //t.RemotePub = remotePubKey
- //
- //// At this point the BufferedCon unsecure connection can't be used.
- //t.Stream = tlsConn
-
- return pl.tls, remotePubKey, nil
-}
-
-var sniErr = errors.New("Invalid TLS")
-
-type clientHelloMsg struct { // 22
- vers uint16
- random []byte
- sessionId []byte
- cipherSuites []uint16
- compressionMethods []uint8
- nextProtoNeg bool
- serverName string
- ocspStapling bool
- scts bool
- supportedPoints []uint8
- ticketSupported bool
- sessionTicket []uint8
- secureRenegotiation []byte
- alpnProtocols []string
-}
-
-// TLS extension numbers
-const (
- extensionServerName uint16 = 0
-)
-
-// TODO: if a session WorkloadID is provided, use it as a cookie and attempt
-// to find the corresponding host.
-// On server side generate session IDs !
-//
-// TODO: in mesh, use one cypher suite (TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)
-// maybe 2 ( since keys are ECDSA )
-func ParseTLS(acc *nio.Stream) (*clientHelloMsg, error) {
- buf, err := acc.Fill(5)
- if err != nil {
- return nil, err
- }
- typ := buf[0] // 22 3 1 2 0
- if typ != 0x16 {
- return nil, sniErr
- }
- vers := uint16(buf[1])<<8 | uint16(buf[2])
- if vers != 0x301 {
- log.Println("Version ", vers)
- }
-
- rlen := int(buf[3])<<8 | int(buf[4])
- if rlen > 4096 {
- log.Println("RLen ", rlen)
- return nil, sniErr
- }
-
- off := 5
- m := clientHelloMsg{}
-
- end := rlen + 5
- buf, err = acc.Fill(end)
- if err != nil {
- return nil, err
- }
- clientHello := buf[5:end]
- chLen := end - 5
-
- if chLen < 38 {
- log.Println("chLen ", chLen)
- return nil, sniErr
- }
-
- // off is the last byte in the buffer - will be forwarded
-
- m.vers = uint16(clientHello[4])<<8 | uint16(clientHello[5])
- // random: data[6:38]
-
- sessionIdLen := int(clientHello[38])
- if sessionIdLen > 32 || chLen < 39+sessionIdLen {
- log.Println("sLen ", sessionIdLen)
- return nil, sniErr
- }
- m.sessionId = clientHello[39 : 39+sessionIdLen]
- off = 39 + sessionIdLen
-
- // cipherSuiteLen is the number of bytes of cipher suite numbers. Since
- // they are uint16s, the number must be even.
- cipherSuiteLen := int(clientHello[off])<<8 | int(clientHello[off+1])
- off += 2
- if cipherSuiteLen%2 == 1 || chLen-off < 2+cipherSuiteLen {
- return nil, sniErr
- }
-
- //numCipherSuites := cipherSuiteLen / 2
- //m.cipherSuites = make([]uint16, numCipherSuites)
- //for i := 0; i < numCipherSuites; i++ {
- // m.cipherSuites[i] = uint16(data[2+2*i])<<8 | uint16(data[3+2*i])
- //}
- off += cipherSuiteLen
-
- compressionMethodsLen := int(clientHello[off])
- off++
- if chLen-off < 1+compressionMethodsLen {
- return nil, sniErr
- }
- //m.compressionMethods = data[1 : 1+compressionMethodsLen]
- off += compressionMethodsLen
-
- if off+2 > chLen {
- // ClientHello is optionally followed by extension data
- return nil, sniErr
- }
-
- extensionsLength := int(clientHello[off])<<8 | int(clientHello[off+1])
- off = off + 2
- if extensionsLength != chLen-off {
- return nil, sniErr
- }
-
- for off < chLen {
- extension := uint16(clientHello[off])<<8 | uint16(clientHello[off+1])
- off += 2
- length := int(clientHello[off])<<8 | int(clientHello[off+1])
- off += 2
- if off >= end {
- return nil, sniErr
- }
-
- switch extension {
- case extensionServerName:
- d := clientHello[off : off+length]
- if len(d) < 2 {
- return nil, sniErr
- }
- namesLen := int(d[0])<<8 | int(d[1])
- d = d[2:]
- if len(d) != namesLen {
- return nil, sniErr
- }
- for len(d) > 0 {
- if len(d) < 3 {
- return nil, sniErr
- }
- nameType := d[0]
- nameLen := int(d[1])<<8 | int(d[2])
- d = d[3:]
- if len(d) < nameLen {
- return nil, sniErr
- }
- if nameType == 0 {
- m.serverName = string(d[:nameLen])
- // An SNI value may not include a
- // trailing dot. See
- // https://tools.ietf.org/html/rfc6066#section-3.
- if strings.HasSuffix(m.serverName, ".") {
- return nil, sniErr
- }
- break
- }
- d = d[nameLen:]
- }
- default:
- //log.Println("TLS Ext", extension, length)
- }
-
- off += length
- }
-
- // Does not contain port !!! Assume the port is 443, or map it.
-
- // TODO: unmangle server name - port, mesh node
-
- if m.serverName != "" {
- //destAddr := m.serverName + ":443"
- acc.Dest = m.serverName
- }
- acc.Type = ugate.ProtoTLS
-
- return &m, nil
-}
diff --git a/pkg/ugatesvc/ugate.go b/pkg/ugatesvc/ugate.go
deleted file mode 100644
index b1673f4..0000000
--- a/pkg/ugatesvc/ugate.go
+++ /dev/null
@@ -1,584 +0,0 @@
-package ugatesvc
-
-import (
- "crypto/tls"
- "crypto/x509"
- "encoding/json"
- "errors"
- "fmt"
- "log"
- "net"
- "net/http"
- "os"
- "runtime/debug"
- "strconv"
- "strings"
- "sync"
- "time"
-
- "github.com/costinm/hbone"
- "github.com/costinm/hbone/nio"
- "github.com/costinm/meshauth"
- "github.com/costinm/ugate"
- "github.com/costinm/ugate/pkg/cfgfs"
- msgs "github.com/costinm/ugate/webpush"
-)
-
-type StartFunc func(ug *UGate)
-
-// TODO: convert them to take cfg as input, return an interface.
-// The interface should have CfgEvent(xx), with empty indicating start.
-// A Map[component]CfgEvent will be maintained. The interface impl may be the UGate
-var InitHooks []func(gate *UGate) StartFunc
-
-type UGate struct {
- Config *ugate.MeshSettings
-
- // Default dialer used to connect to host:port extracted from metadata.
- // Defaults to net.Dialer, making real connections.
- //
- // Can be replaced with a mux or egress dialer or router for
- // integration.
- parentDialer ugate.ContextDialer
-
- DefaultRoute *nio.Route
-
- // Handlers for incoming connections - local accept or forwarding.
- Mux *http.ServeMux
-
- // template, used for TLS connections and the host WorkloadID
- TLSConfig *tls.Config
-
- H2Handler *H2Transport
-
- // Direct Nodes by interface address (which is derived from public key). This includes only
- // directly connected notes - either Wifi on same segment, or VPNs and
- // connected devices - with TLS termination and mutual auth. The nodes typically
- // have a multiplexed connection.
- Nodes map[uint64]*ugate.Cluster
- NodesByID map[string]*ugate.Cluster
-
- // Active connection by internal stream WorkloadID.
- // Tracks incoming Streams - if the stream is getting proxied to
- // a net.Conn or Stream, the dest will not be tracked here.
- ActiveTcp map[int]*nio.Stream
-
- m sync.RWMutex
-
- Auth *meshauth.MeshAuth
-
- Msg *msgs.Mux
-
- MuxDialers map[string]ugate.MuxDialer
- DNS ugate.UDPHandler
- UDPHandler ugate.UDPHandler
-}
-
-func NewConf(base ...string) ugate.ConfStore {
- return cfgfs.NewConf(base...)
-}
-
-func Get(h2 ugate.ConfStore, name string, to interface{}) error {
- raw, err := h2.Get(name)
- if err != nil {
- log.Println("name:", err)
- raw = []byte("{}")
- //return nil
- }
- if len(raw) > 0 {
- // TODO: detect yaml or proto ?
- if err := json.Unmarshal(raw, to); err != nil {
- log.Println(err)
- return err
- }
- }
- return nil
-}
-
-func NewGate(d ugate.ContextDialer, a *meshauth.MeshAuth, cfg *ugate.MeshSettings, cs ugate.ConfStore) *UGate {
- ug := New(cs, a, cfg)
- if d != nil {
- ug.parentDialer = d
- }
- go ug.H2Handler.UpdateReverseAccept()
- ug.DefaultPorts(ug.Config.BasePort)
-
- ug.Start()
- return ug
-}
-
-func New(cs ugate.ConfStore, a *meshauth.MeshAuth, cfg *ugate.MeshSettings) *UGate {
- if cs == nil {
- cs = cfgfs.NewConf()
- }
- if cfg == nil {
- bp := ugate.ConfInt(cs, "BASE_PORT", 15000)
-
- cfg = &ugate.MeshSettings{
- BasePort: bp,
- }
- }
- if cfg.H2R == nil {
- cfg.H2R = map[string]string{}
- }
- if cfg.Clusters == nil {
- cfg.Clusters = map[string]*ugate.Cluster{}
- }
- if cfg.Listeners == nil {
- cfg.Listeners = map[string]*hbone.Listener{}
- }
- if cfg.Routes == nil {
- cfg.Routes = map[string]*nio.Route{}
- }
-
- // Merge 'ugate' JSON config, from config store.
- Get(cs, "ugate", cfg)
-
- if cfg.Domain == "" {
- cfg.Domain = ugate.ConfStr(cs, "DOMAIN", "c1.webinf.info")
- if len(cfg.H2R) == 0 {
- cfg.H2R[cfg.Domain] = ""
- }
- }
-
- if a == nil {
- a = meshauth.NewAuth(cfg.Name, cfg.Domain)
- }
-
- ug := &UGate{
- parentDialer: &net.Dialer{},
- MuxDialers: map[string]ugate.MuxDialer{},
- Config: cfg,
- NodesByID: map[string]*ugate.Cluster{},
- Nodes: map[uint64]*ugate.Cluster{},
- Mux: http.NewServeMux(),
- Auth: a,
- ActiveTcp: map[int]*nio.Stream{},
- DefaultRoute: &nio.Route{},
- Msg: msgs.DefaultMux,
- }
-
- if l, ok := cfg.Routes["*"]; ok {
- ug.DefaultRoute = l
- }
-
- ug.TLSConfig = &tls.Config{
- //MinVersion: tls.VersionTLS13,
- //PreferServerCipherSuites: ugate.preferServerCipherSuites(),
- InsecureSkipVerify: true, // This is not insecure here. We will verify the cert chain ourselves.
- ClientAuth: tls.RequestClientCert, // not require - we'll fallback to JWT
- Certificates: []tls.Certificate{*a.Cert}, // a.TlsCerts,
- VerifyPeerCertificate: func(_ [][]byte, _ [][]*x509.Certificate) error {
- panic("tls config not specialized for peer")
- },
- NextProtos: []string{"istio", "h2"},
- // Will only be called if client supplies SNI and Certificates empty
- GetCertificate: func(ch *tls.ClientHelloInfo) (*tls.Certificate, error) {
- // Log on each new TCP connection, after client hello
- //
- log.Printf("Server/NewConn/CH %s %v %v", ch.ServerName, ch.SupportedProtos, ch.Conn.RemoteAddr())
- // doesn't include :5228
- c, ok := a.CertMap[ch.ServerName]
- if ok {
- return c, nil
- }
- return ug.Auth.Cert, nil
- },
-
- //SessionTicketsDisabled: true,
- }
-
- msgs.InitMux(ug.Msg, ug.Mux, ug.Auth)
-
- ug.H2Handler, _ = NewH2Transport(ug)
-
- ug.Mux.Handle("/debug/", http.DefaultServeMux)
- ug.Mux.HandleFunc("/dmesh/tcpa", ug.HttpTCP)
- ug.Mux.HandleFunc("/dmesh/rd", ug.HttpNodesFilter)
- ug.Mux.Handle("/debug/echo/", &EchoHandler{})
- ug.Mux.HandleFunc("/.well-known/openid-configuration", ug.Auth.HandleDisc)
- ug.Mux.HandleFunc("/jwks", ug.Auth.HandleJWK)
- //ug.Transport.HandleFunc("/sts", ug.Auth.HandleSTS)
-
- return ug
-}
-
-// Start listening on all configured ports.
-func (ug *UGate) Start() {
- // Explicit TCP forwarders.
- for k, t := range ug.Config.Listeners {
- if strings.HasPrefix(k, "udp://") {
- continue
- }
- t.Address = k
- ug.StartListener(t)
- }
-
- log.Println("Starting uGate ", ug.Config.Name,
- ug.Config.BasePort,
- meshauth.IDFromPublicKey(meshauth.PublicKey(ug.Auth.Cert.PrivateKey)),
- ug.Auth.VIP6)
-}
-
-// Expects the result to be validated and do ALPN.
-//func (ug *UGate) DialTLS(net, addr string, tc *tls.Config) {
-//
-//}
-
-func NewDMNode() *ugate.Cluster {
- now := time.Now()
- return &ugate.Cluster{
- Labels: map[string]string{},
- FirstSeen: now,
- LastSeen: now,
- NodeAnnounce: &ugate.NodeAnnounce{},
- }
-}
-
-// GetNode returns a node, using an encoded id string.
-func (ug *UGate) GetNode(id string) *ugate.Cluster {
- ug.m.RLock()
- n := ug.NodesByID[id]
- if n == nil {
- n = ug.Config.Clusters[id]
- }
- // Make sure it is set correctly.
- if n != nil && n.ID == "" {
- n.ID = id
- }
- ug.m.RUnlock()
- return n
-}
-
-// GetOrAddNode will get a node, and if not found create one,
-// updating "FirstSeen". LastSeen will be update as well.
-// NodesByID will be updated.
-//
-// id is a hostname or meshid, without port.
-func (ug *UGate) GetOrAddNode(id string) *ugate.Cluster {
- ug.m.Lock()
- n := ug.NodesByID[id]
- if n == nil {
- n = ug.Config.Clusters[id]
- }
- // Make sure it is set correctly.
- if n != nil && n.ID == "" {
- n.ID = id
- }
- if n == nil {
- n = &ugate.Cluster{
- FirstSeen: time.Now(),
- ID: id,
- }
- ug.NodesByID[id] = n
- }
- n.LastSeen = time.Now()
- ug.m.Unlock()
- return n
-}
-
-// All streams must call this method, and defer OnStreamDone
-func (ug *UGate) OnStream(s *nio.Stream) {
- ug.m.Lock()
- ug.ActiveTcp[s.StreamId] = s
- ug.m.Unlock()
-
- ugate.TcpConActive.Add(1)
- ugate.TcpConTotal.Add(1)
-}
-
-// Called at the end of the connection handling. After this point
-// nothing should use or refer to the connection, both proxy directions
-// should already be closed for write or fully closed.
-func (ug *UGate) OnStreamDone(str *nio.Stream) {
-
- ug.m.Lock()
- delete(ug.ActiveTcp, str.StreamId)
- ug.m.Unlock()
- ugate.TcpConActive.Add(-1)
- // TODO: track multiplexed streams separately.
- if str.ReadErr != nil {
- ugate.VarzSErrRead.Add(1)
- }
- if str.WriteErr != nil {
- ugate.VarzSErrWrite.Add(1)
- }
- if str.ProxyReadErr != nil {
- ugate.VarzCErrRead.Add(1)
- }
- if str.ProxyWriteErr != nil {
- ugate.VarzCErrWrite.Add(1)
- }
-
- if r := recover(); r != nil {
-
- debug.PrintStack()
-
- // find out exactly what the error was and set err
- var err error
-
- switch x := r.(type) {
- case string:
- err = errors.New(x)
- case error:
- err = x
- default:
- err = errors.New("Unknown panic")
- }
- log.Println("AC: Recovered in f", r, err)
- }
-
- if nio.NoEOF(str.ReadErr) != nil || str.WriteErr != nil {
- log.Println(str.StreamId, "AE:", "Err in:", str.ReadErr, str.WriteErr)
- }
- if nio.NoEOF(str.ProxyReadErr) != nil || str.ProxyWriteErr != nil {
- log.Println(str.StreamId, "AE:", "Err out:", str.ProxyReadErr, str.ProxyWriteErr)
- }
- if !str.Closed {
- str.Close()
- }
-
- ug.OnSClose(str, str.RemoteAddr())
-
-}
-
-// RemoteID returns the node WorkloadID based on authentication.
-func RemoteID(s *nio.Stream) string {
- if s.TLS == nil {
- return ""
- }
- if len(s.TLS.PeerCertificates) == 0 {
- return ""
- }
- pk, err := meshauth.PubKeyFromCertChain(s.TLS.PeerCertificates)
- if err != nil {
- return ""
- }
-
- return meshauth.IDFromPublicKey(pk)
-}
-
-func (ug *UGate) Close() error {
- var err error
- for _, p := range ug.Config.Listeners {
- if p.NetListener != nil {
- e := p.NetListener.Close()
- if e != nil {
- err = err
- }
- p.NetListener = nil
- }
- }
- return err
-}
-
-// Setup default ports, using base port.
-// For Istio, should be 15000. If running in Knative, use PORT and start
-// only a H2 listener.
-//
-// Will run:
-// - plaintext HTTP/1 or H2 - on PORT or base (15000)
-// - BTS on 15007 (or 443 if running as root)
-func (ug *UGate) DefaultPorts(base int) error {
- // Set if running in a knative env, or if an Envoy runs as a sidecar to handle
- // TLS, QUIC, H2. In this mode only standard H2/MASQUE are supported, with
- // reverse connections over POST or websocket.
- knativePort := os.Getenv("PORT")
- haddr := ""
- if knativePort != "" {
- haddr = ":" + knativePort
- } else {
- haddr = fmt.Sprintf("0.0.0.0:%d", base)
- }
- // ProtoHTTP detects H1/H2 and sends to ug.H2Handler
- // That deals with auth and dispatches to ugate.Transport
- ug.StartListener(&hbone.Listener{
- Address: haddr,
- Protocol: ugate.ProtoHTTP,
- })
-
- // KNative doesn't support other ports by default - but still register them
- btsAddr := fmt.Sprintf("0.0.0.0:%d", base+ugate.PORT_BTS)
- btscAddr := fmt.Sprintf("0.0.0.0:%d", base+ugate.PORT_BTSC)
-
- // Main BTS port, with TLS certificates
- // Normally should be 443 for SNI gateways, when running as root
- // Use iptables to redirect, or an explicit config for port 443 if running as root.
- ug.StartListener(&hbone.Listener{
- Address: btsAddr,
- Protocol: ugate.ProtoBTS,
- ALPN: []string{"h2", "h2r"},
- })
- ug.StartListener(&hbone.Listener{
- Address: btscAddr,
- Protocol: ugate.ProtoBTSC,
- })
- if os.Getuid() == 0 {
- ug.StartListener(&hbone.Listener{
- Address: "0.0.0.0:443",
- Protocol: ugate.ProtoTLS,
- ALPN: []string{"h2", "h2r"},
- })
- ug.StartListener(&hbone.Listener{
- Address: "0.0.0.0:80",
- Protocol: ugate.ProtoHTTP,
- })
- }
-
- return nil
-}
-
-// Based on the port in the Dest, find the Listener config.
-// Used when the dest IP:port is extracted from the metadata
-func (ug *UGate) FindRouteIn(m *nio.Stream) *nio.Route {
- //_, p, _ := net.SplitHostPort(m.Dest)
- //l := ug.Config.Listeners[":"+p]
- //if l != nil {
- // return l
- //}
-
- //l := ug.Config.Listeners["-:"+p]
- //if l != nil {
- // return &l.Route
- //}
- return ug.DefaultRoute
-}
-
-// FindRouteOut will use the IP in Dest, and find the cluster
-// and endpoints.
-func (ug *UGate) FindRouteOut(m *nio.Stream) *nio.Route {
- l := ug.Config.Routes[m.Dest]
- if l != nil {
- return l
- }
-
- h, p, _ := net.SplitHostPort(m.Dest)
- l = ug.Config.Routes[h]
- if l != nil {
- return l
- }
- l = ug.Config.Routes[":"+p]
- if l != nil {
- return l
- }
- return ug.DefaultRoute
-}
-
-func (ug *UGate) FindRoutePrefix(dstaddr net.IP, p uint16, prefix string) *nio.Route {
- port := ":" + strconv.Itoa(int(p))
- l := ug.Config.Routes[prefix+dstaddr.String()+port]
- if l != nil {
- return l
- }
-
- l = ug.Config.Routes[prefix+port]
- if l != nil {
- return l
- }
-
- l = ug.Config.Routes[prefix+"-"+port]
- if l != nil {
- return l
- }
- return ug.DefaultRoute
-}
-
-// HandleStream is called for accepted (incoming) streams.
-//
-// Multiplexed streams ( H2, SNI ) also call this method.
-//
-// At this point the stream has the metadata:
-//
-// - Listener - actual port that accepted connection.
-// - Dest - SNI, Host, original dest for iptables, listener's forward addr
-// - RequestURI
-// - Host
-// - Headers
-// - TLS context
-//
-// In addition TrackStreamIn has been called.
-// This is a blocking method.
-func (ug *UGate) HandleStream(str *nio.Stream) error {
- if str.Route == nil {
- str.Route = ug.FindRouteOut(str)
- }
- route := str.Route
-
- //if route.Protocol == ugate.ProtoBTS || route.Protocol == ugate.ProtoBTSC {
- // panic("Should not happen")
- // str.PostDial(str, nil)
- // // TLS is already wrapped for BTS
- // return ug.H2Handler.HandleHTTPS(str)
- //}
-
- if route.ForwardTo != "" {
- str.Dest = route.ForwardTo
- }
-
- if route.Handler == nil && strings.HasPrefix(route.ForwardTo, "/") {
- // TODO: register handlers
- if route.ForwardTo == "/echo" {
- route.Handler = &EchoHandler{}
- }
- }
-
- // Config has an in-process handler - not forwarding (or the handler may
- // forward).
- if route.Handler != nil {
- // SOCKS and others need to send something back - we don't
- // have a real connection, faking it.
- str.PostDial(str, nil)
- str.Dest = fmt.Sprintf("%v", route.Handler)
- err := route.Handler.Handle(str)
- str.Close()
- return err
- }
-
- // By default, dial out
- return ug.DialAndProxy(str)
-}
-
-func (gw *UGate) OnMuxClose(dm *ugate.Cluster) {
- if _, f := gw.Config.H2R[dm.ID]; !f {
- return
- }
- gw.H2Handler.maintainPinnedConnection(dm, nil)
-
-}
-
-var LogClose = true
-
-// OnHClose called on http close
-func (gw *UGate) OnHClose(s string, id string, san string, r *http.Request, since time.Duration) {
- if !gw.Config.NoAccessLog {
- log.Println("HTTP", r.Method, r.URL, r.Proto, r.Header, id, san, r.RemoteAddr, since)
- }
-}
-
-func (gw *UGate) OnSClose(str *nio.Stream, addr net.Addr) {
- if !gw.Config.NoAccessLog {
- if str.ReadErr != nil || str.WriteErr != nil {
- log.Printf("%d AC: src=%s://%v dst=%s rcv=%d/%d snd=%d/%d la=%v ra=%v op=%v %v %v",
- str.StreamId,
- str.Type, addr,
- str.Dest,
- str.RcvdPackets, str.RcvdBytes,
- str.SentPackets, str.SentBytes,
- time.Since(str.LastWrite),
- time.Since(str.LastRead),
- int64(time.Since(str.Open).Seconds()),
- str.ReadErr, str.WriteErr)
- return
- }
- log.Printf("AC: %d src=%s://%v dst=%s rcv=%d/%d snd=%d/%d la=%v ra=%v op=%v",
- str.StreamId,
- str.Type, addr,
- str.Dest,
- str.RcvdPackets, str.RcvdBytes,
- str.SentPackets, str.SentBytes,
- time.Since(str.LastWrite),
- time.Since(str.LastRead),
- int64(time.Since(str.Open).Seconds()))
-
- }
-}
diff --git a/pkg/ugatesvc/ugate_test.go b/pkg/ugatesvc/ugate_test.go
deleted file mode 100644
index 03d067f..0000000
--- a/pkg/ugatesvc/ugate_test.go
+++ /dev/null
@@ -1,205 +0,0 @@
-package ugatesvc_test
-
-import (
- "context"
- "crypto"
- "crypto/ecdsa"
- "crypto/tls"
- "fmt"
- "io"
- "log"
- "net/http"
- "testing"
-
- "github.com/costinm/hbone/nio"
- "github.com/costinm/meshauth"
- "github.com/costinm/ugate"
- "github.com/costinm/ugate/test"
-)
-
-func TestSrv(t *testing.T) {
- // xx07 -> BTS port
- // xx12 -> plain text echo
- // "/dm/" -> POST-based tunnel ( more portable than CONNECT )
-
- // Bob connected to Carol
- bob := test.InitTestServer(test.BOB_KEYS, &ugate.MeshSettings{
- BasePort: 6100,
- Name: "bob",
- }, nil)
-
- // Alice connected to Bob
- alice := test.InitTestServer(test.ALICE_KEYS, &ugate.MeshSettings{
- BasePort: 6000,
- Name: "alice",
- H2R: map[string]string{
- "bob": "-",
- },
- Clusters: map[string]*ugate.Cluster{
- "bob": &ugate.Cluster{
- Addr: "127.0.0.1:6107",
- },
- },
- }, nil)
-
- //carol := test.InitTestServer(test.CAROL_KEYS, &ugate.MeshSettings{
- // BasePort: 6200,
- // Name: "carol",
- //}, nil)
-
- //http2.DebugGoroutines = true
-
- t.Run("Echo-tcp", func(t *testing.T) {
- ab, err := alice.DialContext(context.Background(), "tcp",
- fmt.Sprintf("127.0.0.1:%d", 6112))
- if err != nil {
- t.Fatal(err)
- }
- res, err := test.CheckEcho(ab, ab)
- if err != nil {
- t.Fatal(err)
- }
- log.Println("Result ", res)
-
- })
-
- // TLS Echo server, on 6111
- t.Run("Echo-tls", func(t *testing.T) {
- ab, err := alice.DialContext(context.Background(), "tls",
- fmt.Sprintf("127.0.0.1:%d", 6111))
- if err != nil {
- t.Fatal(err)
- }
- // TODO: verify the identity, cert, etc
- res, err := test.CheckEcho(ab, ab)
- if err != nil {
- t.Fatal(err)
- }
- mc := ab.(*nio.Stream)
- log.Println("Result ", res, mc)
- })
-
- // This is a H2 (BTS) request that is forwarded to a TCP stream handler.
- // Alice -BTS-> Bob -TCP-> Carol
- t.Run("H2-egress", func(t *testing.T) {
- i, o := io.Pipe()
- r, _ := http.NewRequest("POST", "https://127.0.0.1:6107/dm/"+"127.0.0.1:6112", i)
- res, err := alice.RoundTrip(r)
- if err != nil {
- t.Fatal(err)
- }
-
- res1, err := test.CheckEcho(res.Body, o)
- if err != nil {
- t.Fatal(err)
- }
-
- log.Println(res1, alice, bob)
- })
-
- // TODO: perm checks for egress
- // TODO: same test for ingress ( localhost:port ) and internal listeners
-
- //// Bob -> H2R -> Alice
- //t.Run("H2R1", func(t *testing.T) {
- // p := pipe.New()
- // r, _ := http.NewRequest("POST", "https://" + alice.Auth.WorkloadID + "/dm/127.0.0.1:6112", p)
- // res, err := bob.RoundTrip(r)
- // if err != nil {
- // t.Fatal(err)
- // }
- // nc := nio.NewStreamRequestOut(r, p, res, nil)
- //
- // if err != nil {
- // t.Fatal(err)
- // }
- // res1, err := test.CheckEcho(nc, nc)
- // if err != nil {
- // t.Fatal(err)
- // }
- //
- // log.Println(res1, alice, bob)
- //})
- //
- //// Alice -- reverse tunnel --> Bob
- //// Carol --> Bob -- via H2R --> Alice
- //t.Run("H2R", func(t *testing.T) {
- // alice.H2Handler.UpdateReverseAccept()
- // // Connecting to Bob's gateway (from c). Request should go to Alice.
- // //
- // p := pipe.New()
- // r, _ := http.NewRequest("POST", "https://127.0.0.1:6107/dm/"+alice.Auth.WorkloadID + "/dm/127.0.0.1:6112", p)
- // res, err := carol.RoundTrip(r)
- // if err != nil {
- // t.Fatal(err)
- // }
- // nc := nio.NewStreamRequestOut(r, p, res, nil)
- //
- // if err != nil {
- // t.Fatal(err)
- // }
- // res1, err := test.CheckEcho(nc, nc)
- // if err != nil {
- // t.Fatal(err)
- // }
- //
- // log.Println(res1, alice, bob)
- //})
-}
-
-// Run a suite of tests with a specific key, to repeat the tests for all types of keys.
-func testKey(k crypto.PrivateKey, t *testing.T) {
- pk := meshauth.PublicKey(k)
- if pk == nil {
- t.Fatal("Invalid public")
- }
- id := meshauth.IDFromPublicKey(pk)
- //crt, err := KeyToCertificate(k)
- //if err != nil {
- // t.Fatal(err)
- //}
- //chain, err := RawToCertChain(crt.Certificate)
- //if err != nil {
- // t.Fatal(err)
- //}
- //certPub, err := PubKeyFromCertChain(chain)
- //if id != IDFromPublicKey(certPub) {
- // t.Fatal("Cert chain public key not matching", id, IDFromPublicKey(certPub))
- //}
-
- t.Log("Key WorkloadID:", id)
-}
-
-func TestCrypto(t *testing.T) {
- t.Run("AuthInit", func(t *testing.T) {
- a := meshauth.NewAuth("", "")
-
- //if a.RSACert == nil {
- // t.Error("Missing RSA")
- //}
- if a.Cert == nil {
- t.Error("Missing EC")
- }
- //if a.ED25519Cert == nil {
- // t.Error("Missing ED")
- //}
-
- b := meshauth.NewAuth("", "")
- //if !bytes.Equal(a.ED25519Cert.PrivateKey.(ed25519.PrivateKey),
- // b.ED25519Cert.PrivateKey.(ed25519.PrivateKey)) {
- // t.Error("Error loading")
- //}
- //if !a.RSACert.PrivateKey.(*rsa.PrivateKey).Equal(
- // b.RSACert.PrivateKey) {
- // t.Error("Error loading")
- //}
- if !a.Cert.PrivateKey.(*ecdsa.PrivateKey).Equal(b.Cert.PrivateKey) {
- t.Error("Error loading")
- }
- //testKey(a.ED25519Cert.PrivateKey, t)
- //testKey(a.RSACert.PrivateKey, t)
- testKey(a.Cert, t)
- })
-}
-
-var tlsConfigInsecure = &tls.Config{InsecureSkipVerify: true}
diff --git a/ugated/pkg/webrtc/README.md b/pkg/webrtc/README.md
similarity index 100%
rename from ugated/pkg/webrtc/README.md
rename to pkg/webrtc/README.md
diff --git a/pkg/webrtc/go.mod b/pkg/webrtc/go.mod
new file mode 100644
index 0000000..013a3f4
--- /dev/null
+++ b/pkg/webrtc/go.mod
@@ -0,0 +1,41 @@
+module github.com/costinm/ugate/pkg/webrtc
+
+go 1.21
+
+replace github.com/costinm/ugate => ../..
+
+require (
+ github.com/costinm/meshauth v0.0.0-20240105003042-ccb7c7765ee0
+ github.com/costinm/ugate v0.0.0-00010101000000-000000000000
+ github.com/pion/sctp v1.8.9
+ github.com/pion/turn/v2 v2.1.4
+ github.com/pion/webrtc/v3 v3.2.24
+)
+
+require (
+ github.com/costinm/ssh-mesh v0.0.0-20240101190630-66786111a72d // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/google/uuid v1.3.1 // indirect
+ github.com/pion/datachannel v1.5.5 // indirect
+ github.com/pion/dtls/v2 v2.2.7 // indirect
+ github.com/pion/ice/v2 v2.3.11 // indirect
+ github.com/pion/interceptor v0.1.25 // indirect
+ github.com/pion/logging v0.2.2 // indirect
+ github.com/pion/mdns v0.0.8 // indirect
+ github.com/pion/randutil v0.1.0 // indirect
+ github.com/pion/rtcp v1.2.12 // indirect
+ github.com/pion/rtp v1.8.3 // indirect
+ github.com/pion/sdp/v3 v3.0.6 // indirect
+ github.com/pion/srtp/v2 v2.0.18 // indirect
+ github.com/pion/stun v0.6.1 // indirect
+ github.com/pion/transport/v2 v2.2.3 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/stretchr/testify v1.8.4 // indirect
+ golang.org/x/crypto v0.17.0 // indirect
+ golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
+ golang.org/x/net v0.19.0 // indirect
+ golang.org/x/sys v0.16.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+ sigs.k8s.io/yaml v1.4.0 // indirect
+)
diff --git a/ugated/pkg/webrtc/rtc.go b/pkg/webrtc/rtc.go
similarity index 100%
rename from ugated/pkg/webrtc/rtc.go
rename to pkg/webrtc/rtc.go
diff --git a/ugated/pkg/webrtc/rtc_test.go b/pkg/webrtc/rtc_test.go
similarity index 68%
rename from ugated/pkg/webrtc/rtc_test.go
rename to pkg/webrtc/rtc_test.go
index adaf4d7..1499f9b 100644
--- a/ugated/pkg/webrtc/rtc_test.go
+++ b/pkg/webrtc/rtc_test.go
@@ -4,19 +4,24 @@ import (
"testing"
"time"
- "github.com/costinm/ugate/test"
+ "github.com/costinm/ugate"
+ "github.com/costinm/ugate/pkg/test"
)
func TestRTC(t *testing.T) {
- alice := test.InitTestServer(test.ALICE_KEYS, nil, nil)
+ alice := test.NewTestNode(test.AliceMeshAuthCfg, &ugate.MeshSettings{
+ BasePort: 5700,
+ })
// Enable RTC for alice
pc1, off1, err := InitWebRTCS(alice, alice.Auth)
if err != nil {
t.Fatal(err)
}
- bob := test.InitTestServer(test.BOB_KEYS, nil, nil)
+ bob := test.NewTestNode(test.BobMeshAuthCfg, &ugate.MeshSettings{
+ BasePort: 5800,
+ })
InitWebRTCS(bob, bob.Auth)
res, err := DialWebRTC(off1)
diff --git a/ugated/pkg/webrtc/webrtc.go b/pkg/webrtc/webrtc.go
similarity index 89%
rename from ugated/pkg/webrtc/webrtc.go
rename to pkg/webrtc/webrtc.go
index 92b1242..fc471d3 100644
--- a/ugated/pkg/webrtc/webrtc.go
+++ b/pkg/webrtc/webrtc.go
@@ -8,16 +8,20 @@ import (
"net/http"
"time"
+ "github.com/costinm/ugate"
+
"github.com/costinm/meshauth"
- "github.com/costinm/ugate/pkg/ugatesvc"
"github.com/pion/sctp"
"github.com/pion/webrtc/v3"
)
+// WIP: experiments with webRTC for data channels.
+// WebRTC is bi-directional, like SSH - both ends can initiate connections.
+
type RTC struct {
Conn map[string]sctp.Association
- UGate *ugatesvc.UGate
+ UGate *ugate.UGate
}
// Returns a json with an offer for connecting this host, to allow a web or dmesh client
@@ -121,7 +125,7 @@ func DialWebRTC(inOffer *webrtc.SessionDescription) (*webrtc.SessionDescription,
peerConnection.OnConnectionStateChange(func(state webrtc.PeerConnectionState) {
log.Println("OnConnectionStateChange: ", state, peerConnection.SignalingState())
if state == webrtc.PeerConnectionStateConnected {
- //log.Println(peerConnection.SCTP().Transport().GetRemoteCertificate())
+ //log.Println(peerConnection.SCTP().H2Transport().GetRemoteCertificate())
log.Println(peerConnection.SCTP().Transport().GetLocalParameters())
}
})
@@ -163,7 +167,7 @@ func DialWebRTC(inOffer *webrtc.SessionDescription) (*webrtc.SessionDescription,
//
// TODO:
// - session.URI
-func InitWebRTCS(ug *ugatesvc.UGate, auth *meshauth.MeshAuth) (*webrtc.PeerConnection, *webrtc.SessionDescription, error) {
+func InitWebRTCS(ug *ugate.UGate, auth *meshauth.MeshAuth) (*webrtc.PeerConnection, *webrtc.SessionDescription, error) {
rtcg := &RTC{
UGate: ug,
}
@@ -264,6 +268,7 @@ func InitWebRTCS(ug *ugatesvc.UGate, auth *meshauth.MeshAuth) (*webrtc.PeerConne
if err = peerConnection.SetLocalDescription(offer); err != nil {
panic(err)
}
+
// Create channel that is blocked until ICE Gathering is complete
gatherComplete := webrtc.GatheringCompletePromise(peerConnection)
@@ -272,6 +277,23 @@ func InitWebRTCS(ug *ugatesvc.UGate, auth *meshauth.MeshAuth) (*webrtc.PeerConne
// in a production application you should exchange ICE Candidates via OnICECandidate
<-gatherComplete
- log.Println("Offer gather complete")
+ //log.Println("Offer gather complete", offer)
+ // {offer v=0
+ //o=- 4226443055588174689 1705330927 IN IP4 0.0.0.0
+ //s=-
+ //t=0 0
+ //a=fingerprint:sha-256 2D:EF:8B:7A:82:09:0A:C4:7F:33:A1:55:E9:0B:CA:C4:FA:C6:5C:7B:BB:E6:AE:02:80:B1:3C:F3:A0:96:8E:7D
+ //a=extmap-allow-mixed
+ //a=group:BUNDLE 0
+ //m=application 9 UDP/DTLS/SCTP webrtc-datachannel
+ //c=IN IP4 0.0.0.0
+ //a=setup:actpass
+ //a=mid:0
+ //a=sendrecv
+ //a=sctp-port:5000
+ //a=ice-ufrag:AyLwJUlXXeVvlzTD
+ //a=ice-pwd:ggGigrcnoGALEkMDmBuWVNfAFwdicCnN
+ // 0xc0000d6240}
+
return peerConnection, &offer, nil
}
diff --git a/pkg/ws/README.md b/pkg/ws/README.md
new file mode 100644
index 0000000..b1e4872
--- /dev/null
+++ b/pkg/ws/README.md
@@ -0,0 +1,9 @@
+# Websocket and WS over H2
+
+# Others
+
+https://github.com/gabihodoroaga/http-grpc-websocket
+ - based on "nhooyr.io/websocket"
+It appears it does an UPGRADE over the H2 stream - not connect ???
+
+
diff --git a/proto/README.md b/proto/README.md
deleted file mode 100644
index 03d3f0f..0000000
--- a/proto/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Protos defined and used in the repo
-
-Adopting the style of 'buf.build', and keeping the protos dependency-free (except the proto itself)
-
-
-## BSR
-
-auto-generated code:
- go.buf.build/TEMPLATE_OWNER/TEMPLATE_NAME/MODULE_OWNER/MODULE_NAME
-
-Example:
-"go.buf.build/grpc/go/googleapis/googleapis/google/storage/v1"
-
-## Usage
-
-grpcurl -protoset <(buf build -o -) ...
-
-
-## Imported packages
-
-- proto - Istio test echo is using the 'proto' package - preserved for compatibility with the test infra.
-- private ca
-- meshca
-- istio ca
-- grpc/grpc-proto - except tls/provider/meshca
-- simplified version of envoy
-- konectivity from kde
diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml
deleted file mode 100644
index 7537744..0000000
--- a/proto/buf.gen.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-version: v1
-plugins:
- - name: go
- out: ../gen/proto
- opt: paths=source_relative
diff --git a/proto/envoy/service/discovery/v3/xds.proto b/proto/envoy/service/discovery/v3/xds.proto
deleted file mode 100644
index 64f8832..0000000
--- a/proto/envoy/service/discovery/v3/xds.proto
+++ /dev/null
@@ -1,25 +0,0 @@
-syntax = "proto3";
-
-// GRPC package - part of the URL. Service is added.
-// URL: /PACKAGE.SERVICE/METHOD
-package envoy.service.discovery.v3;
-import "xds/envoy_simplified.proto";
-
-option go_package="github.com/costinm/grpc-mesh/gen/proto/envoy/service/discovery";
-
-// ServiceName: "envoy.service.discovery.v2.AggregatedDiscoveryService",
-
-
-// Bi-directional streaming interface for messages.
-// Subscribe, Ack, Push are represented as upstream messages.
-// Monitor, Receipts, SubscribeResponse, AckResponse are represented as downstream messages.
-//
-// See https://github.com/lyft/envoy-api#apis for a description of the role of
-// ADS and how it is intended to be used by a management server. ADS requests
-// have the same structure as their singleton xDS counterparts, but can
-// multiplex many resource types on a single stream. The type_url in the
-// DiscoveryRequest/DiscoveryResponse provides sufficient information to recover
-// the multiplexed singleton APIs at the Envoy instance and management server.
-service AggregatedDiscoveryService {
- rpc StreamAggregatedResources(stream xds.DiscoveryRequest) returns (stream xds.DiscoveryResponse) {}
-}
diff --git a/proto/fgrpc/ping.proto b/proto/fgrpc/ping.proto
deleted file mode 100644
index a1bfac1..0000000
--- a/proto/fgrpc/ping.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-// regenerate the .pb.go file after any change using
-// protoc ping.proto --go_out=plugins=grpc:.
-syntax = "proto3";
-package fgrpc;
-option go_package="github.com/costinm/ugate/gen/proto/fgrpc";
-
-message PingMessage {
- int64 seq = 1; // sequence number
- int64 ts = 2; // src send ts / dest receive ts
- string payload = 3; // extra packet data
- int64 delayNanos = 4; // delay the response by x nanoseconds
-}
-
-service PingServer {
- rpc Ping (PingMessage) returns (PingMessage) {}
-}
diff --git a/proto/google/api/annotations.proto b/proto/google/api/annotations.proto
deleted file mode 100644
index efdab3d..0000000
--- a/proto/google/api/annotations.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2015 Google LLC
-//
-// 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";
-
-package google.api;
-
-import "google/api/http.proto";
-import "google/protobuf/descriptor.proto";
-
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "AnnotationsProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-extend google.protobuf.MethodOptions {
- // See `HttpRule`.
- HttpRule http = 72295728;
-}
diff --git a/proto/google/api/client.proto b/proto/google/api/client.proto
deleted file mode 100644
index 3b3fd0c..0000000
--- a/proto/google/api/client.proto
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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";
-
-package google.api;
-
-import "google/protobuf/descriptor.proto";
-
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "ClientProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-extend google.protobuf.MethodOptions {
- // A definition of a client library method signature.
- //
- // In client libraries, each proto RPC corresponds to one or more methods
- // which the end user is able to call, and calls the underlying RPC.
- // Normally, this method receives a single argument (a struct or instance
- // corresponding to the RPC request object). Defining this field will
- // add one or more overloads providing flattened or simpler method signatures
- // in some languages.
- //
- // The fields on the method signature are provided as a comma-separated
- // string.
- //
- // For example, the proto RPC and annotation:
- //
- // rpc CreateSubscription(CreateSubscriptionRequest)
- // returns (Subscription) {
- // option (google.api.method_signature) = "name,topic";
- // }
- //
- // Would add the following Java overload (in addition to the method accepting
- // the request object):
- //
- // public final Subscription createSubscription(String name, String topic)
- //
- // The following backwards-compatibility guidelines apply:
- //
- // * Adding this annotation to an unannotated method is backwards
- // compatible.
- // * Adding this annotation to a method which already has existing
- // method signature annotations is backwards compatible if and only if
- // the new method signature annotation is last in the sequence.
- // * Modifying or removing an existing method signature annotation is
- // a breaking change.
- // * Re-ordering existing method signature annotations is a breaking
- // change.
- repeated string method_signature = 1051;
-}
-
-extend google.protobuf.ServiceOptions {
- // The hostname for this service.
- // This should be specified with no prefix or protocol.
- //
- // Example:
- //
- // service Foo {
- // option (google.api.default_host) = "foo.googleapi.com";
- // ...
- // }
- string default_host = 1049;
-
- // OAuth scopes needed for the client.
- //
- // Example:
- //
- // service Foo {
- // option (google.api.oauth_scopes) = \
- // "https://www.googleapis.com/auth/cloud-platform";
- // ...
- // }
- //
- // If there is more than one scope, use a comma-separated string:
- //
- // Example:
- //
- // service Foo {
- // option (google.api.oauth_scopes) = \
- // "https://www.googleapis.com/auth/cloud-platform,"
- // "https://www.googleapis.com/auth/monitoring";
- // ...
- // }
- string oauth_scopes = 1050;
-}
diff --git a/proto/google/api/field_behavior.proto b/proto/google/api/field_behavior.proto
deleted file mode 100644
index c4abe3b..0000000
--- a/proto/google/api/field_behavior.proto
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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";
-
-package google.api;
-
-import "google/protobuf/descriptor.proto";
-
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "FieldBehaviorProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-extend google.protobuf.FieldOptions {
- // A designation of a specific field behavior (required, output only, etc.)
- // in protobuf messages.
- //
- // Examples:
- //
- // string name = 1 [(google.api.field_behavior) = REQUIRED];
- // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
- // google.protobuf.Duration ttl = 1
- // [(google.api.field_behavior) = INPUT_ONLY];
- // google.protobuf.Timestamp expire_time = 1
- // [(google.api.field_behavior) = OUTPUT_ONLY,
- // (google.api.field_behavior) = IMMUTABLE];
- repeated google.api.FieldBehavior field_behavior = 1052;
-}
-
-// An indicator of the behavior of a given field (for example, that a field
-// is required in requests, or given as output but ignored as input).
-// This **does not** change the behavior in protocol buffers itself; it only
-// denotes the behavior and may affect how API tooling handles the field.
-//
-// Note: This enum **may** receive new values in the future.
-enum FieldBehavior {
- // Conventional default for enums. Do not use this.
- FIELD_BEHAVIOR_UNSPECIFIED = 0;
-
- // Specifically denotes a field as optional.
- // While all fields in protocol buffers are optional, this may be specified
- // for emphasis if appropriate.
- OPTIONAL = 1;
-
- // Denotes a field as required.
- // This indicates that the field **must** be provided as part of the request,
- // and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
- REQUIRED = 2;
-
- // Denotes a field as output only.
- // This indicates that the field is provided in responses, but including the
- // field in a request does nothing (the server *must* ignore it and
- // *must not* throw an error as a result of the field's presence).
- OUTPUT_ONLY = 3;
-
- // Denotes a field as input only.
- // This indicates that the field is provided in requests, and the
- // corresponding field is not included in output.
- INPUT_ONLY = 4;
-
- // Denotes a field as immutable.
- // This indicates that the field may be set once in a request to create a
- // resource, but may not be changed thereafter.
- IMMUTABLE = 5;
-
- // Denotes that a (repeated) field is an unordered list.
- // This indicates that the service may provide the elements of the list
- // in any arbitrary order, rather than the order the user originally
- // provided. Additionally, the list's order may or may not be stable.
- UNORDERED_LIST = 6;
-
- // Denotes that this field returns a non-empty default value if not set.
- // This indicates that if the user provides the empty value in a request,
- // a non-empty value will be returned. The user will not be aware of what
- // non-empty value to expect.
- NON_EMPTY_DEFAULT = 7;
-}
diff --git a/proto/google/api/http.proto b/proto/google/api/http.proto
deleted file mode 100644
index 113fa93..0000000
--- a/proto/google/api/http.proto
+++ /dev/null
@@ -1,375 +0,0 @@
-// Copyright 2015 Google LLC
-//
-// 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";
-
-package google.api;
-
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "HttpProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-// Defines the HTTP configuration for an API service. It contains a list of
-// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
-// to one or more HTTP REST API methods.
-message Http {
- // A list of HTTP configuration rules that apply to individual API methods.
- //
- // **NOTE:** All service configuration rules follow "last one wins" order.
- repeated HttpRule rules = 1;
-
- // When set to true, URL path parameters will be fully URI-decoded except in
- // cases of single segment matches in reserved expansion, where "%2F" will be
- // left encoded.
- //
- // The default behavior is to not decode RFC 6570 reserved characters in multi
- // segment matches.
- bool fully_decode_reserved_expansion = 2;
-}
-
-// # gRPC Transcoding
-//
-// gRPC Transcoding is a feature for mapping between a gRPC method and one or
-// more HTTP REST endpoints. It allows developers to build a single API service
-// that supports both gRPC APIs and REST APIs. Many systems, including [Google
-// APIs](https://github.com/googleapis/googleapis),
-// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
-// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
-// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
-// and use it for large scale production services.
-//
-// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
-// how different portions of the gRPC request message are mapped to the URL
-// path, URL query parameters, and HTTP request body. It also controls how the
-// gRPC response message is mapped to the HTTP response body. `HttpRule` is
-// typically specified as an `google.api.http` annotation on the gRPC method.
-//
-// Each mapping specifies a URL path template and an HTTP method. The path
-// template may refer to one or more fields in the gRPC request message, as long
-// as each field is a non-repeated field with a primitive (non-message) type.
-// The path template controls how fields of the request message are mapped to
-// the URL path.
-//
-// Example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get: "/v1/{name=messages/*}"
-// };
-// }
-// }
-// message GetMessageRequest {
-// string name = 1; // Mapped to URL path.
-// }
-// message Message {
-// string text = 1; // The resource content.
-// }
-//
-// This enables an HTTP REST to gRPC mapping as below:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
-//
-// Any fields in the request message which are not bound by the path template
-// automatically become HTTP query parameters if there is no HTTP request body.
-// For example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get:"/v1/messages/{message_id}"
-// };
-// }
-// }
-// message GetMessageRequest {
-// message SubMessage {
-// string subfield = 1;
-// }
-// string message_id = 1; // Mapped to URL path.
-// int64 revision = 2; // Mapped to URL query parameter `revision`.
-// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
-// }
-//
-// This enables a HTTP JSON to RPC mapping as below:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
-// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
-// "foo"))`
-//
-// Note that fields which are mapped to URL query parameters must have a
-// primitive type or a repeated primitive type or a non-repeated message type.
-// In the case of a repeated type, the parameter can be repeated in the URL
-// as `...?param=A¶m=B`. In the case of a message type, each field of the
-// message is mapped to a separate parameter, such as
-// `...?foo.a=A&foo.b=B&foo.c=C`.
-//
-// For HTTP methods that allow a request body, the `body` field
-// specifies the mapping. Consider a REST update method on the
-// message resource collection:
-//
-// service Messaging {
-// rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// patch: "/v1/messages/{message_id}"
-// body: "message"
-// };
-// }
-// }
-// message UpdateMessageRequest {
-// string message_id = 1; // mapped to the URL
-// Message message = 2; // mapped to the body
-// }
-//
-// The following HTTP JSON to RPC mapping is enabled, where the
-// representation of the JSON in the request body is determined by
-// protos JSON encoding:
-//
-// HTTP | gRPC
-// -----|-----
-// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
-// "123456" message { text: "Hi!" })`
-//
-// The special name `*` can be used in the body mapping to define that
-// every field not bound by the path template should be mapped to the
-// request body. This enables the following alternative definition of
-// the update method:
-//
-// service Messaging {
-// rpc UpdateMessage(Message) returns (Message) {
-// option (google.api.http) = {
-// patch: "/v1/messages/{message_id}"
-// body: "*"
-// };
-// }
-// }
-// message Message {
-// string message_id = 1;
-// string text = 2;
-// }
-//
-//
-// The following HTTP JSON to RPC mapping is enabled:
-//
-// HTTP | gRPC
-// -----|-----
-// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
-// "123456" text: "Hi!")`
-//
-// Note that when using `*` in the body mapping, it is not possible to
-// have HTTP parameters, as all fields not bound by the path end in
-// the body. This makes this option more rarely used in practice when
-// defining REST APIs. The common usage of `*` is in custom methods
-// which don't use the URL at all for transferring data.
-//
-// It is possible to define multiple HTTP methods for one RPC by using
-// the `additional_bindings` option. Example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get: "/v1/messages/{message_id}"
-// additional_bindings {
-// get: "/v1/users/{user_id}/messages/{message_id}"
-// }
-// };
-// }
-// }
-// message GetMessageRequest {
-// string message_id = 1;
-// string user_id = 2;
-// }
-//
-// This enables the following two alternative HTTP JSON to RPC mappings:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
-// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
-// "123456")`
-//
-// ## Rules for HTTP mapping
-//
-// 1. Leaf request fields (recursive expansion nested messages in the request
-// message) are classified into three categories:
-// - Fields referred by the path template. They are passed via the URL path.
-// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They are passed via the HTTP
-// request body.
-// - All other fields are passed via the URL query parameters, and the
-// parameter name is the field path in the request message. A repeated
-// field can be represented as multiple query parameters under the same
-// name.
-// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL query parameter, all fields
-// are passed via URL path and HTTP request body.
-// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP request body, all
-// fields are passed via URL path and URL query parameters.
-//
-// ### Path template syntax
-//
-// Template = "/" Segments [ Verb ] ;
-// Segments = Segment { "/" Segment } ;
-// Segment = "*" | "**" | LITERAL | Variable ;
-// Variable = "{" FieldPath [ "=" Segments ] "}" ;
-// FieldPath = IDENT { "." IDENT } ;
-// Verb = ":" LITERAL ;
-//
-// The syntax `*` matches a single URL path segment. The syntax `**` matches
-// zero or more URL path segments, which must be the last part of the URL path
-// except the `Verb`.
-//
-// The syntax `Variable` matches part of the URL path as specified by its
-// template. A variable template must not contain other variables. If a variable
-// matches a single path segment, its template may be omitted, e.g. `{var}`
-// is equivalent to `{var=*}`.
-//
-// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
-// contains any reserved character, such characters should be percent-encoded
-// before the matching.
-//
-// If a variable contains exactly one path segment, such as `"{var}"` or
-// `"{var=*}"`, when such a variable is expanded into a URL path on the client
-// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
-// server side does the reverse decoding. Such variables show up in the
-// [Discovery
-// Document](https://developers.google.com/discovery/v1/reference/apis) as
-// `{var}`.
-//
-// If a variable contains multiple path segments, such as `"{var=foo/*}"`
-// or `"{var=**}"`, when such a variable is expanded into a URL path on the
-// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
-// The server side does the reverse decoding, except "%2F" and "%2f" are left
-// unchanged. Such variables show up in the
-// [Discovery
-// Document](https://developers.google.com/discovery/v1/reference/apis) as
-// `{+var}`.
-//
-// ## Using gRPC API Service Configuration
-//
-// gRPC API Service Configuration (service config) is a configuration language
-// for configuring a gRPC service to become a user-facing product. The
-// service config is simply the YAML representation of the `google.api.Service`
-// proto message.
-//
-// As an alternative to annotating your proto file, you can configure gRPC
-// transcoding in your service config YAML files. You do this by specifying a
-// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
-// effect as the proto annotation. This can be particularly useful if you
-// have a proto that is reused in multiple services. Note that any transcoding
-// specified in the service config will override any matching transcoding
-// configuration in the proto.
-//
-// Example:
-//
-// http:
-// rules:
-// # Selects a gRPC method and applies HttpRule to it.
-// - selector: example.v1.Messaging.GetMessage
-// get: /v1/messages/{message_id}/{sub.subfield}
-//
-// ## Special notes
-//
-// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
-// proto to JSON conversion must follow the [proto3
-// specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
-//
-// While the single segment variable follows the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
-// Expansion, the multi segment variable **does not** follow RFC 6570 Section
-// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
-// does not expand special characters like `?` and `#`, which would lead
-// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
-// for multi segment variables.
-//
-// The path variables **must not** refer to any repeated or mapped field,
-// because client libraries are not capable of handling such variable expansion.
-//
-// The path variables **must not** capture the leading "/" character. The reason
-// is that the most common use case "{var}" does not capture the leading "/"
-// character. For consistency, all path variables must share the same behavior.
-//
-// Repeated message fields must not be mapped to URL query parameters, because
-// no client library can support such complicated mapping.
-//
-// If an API needs to use a JSON array for request or response body, it can map
-// the request or response body to a repeated field. However, some gRPC
-// Transcoding implementations may not support this feature.
-message HttpRule {
- // Selects a method to which this rule applies.
- //
- // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
- string selector = 1;
-
- // Determines the URL pattern is matched by this rules. This pattern can be
- // used with any of the {get|put|post|delete|patch} methods. A custom method
- // can be defined using the 'custom' field.
- oneof pattern {
- // Maps to HTTP GET. Used for listing and getting information about
- // resources.
- string get = 2;
-
- // Maps to HTTP PUT. Used for replacing a resource.
- string put = 3;
-
- // Maps to HTTP POST. Used for creating a resource or performing an action.
- string post = 4;
-
- // Maps to HTTP DELETE. Used for deleting a resource.
- string delete = 5;
-
- // Maps to HTTP PATCH. Used for updating a resource.
- string patch = 6;
-
- // The custom pattern is used for specifying an HTTP method that is not
- // included in the `pattern` field, such as HEAD, or "*" to leave the
- // HTTP method unspecified for this rule. The wild-card rule is useful
- // for services that provide content to Web (HTML) clients.
- CustomHttpPattern custom = 8;
- }
-
- // The name of the request field whose value is mapped to the HTTP request
- // body, or `*` for mapping all request fields not captured by the path
- // pattern to the HTTP body, or omitted for not having any HTTP request body.
- //
- // NOTE: the referred field must be present at the top-level of the request
- // message type.
- string body = 7;
-
- // Optional. The name of the response field whose value is mapped to the HTTP
- // response body. When omitted, the entire response message will be used
- // as the HTTP response body.
- //
- // NOTE: The referred field must be present at the top-level of the response
- // message type.
- string response_body = 12;
-
- // Additional HTTP bindings for the selector. Nested bindings must
- // not contain an `additional_bindings` field themselves (that is,
- // the nesting may only be one level deep).
- repeated HttpRule additional_bindings = 11;
-}
-
-// A custom pattern is used for defining custom HTTP verb.
-message CustomHttpPattern {
- // The name of this custom HTTP verb.
- string kind = 1;
-
- // The path matched by this custom verb.
- string path = 2;
-}
diff --git a/proto/google/api/resource.proto b/proto/google/api/resource.proto
deleted file mode 100644
index 0ce0344..0000000
--- a/proto/google/api/resource.proto
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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";
-
-package google.api;
-
-import "google/protobuf/descriptor.proto";
-
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "ResourceProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-extend google.protobuf.FieldOptions {
- // An annotation that describes a resource reference, see
- // [ResourceReference][].
- google.api.ResourceReference resource_reference = 1055;
-}
-
-extend google.protobuf.FileOptions {
- // An annotation that describes a resource definition without a corresponding
- // message; see [ResourceDescriptor][].
- repeated google.api.ResourceDescriptor resource_definition = 1053;
-}
-
-extend google.protobuf.MessageOptions {
- // An annotation that describes a resource definition, see
- // [ResourceDescriptor][].
- google.api.ResourceDescriptor resource = 1053;
-}
-
-// A simple descriptor of a resource type.
-//
-// ResourceDescriptor annotates a resource message (either by means of a
-// protobuf annotation or use in the service config), and associates the
-// resource's schema, the resource type, and the pattern of the resource name.
-//
-// Example:
-//
-// message Topic {
-// // Indicates this message defines a resource schema.
-// // Declares the resource type in the format of {service}/{kind}.
-// // For Kubernetes resources, the format is {api group}/{kind}.
-// option (google.api.resource) = {
-// type: "pubsub.googleapis.com/Topic"
-// pattern: "projects/{project}/topics/{topic}"
-// };
-// }
-//
-// The ResourceDescriptor Yaml config will look like:
-//
-// resources:
-// - type: "pubsub.googleapis.com/Topic"
-// pattern: "projects/{project}/topics/{topic}"
-//
-// Sometimes, resources have multiple patterns, typically because they can
-// live under multiple parents.
-//
-// Example:
-//
-// message LogEntry {
-// option (google.api.resource) = {
-// type: "logging.googleapis.com/LogEntry"
-// pattern: "projects/{project}/logs/{log}"
-// pattern: "folders/{folder}/logs/{log}"
-// pattern: "organizations/{organization}/logs/{log}"
-// pattern: "billingAccounts/{billing_account}/logs/{log}"
-// };
-// }
-//
-// The ResourceDescriptor Yaml config will look like:
-//
-// resources:
-// - type: 'logging.googleapis.com/LogEntry'
-// pattern: "projects/{project}/logs/{log}"
-// pattern: "folders/{folder}/logs/{log}"
-// pattern: "organizations/{organization}/logs/{log}"
-// pattern: "billingAccounts/{billing_account}/logs/{log}"
-message ResourceDescriptor {
- // A description of the historical or future-looking state of the
- // resource pattern.
- enum History {
- // The "unset" value.
- HISTORY_UNSPECIFIED = 0;
-
- // The resource originally had one pattern and launched as such, and
- // additional patterns were added later.
- ORIGINALLY_SINGLE_PATTERN = 1;
-
- // The resource has one pattern, but the API owner expects to add more
- // later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
- // that from being necessary once there are multiple patterns.)
- FUTURE_MULTI_PATTERN = 2;
- }
-
- // A flag representing a specific style that a resource claims to conform to.
- enum Style {
- // The unspecified value. Do not use.
- STYLE_UNSPECIFIED = 0;
-
- // This resource is intended to be "declarative-friendly".
- //
- // Declarative-friendly resources must be more strictly consistent, and
- // setting this to true communicates to tools that this resource should
- // adhere to declarative-friendly expectations.
- //
- // Note: This is used by the API linter (linter.aip.dev) to enable
- // additional checks.
- DECLARATIVE_FRIENDLY = 1;
- }
-
- // The resource type. It must be in the format of
- // {service_name}/{resource_type_kind}. The `resource_type_kind` must be
- // singular and must not include version numbers.
- //
- // Example: `storage.googleapis.com/Bucket`
- //
- // The value of the resource_type_kind must follow the regular expression
- // /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
- // should use PascalCase (UpperCamelCase). The maximum number of
- // characters allowed for the `resource_type_kind` is 100.
- string type = 1;
-
- // Optional. The relative resource name pattern associated with this resource
- // type. The DNS prefix of the full resource name shouldn't be specified here.
- //
- // The path pattern must follow the syntax, which aligns with HTTP binding
- // syntax:
- //
- // Template = Segment { "/" Segment } ;
- // Segment = LITERAL | Variable ;
- // Variable = "{" LITERAL "}" ;
- //
- // Examples:
- //
- // - "projects/{project}/topics/{topic}"
- // - "projects/{project}/knowledgeBases/{knowledge_base}"
- //
- // The components in braces correspond to the IDs for each resource in the
- // hierarchy. It is expected that, if multiple patterns are provided,
- // the same component name (e.g. "project") refers to IDs of the same
- // type of resource.
- repeated string pattern = 2;
-
- // Optional. The field on the resource that designates the resource name
- // field. If omitted, this is assumed to be "name".
- string name_field = 3;
-
- // Optional. The historical or future-looking state of the resource pattern.
- //
- // Example:
- //
- // // The InspectTemplate message originally only supported resource
- // // names with organization, and project was added later.
- // message InspectTemplate {
- // option (google.api.resource) = {
- // type: "dlp.googleapis.com/InspectTemplate"
- // pattern:
- // "organizations/{organization}/inspectTemplates/{inspect_template}"
- // pattern: "projects/{project}/inspectTemplates/{inspect_template}"
- // history: ORIGINALLY_SINGLE_PATTERN
- // };
- // }
- History history = 4;
-
- // The plural name used in the resource name and permission names, such as
- // 'projects' for the resource name of 'projects/{project}' and the permission
- // name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same
- // concept of the `plural` field in k8s CRD spec
- // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
- //
- // Note: The plural form is required even for singleton resources. See
- // https://aip.dev/156
- string plural = 5;
-
- // The same concept of the `singular` field in k8s CRD spec
- // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
- // Such as "project" for the `resourcemanager.googleapis.com/Project` type.
- string singular = 6;
-
- // Style flag(s) for this resource.
- // These indicate that a resource is expected to conform to a given
- // style. See the specific style flags for additional information.
- repeated Style style = 10;
-}
-
-// Defines a proto annotation that describes a string field that refers to
-// an API resource.
-message ResourceReference {
- // The resource type that the annotated field references.
- //
- // Example:
- //
- // message Subscription {
- // string topic = 2 [(google.api.resource_reference) = {
- // type: "pubsub.googleapis.com/Topic"
- // }];
- // }
- //
- // Occasionally, a field may reference an arbitrary resource. In this case,
- // APIs use the special value * in their resource reference.
- //
- // Example:
- //
- // message GetIamPolicyRequest {
- // string resource = 2 [(google.api.resource_reference) = {
- // type: "*"
- // }];
- // }
- string type = 1;
-
- // The resource type of a child collection that the annotated field
- // references. This is useful for annotating the `parent` field that
- // doesn't have a fixed resource type.
- //
- // Example:
- //
- // message ListLogEntriesRequest {
- // string parent = 1 [(google.api.resource_reference) = {
- // child_type: "logging.googleapis.com/LogEntry"
- // };
- // }
- string child_type = 2;
-}
diff --git a/proto/google/cloud/security/privateca/v1/resources.proto b/proto/google/cloud/security/privateca/v1/resources.proto
deleted file mode 100644
index 7e93abc..0000000
--- a/proto/google/cloud/security/privateca/v1/resources.proto
+++ /dev/null
@@ -1,1124 +0,0 @@
-// Copyright 2022 Google LLC
-//
-// 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";
-
-package google.cloud.security.privateca.v1;
-
-import "google/api/annotations.proto";
-import "google/api/field_behavior.proto";
-import "google/api/resource.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/timestamp.proto";
-import "google/type/expr.proto";
-
-option cc_enable_arenas = true;
-option csharp_namespace = "Google.Cloud.Security.PrivateCA.V1";
-option go_package = "google.golang.org/genproto/googleapis/cloud/security/privateca/v1;privateca";
-option java_multiple_files = true;
-option java_outer_classname = "PrivateCaResourcesProto";
-option java_package = "com.google.cloud.security.privateca.v1";
-option php_namespace = "Google\\Cloud\\Security\\PrivateCA\\V1";
-option ruby_package = "Google::Cloud::Security::PrivateCA::V1";
-
-// A [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] represents an individual Certificate Authority.
-// A [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] can be used to create [Certificates][google.cloud.security.privateca.v1.Certificate].
-message CertificateAuthority {
- option (google.api.resource) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- pattern: "projects/{project}/locations/{location}/caPools/{ca_pool}/certificateAuthorities/{certificate_authority}"
- };
-
- // The type of a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], indicating its issuing chain.
- enum Type {
- // Not specified.
- TYPE_UNSPECIFIED = 0;
-
- // Self-signed CA.
- SELF_SIGNED = 1;
-
- // Subordinate CA. Could be issued by a Private CA [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]
- // or an unmanaged CA.
- SUBORDINATE = 2;
- }
-
- // The state of a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], indicating if it can be used.
- enum State {
- // Not specified.
- STATE_UNSPECIFIED = 0;
-
- // Certificates can be issued from this CA. CRLs will be generated for this
- // CA. The CA will be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, and will be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- ENABLED = 1;
-
- // Certificates cannot be issued from this CA. CRLs will still be generated.
- // The CA will be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, but will not be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- DISABLED = 2;
-
- // Certificates can be issued from this CA. CRLs will be generated for this
- // CA. The CA will be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, but will not
- // be used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- STAGED = 3;
-
- // Certificates cannot be issued from this CA. CRLs will not be generated.
- // The CA will not be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, and will not be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- AWAITING_USER_ACTIVATION = 4;
-
- // Certificates cannot be issued from this CA. CRLs will not be generated.
- // The CA may still be recovered by calling
- // [CertificateAuthorityService.UndeleteCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.UndeleteCertificateAuthority] before
- // [expire_time][google.cloud.security.privateca.v1.CertificateAuthority.expire_time].
- // The CA will not be part of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s trust anchor, and will not be
- // used to issue certificates from the [CaPool][google.cloud.security.privateca.v1.CaPool].
- DELETED = 5;
- }
-
- // URLs where a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will publish content.
- message AccessUrls {
- // The URL where this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA certificate is
- // published. This will only be set for CAs that have been activated.
- string ca_certificate_access_url = 1;
-
- // The URLs where this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CRLs are published. This
- // will only be set for CAs that have been activated.
- repeated string crl_access_urls = 2;
- }
-
- // A Cloud KMS key configuration that a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will use.
- message KeyVersionSpec {
- oneof KeyVersion {
- // The resource name for an existing Cloud KMS CryptoKeyVersion in the
- // format
- // `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.
- // This option enables full flexibility in the key's capabilities and
- // properties.
- string cloud_kms_key_version = 1;
-
- // The algorithm to use for creating a managed Cloud KMS key for a for a
- // simplified experience. All managed keys will be have their
- // [ProtectionLevel][google.cloud.kms.v1.ProtectionLevel] as `HSM`.
- SignHashAlgorithm algorithm = 2;
- }
- }
-
- // The algorithm of a Cloud KMS CryptoKeyVersion of a
- // [CryptoKey][google.cloud.kms.v1.CryptoKey] with the
- // [CryptoKeyPurpose][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose] value
- // `ASYMMETRIC_SIGN`. These values correspond to the
- // [CryptoKeyVersionAlgorithm][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionAlgorithm]
- // values. For RSA signing algorithms, the PSS algorithms should be preferred,
- // use PKCS1 algorithms if required for compatibility. For further
- // recommendations, see
- // https://cloud.google.com/kms/docs/algorithms#algorithm_recommendations.
- enum SignHashAlgorithm {
- // Not specified.
- SIGN_HASH_ALGORITHM_UNSPECIFIED = 0;
-
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PSS_2048_SHA256
- RSA_PSS_2048_SHA256 = 1;
-
- // maps to CryptoKeyVersionAlgorithm. RSA_SIGN_PSS_3072_SHA256
- RSA_PSS_3072_SHA256 = 2;
-
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PSS_4096_SHA256
- RSA_PSS_4096_SHA256 = 3;
-
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_2048_SHA256
- RSA_PKCS1_2048_SHA256 = 6;
-
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_3072_SHA256
- RSA_PKCS1_3072_SHA256 = 7;
-
- // maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_4096_SHA256
- RSA_PKCS1_4096_SHA256 = 8;
-
- // maps to CryptoKeyVersionAlgorithm.EC_SIGN_P256_SHA256
- EC_P256_SHA256 = 4;
-
- // maps to CryptoKeyVersionAlgorithm.EC_SIGN_P384_SHA384
- EC_P384_SHA384 = 5;
- }
-
- // Output only. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Required. Immutable. The [Type][google.cloud.security.privateca.v1.CertificateAuthority.Type] of this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- Type type = 2 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.field_behavior) = IMMUTABLE
- ];
-
- // Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.
- CertificateConfig config = 3 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.field_behavior) = IMMUTABLE
- ];
-
- // Required. Immutable. The desired lifetime of the CA certificate. Used to create the
- // "not_before_time" and "not_after_time" fields inside an X.509
- // certificate.
- google.protobuf.Duration lifetime = 4 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.field_behavior) = IMMUTABLE
- ];
-
- // Required. Immutable. Used when issuing certificates for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]. If this
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] is a self-signed CertificateAuthority, this key
- // is also used to sign the self-signed CA certificate. Otherwise, it
- // is used to sign a CSR.
- KeyVersionSpec key_spec = 5 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.field_behavior) = IMMUTABLE
- ];
-
- // Optional. If this is a subordinate [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], this field will be set
- // with the subordinate configuration, which describes its issuers. This may
- // be updated, but this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] must continue to validate.
- SubordinateConfig subordinate_config = 6 [(google.api.field_behavior) = OPTIONAL];
-
- // Output only. The [CaPool.Tier][google.cloud.security.privateca.v1.CaPool.Tier] of the [CaPool][google.cloud.security.privateca.v1.CaPool] that includes this
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- CaPool.Tier tier = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The [State][google.cloud.security.privateca.v1.CertificateAuthority.State] for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. This [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s certificate chain, including the current
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s certificate. Ordered such that the root issuer
- // is the final element (consistent with RFC 5246). For a self-signed CA, this
- // will only list the current [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s certificate.
- repeated string pem_ca_certificates = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. A structured description of this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA certificate
- // and its issuers. Ordered as self-to-root.
- repeated CertificateDescription ca_certificate_descriptions = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Immutable. The name of a Cloud Storage bucket where this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will
- // publish content, such as the CA certificate and CRLs. This must be a bucket
- // name, without any prefixes (such as `gs://`) or suffixes (such as
- // `.googleapis.com`). For example, to use a bucket named `my-bucket`, you
- // would simply specify `my-bucket`. If not specified, a managed bucket will
- // be created.
- string gcs_bucket = 11 [(google.api.field_behavior) = IMMUTABLE];
-
- // Output only. URLs for accessing content published by this CA, such as the CA certificate
- // and CRLs.
- AccessUrls access_urls = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] was created.
- google.protobuf.Timestamp create_time = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] was last updated.
- google.protobuf.Timestamp update_time = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] was soft deleted, if
- // it is in the [DELETED][google.cloud.security.privateca.v1.CertificateAuthority.State.DELETED] state.
- google.protobuf.Timestamp delete_time = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will be permanently purged,
- // if it is in the [DELETED][google.cloud.security.privateca.v1.CertificateAuthority.State.DELETED] state.
- google.protobuf.Timestamp expire_time = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Optional. Labels with user-defined metadata.
- map labels = 17 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// A [CaPool][google.cloud.security.privateca.v1.CaPool] represents a group of
-// [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority] that form a trust anchor. A
-// [CaPool][google.cloud.security.privateca.v1.CaPool] can be used to manage issuance policies for one or more
-// [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] resources and to rotate CA certificates in and out
-// of the trust anchor.
-message CaPool {
- option (google.api.resource) = {
- type: "privateca.googleapis.com/CaPool"
- pattern: "projects/{project}/locations/{location}/caPools/{ca_pool}"
- };
-
- // The tier of a [CaPool][google.cloud.security.privateca.v1.CaPool], indicating its supported functionality and/or
- // billing SKU.
- enum Tier {
- // Not specified.
- TIER_UNSPECIFIED = 0;
-
- // Enterprise tier.
- ENTERPRISE = 1;
-
- // DevOps tier.
- DEVOPS = 2;
- }
-
- // Options relating to the publication of each [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA
- // certificate and CRLs and their inclusion as extensions in issued
- // [Certificates][google.cloud.security.privateca.v1.Certificate]. The options set here apply to certificates
- // issued by any [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the [CaPool][google.cloud.security.privateca.v1.CaPool].
- message PublishingOptions {
- // Optional. When true, publishes each [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CA certificate and
- // includes its URL in the "Authority Information Access" X.509 extension
- // in all issued [Certificates][google.cloud.security.privateca.v1.Certificate]. If this is false, the CA
- // certificate will not be published and the corresponding X.509 extension
- // will not be written in issued certificates.
- bool publish_ca_cert = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. When true, publishes each [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]'s CRL and includes its
- // URL in the "CRL Distribution Points" X.509 extension in all issued
- // [Certificates][google.cloud.security.privateca.v1.Certificate]. If this is false, CRLs will not be published
- // and the corresponding X.509 extension will not be written in issued
- // certificates.
- // CRLs will expire 7 days from their creation. However, we will rebuild
- // daily. CRLs are also rebuilt shortly after a certificate is revoked.
- bool publish_crl = 2 [(google.api.field_behavior) = OPTIONAL];
- }
-
- // Defines controls over all certificate issuance within a [CaPool][google.cloud.security.privateca.v1.CaPool].
- message IssuancePolicy {
- // Describes a "type" of key that may be used in a [Certificate][google.cloud.security.privateca.v1.Certificate] issued
- // from a [CaPool][google.cloud.security.privateca.v1.CaPool].
- // Note that a single [AllowedKeyType][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType] may refer to either a
- // fully-qualified key algorithm, such as RSA 4096, or a family of key
- // algorithms, such as any RSA key.
- message AllowedKeyType {
- // Describes an RSA key that may be used in a [Certificate][google.cloud.security.privateca.v1.Certificate] issued from
- // a [CaPool][google.cloud.security.privateca.v1.CaPool].
- message RsaKeyType {
- // Optional. The minimum allowed RSA modulus size (inclusive), in bits. If this is
- // not set, or if set to zero, the service-level min RSA modulus size
- // will continue to apply.
- int64 min_modulus_size = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. The maximum allowed RSA modulus size (inclusive), in bits. If this is
- // not set, or if set to zero, the service will not enforce an explicit
- // upper bound on RSA modulus sizes.
- int64 max_modulus_size = 2 [(google.api.field_behavior) = OPTIONAL];
- }
-
- // Describes an Elliptic Curve key that may be used in a [Certificate][google.cloud.security.privateca.v1.Certificate]
- // issued from a [CaPool][google.cloud.security.privateca.v1.CaPool].
- message EcKeyType {
- // Describes an elliptic curve-based signature algorithm that may be
- // used in a [Certificate][google.cloud.security.privateca.v1.Certificate] issued from a [CaPool][google.cloud.security.privateca.v1.CaPool].
- enum EcSignatureAlgorithm {
- // Not specified. Signifies that any signature algorithm may be used.
- EC_SIGNATURE_ALGORITHM_UNSPECIFIED = 0;
-
- // Refers to the Elliptic Curve Digital Signature Algorithm over the
- // NIST P-256 curve.
- ECDSA_P256 = 1;
-
- // Refers to the Elliptic Curve Digital Signature Algorithm over the
- // NIST P-384 curve.
- ECDSA_P384 = 2;
-
- // Refers to the Edwards-curve Digital Signature Algorithm over curve
- // 25519, as described in RFC 8410.
- EDDSA_25519 = 3;
- }
-
- // Optional. A signature algorithm that must be used. If this is omitted, any
- // EC-based signature algorithm will be allowed.
- EcSignatureAlgorithm signature_algorithm = 1 [(google.api.field_behavior) = OPTIONAL];
- }
-
- oneof key_type {
- // Represents an allowed RSA key type.
- RsaKeyType rsa = 1;
-
- // Represents an allowed Elliptic Curve key type.
- EcKeyType elliptic_curve = 2;
- }
- }
-
- // [IssuanceModes][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.IssuanceModes] specifies the allowed ways in which
- // [Certificates][google.cloud.security.privateca.v1.Certificate] may be requested from this
- // [CaPool][google.cloud.security.privateca.v1.CaPool].
- message IssuanceModes {
- // Optional. When true, allows callers to create [Certificates][google.cloud.security.privateca.v1.Certificate] by
- // specifying a CSR.
- bool allow_csr_based_issuance = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. When true, allows callers to create [Certificates][google.cloud.security.privateca.v1.Certificate] by
- // specifying a [CertificateConfig][google.cloud.security.privateca.v1.CertificateConfig].
- bool allow_config_based_issuance = 2 [(google.api.field_behavior) = OPTIONAL];
- }
-
- // Optional. If any [AllowedKeyType][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.AllowedKeyType] is specified, then the certificate request's
- // public key must match one of the key types listed here. Otherwise,
- // any key may be used.
- repeated AllowedKeyType allowed_key_types = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. The maximum lifetime allowed for issued [Certificates][google.cloud.security.privateca.v1.Certificate]. Note
- // that if the issuing [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] expires before a
- // [Certificate][google.cloud.security.privateca.v1.Certificate]'s requested maximum_lifetime, the effective lifetime will
- // be explicitly truncated to match it.
- google.protobuf.Duration maximum_lifetime = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. If specified, then only methods allowed in the [IssuanceModes][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.IssuanceModes] may be
- // used to issue [Certificates][google.cloud.security.privateca.v1.Certificate].
- IssuanceModes allowed_issuance_modes = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. A set of X.509 values that will be applied to all certificates issued
- // through this [CaPool][google.cloud.security.privateca.v1.CaPool]. If a certificate request includes conflicting
- // values for the same properties, they will be overwritten by the values
- // defined here. If a certificate request uses a [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate]
- // that defines conflicting
- // [predefined_values][google.cloud.security.privateca.v1.CertificateTemplate.predefined_values] for the same
- // properties, the certificate issuance request will fail.
- X509Parameters baseline_values = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes constraints on identities that may appear in
- // [Certificates][google.cloud.security.privateca.v1.Certificate] issued through this [CaPool][google.cloud.security.privateca.v1.CaPool].
- // If this is omitted, then this [CaPool][google.cloud.security.privateca.v1.CaPool] will not add restrictions on a
- // certificate's identity.
- CertificateIdentityConstraints identity_constraints = 5 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes the set of X.509 extensions that may appear in a
- // [Certificate][google.cloud.security.privateca.v1.Certificate] issued through this [CaPool][google.cloud.security.privateca.v1.CaPool]. If a certificate request
- // sets extensions that don't appear in the [passthrough_extensions][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.passthrough_extensions],
- // those extensions will be dropped. If a certificate request uses a
- // [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] with
- // [predefined_values][google.cloud.security.privateca.v1.CertificateTemplate.predefined_values] that don't
- // appear here, the certificate issuance request will fail. If this is
- // omitted, then this [CaPool][google.cloud.security.privateca.v1.CaPool] will not add restrictions on a
- // certificate's X.509 extensions. These constraints do not apply to X.509
- // extensions set in this [CaPool][google.cloud.security.privateca.v1.CaPool]'s [baseline_values][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.baseline_values].
- CertificateExtensionConstraints passthrough_extensions = 6 [(google.api.field_behavior) = OPTIONAL];
- }
-
- // Output only. The resource name for this [CaPool][google.cloud.security.privateca.v1.CaPool] in the
- // format `projects/*/locations/*/caPools/*`.
- string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Required. Immutable. The [Tier][google.cloud.security.privateca.v1.CaPool.Tier] of this [CaPool][google.cloud.security.privateca.v1.CaPool].
- Tier tier = 2 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.field_behavior) = IMMUTABLE
- ];
-
- // Optional. The [IssuancePolicy][google.cloud.security.privateca.v1.CaPool.IssuancePolicy] to control how [Certificates][google.cloud.security.privateca.v1.Certificate]
- // will be issued from this [CaPool][google.cloud.security.privateca.v1.CaPool].
- IssuancePolicy issuance_policy = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. The [PublishingOptions][google.cloud.security.privateca.v1.CaPool.PublishingOptions] to follow when issuing
- // [Certificates][google.cloud.security.privateca.v1.Certificate] from any [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in this
- // [CaPool][google.cloud.security.privateca.v1.CaPool].
- PublishingOptions publishing_options = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Labels with user-defined metadata.
- map labels = 5 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// A [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] corresponds to a signed X.509 certificate
-// Revocation List (CRL). A CRL contains the serial numbers of certificates that
-// should no longer be trusted.
-message CertificateRevocationList {
- option (google.api.resource) = {
- type: "privateca.googleapis.com/CertificateRevocationList"
- pattern: "projects/{project}/locations/{location}/caPools/{ca_pool}/certificateAuthorities/{certificate_authority}/certificateRevocationLists/{certificate_revocation_list}"
- };
-
- // Describes a revoked [Certificate][google.cloud.security.privateca.v1.Certificate].
- message RevokedCertificate {
- // The resource name for the [Certificate][google.cloud.security.privateca.v1.Certificate] in the format
- // `projects/*/locations/*/caPools/*/certificates/*`.
- string certificate = 1 [(google.api.resource_reference) = {
- type: "privateca.googleapis.com/Certificate"
- }];
-
- // The serial number of the [Certificate][google.cloud.security.privateca.v1.Certificate].
- string hex_serial_number = 2;
-
- // The reason the [Certificate][google.cloud.security.privateca.v1.Certificate] was revoked.
- RevocationReason revocation_reason = 3;
- }
-
- // The state of a [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList], indicating if it is current.
- enum State {
- // Not specified.
- STATE_UNSPECIFIED = 0;
-
- // The [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] is up to date.
- ACTIVE = 1;
-
- // The [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] is no longer current.
- SUPERSEDED = 2;
- }
-
- // Output only. The resource name for this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] in
- // the format
- // `projects/*/locations/*/caPools/*certificateAuthorities/*/
- // certificateRevocationLists/*`.
- string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The CRL sequence number that appears in pem_crl.
- int64 sequence_number = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The revoked serial numbers that appear in pem_crl.
- repeated RevokedCertificate revoked_certificates = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The PEM-encoded X.509 CRL.
- string pem_crl = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The location where 'pem_crl' can be accessed.
- string access_url = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The [State][google.cloud.security.privateca.v1.CertificateRevocationList.State] for this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList].
- State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] was created.
- google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] was updated.
- google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The revision ID of this [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList]. A new revision is
- // committed whenever a new CRL is published. The format is an 8-character
- // hexadecimal string.
- string revision_id = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Optional. Labels with user-defined metadata.
- map labels = 10 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// A [Certificate][google.cloud.security.privateca.v1.Certificate] corresponds to a signed X.509 certificate issued by a
-// [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
-message Certificate {
- option (google.api.resource) = {
- type: "privateca.googleapis.com/Certificate"
- pattern: "projects/{project}/locations/{location}/caPools/{ca_pool}/certificates/{certificate}"
- };
-
- // Describes fields that are relavent to the revocation of a [Certificate][google.cloud.security.privateca.v1.Certificate].
- message RevocationDetails {
- // Indicates why a [Certificate][google.cloud.security.privateca.v1.Certificate] was revoked.
- RevocationReason revocation_state = 1;
-
- // The time at which this [Certificate][google.cloud.security.privateca.v1.Certificate] was revoked.
- google.protobuf.Timestamp revocation_time = 2;
- }
-
- // Output only. The resource name for this [Certificate][google.cloud.security.privateca.v1.Certificate] in the format
- // `projects/*/locations/*/caPools/*/certificates/*`.
- string name = 1 [
- (google.api.field_behavior) = OUTPUT_ONLY,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/Certificate"
- }
- ];
-
- // The config used to create a signed X.509 certificate.
- oneof certificate_config {
- // Immutable. A pem-encoded X.509 certificate signing request (CSR).
- string pem_csr = 2 [(google.api.field_behavior) = IMMUTABLE];
-
- // Immutable. A description of the certificate and key that does not require X.509 or
- // ASN.1.
- CertificateConfig config = 3 [(google.api.field_behavior) = IMMUTABLE];
- }
-
- // Output only. The resource name of the issuing [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the format
- // `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string issuer_certificate_authority = 4 [
- (google.api.field_behavior) = OUTPUT_ONLY,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Required. Immutable. The desired lifetime of a certificate. Used to create the
- // "not_before_time" and "not_after_time" fields inside an X.509
- // certificate. Note that the lifetime may be truncated if it would extend
- // past the life of any certificate authority in the issuing chain.
- google.protobuf.Duration lifetime = 5 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.field_behavior) = IMMUTABLE
- ];
-
- // Immutable. The resource name for a [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] used to issue this
- // certificate, in the format
- // `projects/*/locations/*/certificateTemplates/*`.
- // If this is specified, the caller must have the necessary permission to
- // use this template. If this is omitted, no template will be used.
- // This template must be in the same location as the [Certificate][google.cloud.security.privateca.v1.Certificate].
- string certificate_template = 6 [
- (google.api.field_behavior) = IMMUTABLE,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateTemplate"
- }
- ];
-
- // Immutable. Specifies how the [Certificate][google.cloud.security.privateca.v1.Certificate]'s identity fields are to be decided.
- // If this is omitted, the `DEFAULT` subject mode will be used.
- SubjectRequestMode subject_mode = 7 [(google.api.field_behavior) = IMMUTABLE];
-
- // Output only. Details regarding the revocation of this [Certificate][google.cloud.security.privateca.v1.Certificate]. This
- // [Certificate][google.cloud.security.privateca.v1.Certificate] is considered revoked if and only if this field is present.
- RevocationDetails revocation_details = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The pem-encoded, signed X.509 certificate.
- string pem_certificate = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. A structured description of the issued X.509 certificate.
- CertificateDescription certificate_description = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The chain that may be used to verify the X.509 certificate. Expected to be
- // in issuer-to-root order according to RFC 5246.
- repeated string pem_certificate_chain = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [Certificate][google.cloud.security.privateca.v1.Certificate] was created.
- google.protobuf.Timestamp create_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [Certificate][google.cloud.security.privateca.v1.Certificate] was updated.
- google.protobuf.Timestamp update_time = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Optional. Labels with user-defined metadata.
- map labels = 14 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// A [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] refers to a managed template for certificate
-// issuance.
-message CertificateTemplate {
- option (google.api.resource) = {
- type: "privateca.googleapis.com/CertificateTemplate"
- pattern: "projects/{project}/locations/{location}/certificateTemplates/{certificate_template}"
- };
-
- // Output only. The resource name for this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] in the format
- // `projects/*/locations/*/certificateTemplates/*`.
- string name = 1 [
- (google.api.field_behavior) = OUTPUT_ONLY,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateTemplate"
- }
- ];
-
- // Optional. A set of X.509 values that will be applied to all issued certificates that
- // use this template. If the certificate request includes conflicting values
- // for the same properties, they will be overwritten by the values defined
- // here. If the issuing [CaPool][google.cloud.security.privateca.v1.CaPool]'s [IssuancePolicy][google.cloud.security.privateca.v1.CaPool.IssuancePolicy]
- // defines conflicting
- // [baseline_values][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.baseline_values] for the same
- // properties, the certificate issuance request will fail.
- X509Parameters predefined_values = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes constraints on identities that may be appear in
- // [Certificates][google.cloud.security.privateca.v1.Certificate] issued using this template. If this is omitted,
- // then this template will not add restrictions on a certificate's identity.
- CertificateIdentityConstraints identity_constraints = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes the set of X.509 extensions that may appear in a
- // [Certificate][google.cloud.security.privateca.v1.Certificate] issued using this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate]. If a certificate
- // request sets extensions that don't appear in the
- // [passthrough_extensions][google.cloud.security.privateca.v1.CertificateTemplate.passthrough_extensions], those extensions will be dropped. If the
- // issuing [CaPool][google.cloud.security.privateca.v1.CaPool]'s [IssuancePolicy][google.cloud.security.privateca.v1.CaPool.IssuancePolicy] defines
- // [baseline_values][google.cloud.security.privateca.v1.CaPool.IssuancePolicy.baseline_values] that don't appear
- // here, the certificate issuance request will fail. If this is omitted, then
- // this template will not add restrictions on a certificate's X.509
- // extensions. These constraints do not apply to X.509 extensions set in this
- // [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate]'s [predefined_values][google.cloud.security.privateca.v1.CertificateTemplate.predefined_values].
- CertificateExtensionConstraints passthrough_extensions = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. A human-readable description of scenarios this template is intended for.
- string description = 5 [(google.api.field_behavior) = OPTIONAL];
-
- // Output only. The time at which this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] was created.
- google.protobuf.Timestamp create_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time at which this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] was updated.
- google.protobuf.Timestamp update_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Optional. Labels with user-defined metadata.
- map labels = 8 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// An [X509Parameters][google.cloud.security.privateca.v1.X509Parameters] is used to describe certain fields of an
-// X.509 certificate, such as the key usage fields, fields specific to CA
-// certificates, certificate policy extensions and custom extensions.
-message X509Parameters {
- // Describes values that are relevant in a CA certificate.
- message CaOptions {
- // Optional. Refers to the "CA" X.509 extension, which is a boolean value. When this
- // value is missing, the extension will be omitted from the CA certificate.
- optional bool is_ca = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Refers to the path length restriction X.509 extension. For a CA
- // certificate, this value describes the depth of subordinate CA
- // certificates that are allowed.
- // If this value is less than 0, the request will fail.
- // If this value is missing, the max path length will be omitted from the
- // CA certificate.
- optional int32 max_issuer_path_length = 2 [(google.api.field_behavior) = OPTIONAL];
- }
-
- // Optional. Indicates the intended use for keys that correspond to a certificate.
- KeyUsage key_usage = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes options in this [X509Parameters][google.cloud.security.privateca.v1.X509Parameters] that are relevant in a CA
- // certificate.
- CaOptions ca_options = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes the X.509 certificate policy object identifiers, per
- // https://tools.ietf.org/html/rfc5280#section-4.2.1.4.
- repeated ObjectId policy_ids = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses
- // that appear in the "Authority Information Access" extension in the
- // certificate.
- repeated string aia_ocsp_servers = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Describes custom X.509 extensions.
- repeated X509Extension additional_extensions = 5 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Describes a subordinate CA's issuers. This is either a resource name to a
-// known issuing [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], or a PEM issuer certificate chain.
-message SubordinateConfig {
- // This message describes a subordinate CA's issuer certificate chain. This
- // wrapper exists for compatibility reasons.
- message SubordinateConfigChain {
- // Required. Expected to be in leaf-to-root order according to RFC 5246.
- repeated string pem_certificates = 1 [(google.api.field_behavior) = REQUIRED];
- }
-
- oneof subordinate_config {
- // Required. This can refer to a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] that was used to create a
- // subordinate [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]. This field is used for information
- // and usability purposes only. The resource name is in the format
- // `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string certificate_authority = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Required. Contains the PEM certificate chain for the issuers of this
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority], but not pem certificate for this CA itself.
- SubordinateConfigChain pem_issuer_chain = 2 [(google.api.field_behavior) = REQUIRED];
- }
-}
-
-// A [PublicKey][google.cloud.security.privateca.v1.PublicKey] describes a public key.
-message PublicKey {
- // Types of public keys formats that are supported. Currently, only `PEM`
- // format is supported.
- enum KeyFormat {
- // Default unspecified value.
- KEY_FORMAT_UNSPECIFIED = 0;
-
- // The key is PEM-encoded as defined in [RFC
- // 7468](https://tools.ietf.org/html/rfc7468). It can be any of the
- // following: a PEM-encoded PKCS#1/RFC 3447 RSAPublicKey
- // structure, an RFC 5280
- // [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1)
- // or a PEM-encoded X.509 certificate signing request (CSR). If a
- // [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1)
- // is specified, it can contain a A PEM-encoded PKCS#1/RFC 3447 RSAPublicKey
- // or a NIST P-256/secp256r1/prime256v1 or P-384 key. If a CSR is specified,
- // it will used solely for the purpose of extracting the public key. When
- // generated by the service, it will always be an RFC 5280
- // [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1)
- // structure containing an algorithm identifier and a key.
- PEM = 1;
- }
-
- // Required. A public key. The padding and encoding
- // must match with the `KeyFormat` value specified for the `format` field.
- bytes key = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Required. The format of the public key.
- KeyFormat format = 2 [(google.api.field_behavior) = REQUIRED];
-}
-
-// A [CertificateConfig][google.cloud.security.privateca.v1.CertificateConfig] describes an X.509 certificate or CSR that is to be
-// created, as an alternative to using ASN.1.
-message CertificateConfig {
- // These values are used to create the distinguished name and subject
- // alternative name fields in an X.509 certificate.
- message SubjectConfig {
- // Required. Contains distinguished name fields such as the common name, location and
- // organization.
- Subject subject = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. The subject alternative name fields.
- SubjectAltNames subject_alt_name = 2 [(google.api.field_behavior) = OPTIONAL];
- }
-
- // Required. Specifies some of the values in a certificate that are related to the
- // subject.
- SubjectConfig subject_config = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Required. Describes how some of the technical X.509 fields in a certificate should be
- // populated.
- X509Parameters x509_config = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. The public key that corresponds to this config. This is, for example, used
- // when issuing [Certificates][google.cloud.security.privateca.v1.Certificate], but not when creating a
- // self-signed [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] or [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] CSR.
- PublicKey public_key = 3 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// A [CertificateDescription][google.cloud.security.privateca.v1.CertificateDescription] describes an X.509 certificate or CSR that has
-// been issued, as an alternative to using ASN.1 / X.509.
-message CertificateDescription {
- // These values describe fields in an issued X.509 certificate such as the
- // distinguished name, subject alternative names, serial number, and lifetime.
- message SubjectDescription {
- // Contains distinguished name fields such as the common name, location and
- // / organization.
- Subject subject = 1;
-
- // The subject alternative name fields.
- SubjectAltNames subject_alt_name = 2;
-
- // The serial number encoded in lowercase hexadecimal.
- string hex_serial_number = 3;
-
- // For convenience, the actual lifetime of an issued certificate.
- google.protobuf.Duration lifetime = 4;
-
- // The time at which the certificate becomes valid.
- google.protobuf.Timestamp not_before_time = 5;
-
- // The time after which the certificate is expired.
- // Per RFC 5280, the validity period for a certificate is the period of time
- // from not_before_time through not_after_time, inclusive.
- // Corresponds to 'not_before_time' + 'lifetime' - 1 second.
- google.protobuf.Timestamp not_after_time = 6;
- }
-
- // A KeyId identifies a specific public key, usually by hashing the public
- // key.
- message KeyId {
- // Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most
- // likely the 160 bit SHA-1 hash of the public key.
- string key_id = 1 [(google.api.field_behavior) = OPTIONAL];
- }
-
- // A group of fingerprints for the x509 certificate.
- message CertificateFingerprint {
- // The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.
- string sha256_hash = 1;
- }
-
- // Describes some of the values in a certificate that are related to the
- // subject and lifetime.
- SubjectDescription subject_description = 1;
-
- // Describes some of the technical X.509 fields in a certificate.
- X509Parameters x509_description = 2;
-
- // The public key that corresponds to an issued certificate.
- PublicKey public_key = 3;
-
- // Provides a means of identifiying certificates that contain a particular
- // public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.
- KeyId subject_key_id = 4;
-
- // Identifies the subject_key_id of the parent certificate, per
- // https://tools.ietf.org/html/rfc5280#section-4.2.1.1
- KeyId authority_key_id = 5;
-
- // Describes a list of locations to obtain CRL information, i.e.
- // the DistributionPoint.fullName described by
- // https://tools.ietf.org/html/rfc5280#section-4.2.1.13
- repeated string crl_distribution_points = 6;
-
- // Describes lists of issuer CA certificate URLs that appear in the
- // "Authority Information Access" extension in the certificate.
- repeated string aia_issuing_certificate_urls = 7;
-
- // The hash of the x.509 certificate.
- CertificateFingerprint cert_fingerprint = 8;
-}
-
-// An [ObjectId][google.cloud.security.privateca.v1.ObjectId] specifies an object identifier (OID). These provide context
-// and describe types in ASN.1 messages.
-message ObjectId {
- // Required. The parts of an OID path. The most significant parts of the path come
- // first.
- repeated int32 object_id_path = 1 [(google.api.field_behavior) = REQUIRED];
-}
-
-// An [X509Extension][google.cloud.security.privateca.v1.X509Extension] specifies an X.509 extension, which may be used in
-// different parts of X.509 objects like certificates, CSRs, and CRLs.
-message X509Extension {
- // Required. The OID for this X.509 extension.
- ObjectId object_id = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. Indicates whether or not this extension is critical (i.e., if the client
- // does not know how to handle this extension, the client should consider this
- // to be an error).
- bool critical = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Required. The value of this X.509 extension.
- bytes value = 3 [(google.api.field_behavior) = REQUIRED];
-}
-
-// A [KeyUsage][google.cloud.security.privateca.v1.KeyUsage] describes key usage values that may appear in an X.509
-// certificate.
-message KeyUsage {
- // [KeyUsage.KeyUsageOptions][google.cloud.security.privateca.v1.KeyUsage.KeyUsageOptions] corresponds to the key usage values
- // described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3.
- message KeyUsageOptions {
- // The key may be used for digital signatures.
- bool digital_signature = 1;
-
- // The key may be used for cryptographic commitments. Note that this may
- // also be referred to as "non-repudiation".
- bool content_commitment = 2;
-
- // The key may be used to encipher other keys.
- bool key_encipherment = 3;
-
- // The key may be used to encipher data.
- bool data_encipherment = 4;
-
- // The key may be used in a key agreement protocol.
- bool key_agreement = 5;
-
- // The key may be used to sign certificates.
- bool cert_sign = 6;
-
- // The key may be used sign certificate revocation lists.
- bool crl_sign = 7;
-
- // The key may be used to encipher only.
- bool encipher_only = 8;
-
- // The key may be used to decipher only.
- bool decipher_only = 9;
- }
-
- // [KeyUsage.ExtendedKeyUsageOptions][google.cloud.security.privateca.v1.KeyUsage.ExtendedKeyUsageOptions] has fields that correspond to
- // certain common OIDs that could be specified as an extended key usage value.
- message ExtendedKeyUsageOptions {
- // Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as "TLS WWW
- // server authentication", though regularly used for non-WWW TLS.
- bool server_auth = 1;
-
- // Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as "TLS WWW
- // client authentication", though regularly used for non-WWW TLS.
- bool client_auth = 2;
-
- // Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as "Signing of
- // downloadable executable code client authentication".
- bool code_signing = 3;
-
- // Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as "Email
- // protection".
- bool email_protection = 4;
-
- // Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as "Binding
- // the hash of an object to a time".
- bool time_stamping = 5;
-
- // Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as "Signing
- // OCSP responses".
- bool ocsp_signing = 6;
- }
-
- // Describes high-level ways in which a key may be used.
- KeyUsageOptions base_key_usage = 1;
-
- // Detailed scenarios in which a key may be used.
- ExtendedKeyUsageOptions extended_key_usage = 2;
-
- // Used to describe extended key usages that are not listed in the
- // [KeyUsage.ExtendedKeyUsageOptions][google.cloud.security.privateca.v1.KeyUsage.ExtendedKeyUsageOptions] message.
- repeated ObjectId unknown_extended_key_usages = 3;
-}
-
-// [Subject][google.cloud.security.privateca.v1.Subject] describes parts of a distinguished name that, in turn,
-// describes the subject of the certificate.
-message Subject {
- // The "common name" of the subject.
- string common_name = 1;
-
- // The country code of the subject.
- string country_code = 2;
-
- // The organization of the subject.
- string organization = 3;
-
- // The organizational_unit of the subject.
- string organizational_unit = 4;
-
- // The locality or city of the subject.
- string locality = 5;
-
- // The province, territory, or regional state of the subject.
- string province = 6;
-
- // The street address of the subject.
- string street_address = 7;
-
- // The postal code of the subject.
- string postal_code = 8;
-}
-
-// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] corresponds to a more modern way of listing what
-// the asserted identity is in a certificate (i.e., compared to the "common
-// name" in the distinguished name).
-message SubjectAltNames {
- // Contains only valid, fully-qualified host names.
- repeated string dns_names = 1;
-
- // Contains only valid RFC 3986 URIs.
- repeated string uris = 2;
-
- // Contains only valid RFC 2822 E-mail addresses.
- repeated string email_addresses = 3;
-
- // Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
- repeated string ip_addresses = 4;
-
- // Contains additional subject alternative name values.
- // For each custom_san, the `value` field must contain an ASN.1 encoded
- // UTF8String.
- repeated X509Extension custom_sans = 5;
-}
-
-// Describes constraints on a [Certificate][google.cloud.security.privateca.v1.Certificate]'s [Subject][google.cloud.security.privateca.v1.Subject] and
-// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames].
-message CertificateIdentityConstraints {
- // Optional. A CEL expression that may be used to validate the resolved X.509 Subject
- // and/or Subject Alternative Name before a certificate is signed.
- // To see the full allowed syntax and some examples, see
- // https://cloud.google.com/certificate-authority-service/docs/using-cel
- google.type.Expr cel_expression = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Required. If this is true, the [Subject][google.cloud.security.privateca.v1.Subject] field may be copied from a certificate
- // request into the signed certificate. Otherwise, the requested [Subject][google.cloud.security.privateca.v1.Subject]
- // will be discarded.
- optional bool allow_subject_passthrough = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Required. If this is true, the [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] extension may be copied from a
- // certificate request into the signed certificate. Otherwise, the requested
- // [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] will be discarded.
- optional bool allow_subject_alt_names_passthrough = 3 [(google.api.field_behavior) = REQUIRED];
-}
-
-// Describes a set of X.509 extensions that may be part of some certificate
-// issuance controls.
-message CertificateExtensionConstraints {
- // Describes well-known X.509 extensions that can appear in a [Certificate][google.cloud.security.privateca.v1.Certificate],
- // not including the [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] extension.
- enum KnownCertificateExtension {
- // Not specified.
- KNOWN_CERTIFICATE_EXTENSION_UNSPECIFIED = 0;
-
- // Refers to a certificate's Key Usage extension, as described in [RFC 5280
- // section 4.2.1.3](https://tools.ietf.org/html/rfc5280#section-4.2.1.3).
- // This corresponds to the [KeyUsage.base_key_usage][google.cloud.security.privateca.v1.KeyUsage.base_key_usage] field.
- BASE_KEY_USAGE = 1;
-
- // Refers to a certificate's Extended Key Usage extension, as described in
- // [RFC 5280
- // section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12).
- // This corresponds to the [KeyUsage.extended_key_usage][google.cloud.security.privateca.v1.KeyUsage.extended_key_usage] message.
- EXTENDED_KEY_USAGE = 2;
-
- // Refers to a certificate's Basic Constraints extension, as described in
- // [RFC 5280
- // section 4.2.1.9](https://tools.ietf.org/html/rfc5280#section-4.2.1.9).
- // This corresponds to the [X509Parameters.ca_options][google.cloud.security.privateca.v1.X509Parameters.ca_options] field.
- CA_OPTIONS = 3;
-
- // Refers to a certificate's Policy object identifiers, as described in
- // [RFC 5280
- // section 4.2.1.4](https://tools.ietf.org/html/rfc5280#section-4.2.1.4).
- // This corresponds to the [X509Parameters.policy_ids][google.cloud.security.privateca.v1.X509Parameters.policy_ids] field.
- POLICY_IDS = 4;
-
- // Refers to OCSP servers in a certificate's Authority Information Access
- // extension, as described in
- // [RFC 5280
- // section 4.2.2.1](https://tools.ietf.org/html/rfc5280#section-4.2.2.1),
- // This corresponds to the [X509Parameters.aia_ocsp_servers][google.cloud.security.privateca.v1.X509Parameters.aia_ocsp_servers] field.
- AIA_OCSP_SERVERS = 5;
- }
-
- // Optional. A set of named X.509 extensions. Will be combined with
- // [additional_extensions][google.cloud.security.privateca.v1.CertificateExtensionConstraints.additional_extensions] to determine the full set of X.509 extensions.
- repeated KnownCertificateExtension known_extensions = 1 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. A set of [ObjectIds][google.cloud.security.privateca.v1.ObjectId] identifying custom X.509 extensions.
- // Will be combined with [known_extensions][google.cloud.security.privateca.v1.CertificateExtensionConstraints.known_extensions] to determine the full set of
- // X.509 extensions.
- repeated ObjectId additional_extensions = 2 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// A [RevocationReason][google.cloud.security.privateca.v1.RevocationReason] indicates whether a [Certificate][google.cloud.security.privateca.v1.Certificate] has been revoked,
-// and the reason for revocation. These correspond to standard revocation
-// reasons from RFC 5280. Note that the enum labels and values in this
-// definition are not the same ASN.1 values defined in RFC 5280. These values
-// will be translated to the correct ASN.1 values when a CRL is created.
-enum RevocationReason {
- // Default unspecified value. This value does indicate that a [Certificate][google.cloud.security.privateca.v1.Certificate]
- // has been revoked, but that a reason has not been recorded.
- REVOCATION_REASON_UNSPECIFIED = 0;
-
- // Key material for this [Certificate][google.cloud.security.privateca.v1.Certificate] may have leaked.
- KEY_COMPROMISE = 1;
-
- // The key material for a certificate authority in the issuing path may have
- // leaked.
- CERTIFICATE_AUTHORITY_COMPROMISE = 2;
-
- // The subject or other attributes in this [Certificate][google.cloud.security.privateca.v1.Certificate] have changed.
- AFFILIATION_CHANGED = 3;
-
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] has been superseded.
- SUPERSEDED = 4;
-
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] or entities in the issuing path have ceased to
- // operate.
- CESSATION_OF_OPERATION = 5;
-
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] should not be considered valid, it is expected that it
- // may become valid in the future.
- CERTIFICATE_HOLD = 6;
-
- // This [Certificate][google.cloud.security.privateca.v1.Certificate] no longer has permission to assert the listed
- // attributes.
- PRIVILEGE_WITHDRAWN = 7;
-
- // The authority which determines appropriate attributes for a [Certificate][google.cloud.security.privateca.v1.Certificate]
- // may have been compromised.
- ATTRIBUTE_AUTHORITY_COMPROMISE = 8;
-}
-
-// Describes the way in which a [Certificate][google.cloud.security.privateca.v1.Certificate]'s [Subject][google.cloud.security.privateca.v1.Subject] and/or
-// [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] will be resolved.
-enum SubjectRequestMode {
- // Not specified.
- SUBJECT_REQUEST_MODE_UNSPECIFIED = 0;
-
- // The default mode used in most cases. Indicates that the certificate's
- // [Subject][google.cloud.security.privateca.v1.Subject] and/or [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] are specified in the certificate
- // request. This mode requires the caller to have the
- // `privateca.certificates.create` permission.
- DEFAULT = 1;
-
- // A mode reserved for special cases. Indicates that the certificate should
- // have one or more SPIFFE [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] set by the service based
- // on the caller's identity. This mode will ignore any explicitly specified
- // [Subject][google.cloud.security.privateca.v1.Subject] and/or [SubjectAltNames][google.cloud.security.privateca.v1.SubjectAltNames] in the certificate request.
- // This mode requires the caller to have the
- // `privateca.certificates.createForSelf` permission.
- REFLECTED_SPIFFE = 2;
-}
diff --git a/proto/google/cloud/security/privateca/v1/service.proto b/proto/google/cloud/security/privateca/v1/service.proto
deleted file mode 100644
index 4dcfc4f..0000000
--- a/proto/google/cloud/security/privateca/v1/service.proto
+++ /dev/null
@@ -1,1273 +0,0 @@
-// Copyright 2022 Google LLC
-//
-// 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";
-
-package google.cloud.security.privateca.v1;
-
-import "google/api/annotations.proto";
-import "google/api/client.proto";
-import "google/api/field_behavior.proto";
-import "google/api/resource.proto";
-import "google/cloud/security/privateca/v1/resources.proto";
-import "google/longrunning/operations.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/field_mask.proto";
-import "google/protobuf/timestamp.proto";
-
-option cc_enable_arenas = true;
-option csharp_namespace = "Google.Cloud.Security.PrivateCA.V1";
-option go_package = "google.golang.org/genproto/googleapis/cloud/security/privateca/v1;privateca";
-option java_multiple_files = true;
-option java_outer_classname = "PrivateCaProto";
-option java_package = "com.google.cloud.security.privateca.v1";
-option php_namespace = "Google\\Cloud\\Security\\PrivateCA\\V1";
-option ruby_package = "Google::Cloud::Security::PrivateCA::V1";
-
-// [Certificate Authority Service][google.cloud.security.privateca.v1.CertificateAuthorityService] manages private
-// certificate authorities and issued certificates.
-service CertificateAuthorityService {
- option (google.api.default_host) = "privateca.googleapis.com";
- option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
-
- // Create a new [Certificate][google.cloud.security.privateca.v1.Certificate] in a given Project, Location from a particular
- // [CaPool][google.cloud.security.privateca.v1.CaPool].
- rpc CreateCertificate(CreateCertificateRequest) returns (Certificate) {
- option (google.api.http) = {
- post: "/v1/{parent=projects/*/locations/*/caPools/*}/certificates"
- body: "certificate"
- };
- option (google.api.method_signature) = "parent,certificate,certificate_id";
- }
-
- // Returns a [Certificate][google.cloud.security.privateca.v1.Certificate].
- rpc GetCertificate(GetCertificateRequest) returns (Certificate) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/caPools/*/certificates/*}"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Lists [Certificates][google.cloud.security.privateca.v1.Certificate].
- rpc ListCertificates(ListCertificatesRequest) returns (ListCertificatesResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=projects/*/locations/*/caPools/*}/certificates"
- };
- option (google.api.method_signature) = "parent";
- }
-
- // Revoke a [Certificate][google.cloud.security.privateca.v1.Certificate].
- rpc RevokeCertificate(RevokeCertificateRequest) returns (Certificate) {
- option (google.api.http) = {
- post: "/v1/{name=projects/*/locations/*/caPools/*/certificates/*}:revoke"
- body: "*"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Update a [Certificate][google.cloud.security.privateca.v1.Certificate]. Currently, the only field you can update is the
- // [labels][google.cloud.security.privateca.v1.Certificate.labels] field.
- rpc UpdateCertificate(UpdateCertificateRequest) returns (Certificate) {
- option (google.api.http) = {
- patch: "/v1/{certificate.name=projects/*/locations/*/caPools/*/certificates/*}"
- body: "certificate"
- };
- option (google.api.method_signature) = "certificate,update_mask";
- }
-
- // Activate a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] that is in state
- // [AWAITING_USER_ACTIVATION][google.cloud.security.privateca.v1.CertificateAuthority.State.AWAITING_USER_ACTIVATION]
- // and is of type [SUBORDINATE][google.cloud.security.privateca.v1.CertificateAuthority.Type.SUBORDINATE]. After
- // the parent Certificate Authority signs a certificate signing request from
- // [FetchCertificateAuthorityCsr][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCertificateAuthorityCsr], this method can complete the activation
- // process.
- rpc ActivateCertificateAuthority(ActivateCertificateAuthorityRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*}:activate"
- body: "*"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateAuthority"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Create a new [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in a given Project and Location.
- rpc CreateCertificateAuthority(CreateCertificateAuthorityRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{parent=projects/*/locations/*/caPools/*}/certificateAuthorities"
- body: "certificate_authority"
- };
- option (google.api.method_signature) = "parent,certificate_authority,certificate_authority_id";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateAuthority"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Disable a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- rpc DisableCertificateAuthority(DisableCertificateAuthorityRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*}:disable"
- body: "*"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateAuthority"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Enable a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- rpc EnableCertificateAuthority(EnableCertificateAuthorityRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*}:enable"
- body: "*"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateAuthority"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Fetch a certificate signing request (CSR) from a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]
- // that is in state
- // [AWAITING_USER_ACTIVATION][google.cloud.security.privateca.v1.CertificateAuthority.State.AWAITING_USER_ACTIVATION]
- // and is of type [SUBORDINATE][google.cloud.security.privateca.v1.CertificateAuthority.Type.SUBORDINATE]. The
- // CSR must then be signed by the desired parent Certificate Authority, which
- // could be another [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] resource, or could be an on-prem
- // certificate authority. See also [ActivateCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.ActivateCertificateAuthority].
- rpc FetchCertificateAuthorityCsr(FetchCertificateAuthorityCsrRequest) returns (FetchCertificateAuthorityCsrResponse) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*}:fetch"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Returns a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- rpc GetCertificateAuthority(GetCertificateAuthorityRequest) returns (CertificateAuthority) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*}"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Lists [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority].
- rpc ListCertificateAuthorities(ListCertificateAuthoritiesRequest) returns (ListCertificateAuthoritiesResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=projects/*/locations/*/caPools/*}/certificateAuthorities"
- };
- option (google.api.method_signature) = "parent";
- }
-
- // Undelete a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] that has been deleted.
- rpc UndeleteCertificateAuthority(UndeleteCertificateAuthorityRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*}:undelete"
- body: "*"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateAuthority"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Delete a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- rpc DeleteCertificateAuthority(DeleteCertificateAuthorityRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- delete: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*}"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateAuthority"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Update a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority].
- rpc UpdateCertificateAuthority(UpdateCertificateAuthorityRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- patch: "/v1/{certificate_authority.name=projects/*/locations/*/caPools/*/certificateAuthorities/*}"
- body: "certificate_authority"
- };
- option (google.api.method_signature) = "certificate_authority,update_mask";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateAuthority"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Create a [CaPool][google.cloud.security.privateca.v1.CaPool].
- rpc CreateCaPool(CreateCaPoolRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{parent=projects/*/locations/*}/caPools"
- body: "ca_pool"
- };
- option (google.api.method_signature) = "parent,ca_pool,ca_pool_id";
- option (google.longrunning.operation_info) = {
- response_type: "CaPool"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Update a [CaPool][google.cloud.security.privateca.v1.CaPool].
- rpc UpdateCaPool(UpdateCaPoolRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- patch: "/v1/{ca_pool.name=projects/*/locations/*/caPools/*}"
- body: "ca_pool"
- };
- option (google.api.method_signature) = "ca_pool,update_mask";
- option (google.longrunning.operation_info) = {
- response_type: "CaPool"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Returns a [CaPool][google.cloud.security.privateca.v1.CaPool].
- rpc GetCaPool(GetCaPoolRequest) returns (CaPool) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/caPools/*}"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Lists [CaPools][google.cloud.security.privateca.v1.CaPool].
- rpc ListCaPools(ListCaPoolsRequest) returns (ListCaPoolsResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=projects/*/locations/*}/caPools"
- };
- option (google.api.method_signature) = "parent";
- }
-
- // Delete a [CaPool][google.cloud.security.privateca.v1.CaPool].
- rpc DeleteCaPool(DeleteCaPoolRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- delete: "/v1/{name=projects/*/locations/*/caPools/*}"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "google.protobuf.Empty"
- metadata_type: "OperationMetadata"
- };
- }
-
- // FetchCaCerts returns the current trust anchor for the [CaPool][google.cloud.security.privateca.v1.CaPool]. This will
- // include CA certificate chains for all ACTIVE [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]
- // resources in the [CaPool][google.cloud.security.privateca.v1.CaPool].
- rpc FetchCaCerts(FetchCaCertsRequest) returns (FetchCaCertsResponse) {
- option (google.api.http) = {
- post: "/v1/{ca_pool=projects/*/locations/*/caPools/*}:fetchCaCerts"
- body: "*"
- };
- option (google.api.method_signature) = "ca_pool";
- }
-
- // Returns a [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList].
- rpc GetCertificateRevocationList(GetCertificateRevocationListRequest) returns (CertificateRevocationList) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/caPools/*/certificateAuthorities/*/certificateRevocationLists/*}"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Lists [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList].
- rpc ListCertificateRevocationLists(ListCertificateRevocationListsRequest) returns (ListCertificateRevocationListsResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=projects/*/locations/*/caPools/*/certificateAuthorities/*}/certificateRevocationLists"
- };
- option (google.api.method_signature) = "parent";
- }
-
- // Update a [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList].
- rpc UpdateCertificateRevocationList(UpdateCertificateRevocationListRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- patch: "/v1/{certificate_revocation_list.name=projects/*/locations/*/caPools/*/certificateAuthorities/*/certificateRevocationLists/*}"
- body: "certificate_revocation_list"
- };
- option (google.api.method_signature) = "certificate_revocation_list,update_mask";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateRevocationList"
- metadata_type: "OperationMetadata"
- };
- }
-
- // Create a new [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] in a given Project and Location.
- rpc CreateCertificateTemplate(CreateCertificateTemplateRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{parent=projects/*/locations/*}/certificateTemplates"
- body: "certificate_template"
- };
- option (google.api.method_signature) = "parent,certificate_template,certificate_template_id";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateTemplate"
- metadata_type: "OperationMetadata"
- };
- }
-
- // DeleteCertificateTemplate deletes a [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate].
- rpc DeleteCertificateTemplate(DeleteCertificateTemplateRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- delete: "/v1/{name=projects/*/locations/*/certificateTemplates/*}"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "google.protobuf.Empty"
- metadata_type: "google.cloud.security.privateca.v1.OperationMetadata"
- };
- }
-
- // Returns a [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate].
- rpc GetCertificateTemplate(GetCertificateTemplateRequest) returns (CertificateTemplate) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/certificateTemplates/*}"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Lists [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate].
- rpc ListCertificateTemplates(ListCertificateTemplatesRequest) returns (ListCertificateTemplatesResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=projects/*/locations/*}/certificateTemplates"
- };
- option (google.api.method_signature) = "parent";
- }
-
- // Update a [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate].
- rpc UpdateCertificateTemplate(UpdateCertificateTemplateRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- patch: "/v1/{certificate_template.name=projects/*/locations/*/certificateTemplates/*}"
- body: "certificate_template"
- };
- option (google.api.method_signature) = "certificate_template,update_mask";
- option (google.longrunning.operation_info) = {
- response_type: "CertificateTemplate"
- metadata_type: "OperationMetadata"
- };
- }
-}
-
-// Request message for [CertificateAuthorityService.CreateCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificate].
-message CreateCertificateRequest {
- // Required. The resource name of the [CaPool][google.cloud.security.privateca.v1.CaPool] associated with the [Certificate][google.cloud.security.privateca.v1.Certificate],
- // in the format `projects/*/locations/*/caPools/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CaPool"
- }
- ];
-
- // Optional. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`. This field is required when using a
- // [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the Enterprise [CertificateAuthority.Tier][],
- // but is optional and its value is ignored otherwise.
- string certificate_id = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Required. A [Certificate][google.cloud.security.privateca.v1.Certificate] with initial field values.
- Certificate certificate = 3 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and the
- // request times out. If you make the request again with the same request ID,
- // the server can check if original operation with the same request ID was
- // received, and if so, will ignore the second request. This prevents clients
- // from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. If this is true, no [Certificate][google.cloud.security.privateca.v1.Certificate] resource will be persisted regardless
- // of the [CaPool][google.cloud.security.privateca.v1.CaPool]'s [tier][google.cloud.security.privateca.v1.CaPool.tier], and the returned [Certificate][google.cloud.security.privateca.v1.Certificate]
- // will not contain the [pem_certificate][google.cloud.security.privateca.v1.Certificate.pem_certificate] field.
- bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. The resource ID of the [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] that should issue the
- // certificate. This optional field will ignore the load-balancing scheme of
- // the Pool and directly issue the certificate from the CA with the specified
- // ID, contained in the same [CaPool][google.cloud.security.privateca.v1.CaPool] referenced by `parent`. Per-CA quota
- // rules apply. If left empty, a [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] will be chosen from
- // the [CaPool][google.cloud.security.privateca.v1.CaPool] by the service. For example, to issue a [Certificate][google.cloud.security.privateca.v1.Certificate] from
- // a Certificate Authority with resource name
- // "projects/my-project/locations/us-central1/caPools/my-pool/certificateAuthorities/my-ca",
- // you can set the [parent][google.cloud.security.privateca.v1.CreateCertificateRequest.parent] to
- // "projects/my-project/locations/us-central1/caPools/my-pool" and the
- // [issuing_certificate_authority_id][google.cloud.security.privateca.v1.CreateCertificateRequest.issuing_certificate_authority_id] to "my-ca".
- string issuing_certificate_authority_id = 6 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.GetCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificate].
-message GetCertificateRequest {
- // Required. The [name][google.cloud.security.privateca.v1.Certificate.name] of the [Certificate][google.cloud.security.privateca.v1.Certificate] to get.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/Certificate"
- }
- ];
-}
-
-// Request message for [CertificateAuthorityService.ListCertificates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificates].
-message ListCertificatesRequest {
- // Required. The resource name of the location associated with the
- // [Certificates][google.cloud.security.privateca.v1.Certificate], in the format
- // `projects/*/locations/*/caPools/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CaPool"
- }
- ];
-
- // Optional. Limit on the number of
- // [Certificates][google.cloud.security.privateca.v1.Certificate] to include in the
- // response. Further [Certificates][google.cloud.security.privateca.v1.Certificate] can subsequently be obtained
- // by including the
- // [ListCertificatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificatesResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Pagination token, returned earlier via
- // [ListCertificatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificatesResponse.next_page_token].
- string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Only include resources that match the filter in the response. For details
- // on supported filters and syntax, see [Certificates Filtering
- // documentation](https://cloud.google.com/certificate-authority-service/docs/sorting-filtering-certificates#filtering_support).
- string filter = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Specify how the results should be sorted. For details on supported fields
- // and syntax, see [Certificates Sorting
- // documentation](https://cloud.google.com/certificate-authority-service/docs/sorting-filtering-certificates#sorting_support).
- string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Response message for [CertificateAuthorityService.ListCertificates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificates].
-message ListCertificatesResponse {
- // The list of [Certificates][google.cloud.security.privateca.v1.Certificate].
- repeated Certificate certificates = 1;
-
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificatesRequest.next_page_token][] to retrieve the
- // next page of results.
- string next_page_token = 2;
-
- // A list of locations (e.g. "us-west1") that could not be reached.
- repeated string unreachable = 3;
-}
-
-// Request message for
-// [CertificateAuthorityService.RevokeCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.RevokeCertificate].
-message RevokeCertificateRequest {
- // Required. The resource name for this [Certificate][google.cloud.security.privateca.v1.Certificate] in the
- // format
- // `projects/*/locations/*/caPools/*/certificates/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/Certificate"
- }
- ];
-
- // Required. The [RevocationReason][google.cloud.security.privateca.v1.RevocationReason] for revoking this certificate.
- RevocationReason reason = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for [CertificateAuthorityService.UpdateCertificate][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificate].
-message UpdateCertificateRequest {
- // Required. [Certificate][google.cloud.security.privateca.v1.Certificate] with updated values.
- Certificate certificate = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A list of fields to be updated in this request.
- google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.ActivateCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.ActivateCertificateAuthority].
-message ActivateCertificateAuthorityRequest {
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Required. The signed CA certificate issued from
- // [FetchCertificateAuthorityCsrResponse.pem_csr][google.cloud.security.privateca.v1.FetchCertificateAuthorityCsrResponse.pem_csr].
- string pem_ca_certificate = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Required. Must include information about the issuer of 'pem_ca_certificate', and any
- // further issuers until the self-signed CA.
- SubordinateConfig subordinate_config = 3 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.CreateCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateAuthority].
-message CreateCertificateAuthorityRequest {
- // Required. The resource name of the [CaPool][google.cloud.security.privateca.v1.CaPool] associated with the
- // [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority], in the format
- // `projects/*/locations/*/caPools/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CaPool"
- }
- ];
-
- // Required. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`
- string certificate_authority_id = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] with initial field values.
- CertificateAuthority certificate_authority = 3 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.DisableCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.DisableCertificateAuthority].
-message DisableCertificateAuthorityRequest {
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.EnableCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.EnableCertificateAuthority].
-message EnableCertificateAuthorityRequest {
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.FetchCertificateAuthorityCsr][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCertificateAuthorityCsr].
-message FetchCertificateAuthorityCsrRequest {
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-}
-
-// Response message for
-// [CertificateAuthorityService.FetchCertificateAuthorityCsr][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCertificateAuthorityCsr].
-message FetchCertificateAuthorityCsrResponse {
- // Output only. The PEM-encoded signed certificate signing request (CSR).
- string pem_csr = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
-}
-
-// Request message for [CertificateAuthorityService.GetCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateAuthority].
-message GetCertificateAuthorityRequest {
- // Required. The [name][google.cloud.security.privateca.v1.CertificateAuthority.name] of the [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] to
- // get.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateAuthorities].
-message ListCertificateAuthoritiesRequest {
- // Required. The resource name of the [CaPool][google.cloud.security.privateca.v1.CaPool] associated with the
- // [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority], in the format
- // `projects/*/locations/*/caPools/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CaPool"
- }
- ];
-
- // Optional. Limit on the number of [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority] to
- // include in the response.
- // Further [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority] can subsequently be
- // obtained by including the
- // [ListCertificateAuthoritiesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateAuthoritiesResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Pagination token, returned earlier via
- // [ListCertificateAuthoritiesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateAuthoritiesResponse.next_page_token].
- string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Only include resources that match the filter in the response.
- string filter = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Specify how the results should be sorted.
- string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateAuthorities].
-message ListCertificateAuthoritiesResponse {
- // The list of [CertificateAuthorities][google.cloud.security.privateca.v1.CertificateAuthority].
- repeated CertificateAuthority certificate_authorities = 1;
-
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateAuthoritiesRequest.next_page_token][] to retrieve the next
- // page of results.
- string next_page_token = 2;
-
- // A list of locations (e.g. "us-west1") that could not be reached.
- repeated string unreachable = 3;
-}
-
-// Request message for
-// [CertificateAuthorityService.UndeleteCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.UndeleteCertificateAuthority].
-message UndeleteCertificateAuthorityRequest {
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.DeleteCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateAuthority].
-message DeleteCertificateAuthorityRequest {
- // Required. The resource name for this [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] in the
- // format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. This field allows the CA to be deleted even if the CA has
- // active certs. Active certs include both unrevoked and unexpired certs.
- bool ignore_active_certificates = 4 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateAuthority].
-message UpdateCertificateAuthorityRequest {
- // Required. [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority] with updated values.
- CertificateAuthority certificate_authority = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A list of fields to be updated in this request.
- google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.CreateCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCaPool].
-message CreateCaPoolRequest {
- // Required. The resource name of the location associated with the
- // [CaPool][google.cloud.security.privateca.v1.CaPool], in the format `projects/*/locations/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "locations.googleapis.com/Location"
- }
- ];
-
- // Required. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`
- string ca_pool_id = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A [CaPool][google.cloud.security.privateca.v1.CaPool] with initial field values.
- CaPool ca_pool = 3 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCaPool].
-message UpdateCaPoolRequest {
- // Required. [CaPool][google.cloud.security.privateca.v1.CaPool] with updated values.
- CaPool ca_pool = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A list of fields to be updated in this request.
- google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.DeleteCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCaPool].
-message DeleteCaPoolRequest {
- // Required. The resource name for this [CaPool][google.cloud.security.privateca.v1.CaPool] in the
- // format `projects/*/locations/*/caPools/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CaPool"
- }
- ];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.FetchCaCerts][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCaCerts].
-message FetchCaCertsRequest {
- // Required. The resource name for the [CaPool][google.cloud.security.privateca.v1.CaPool] in the
- // format `projects/*/locations/*/caPools/*`.
- string ca_pool = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CaPool"
- }
- ];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Response message for
-// [CertificateAuthorityService.FetchCaCerts][google.cloud.security.privateca.v1.CertificateAuthorityService.FetchCaCerts].
-message FetchCaCertsResponse {
- message CertChain {
- // The certificates that form the CA chain, from leaf to root order.
- repeated string certificates = 1;
- }
-
- // The PEM encoded CA certificate chains of all
- // [ACTIVE][CertificateAuthority.State.ACTIVE] [CertificateAuthority][google.cloud.security.privateca.v1.CertificateAuthority]
- // resources in this [CaPool][google.cloud.security.privateca.v1.CaPool].
- repeated CertChain ca_certs = 1;
-}
-
-// Request message for [CertificateAuthorityService.GetCaPool][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCaPool].
-message GetCaPoolRequest {
- // Required. The [name][google.cloud.security.privateca.v1.CaPool.name] of the [CaPool][google.cloud.security.privateca.v1.CaPool] to get.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CaPool"
- }
- ];
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCaPools][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCaPools].
-message ListCaPoolsRequest {
- // Required. The resource name of the location associated with the
- // [CaPools][google.cloud.security.privateca.v1.CaPool], in the format
- // `projects/*/locations/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "locations.googleapis.com/Location"
- }
- ];
-
- // Optional. Limit on the number of [CaPools][google.cloud.security.privateca.v1.CaPool] to
- // include in the response.
- // Further [CaPools][google.cloud.security.privateca.v1.CaPool] can subsequently be
- // obtained by including the
- // [ListCaPoolsResponse.next_page_token][google.cloud.security.privateca.v1.ListCaPoolsResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Pagination token, returned earlier via
- // [ListCaPoolsResponse.next_page_token][google.cloud.security.privateca.v1.ListCaPoolsResponse.next_page_token].
- string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Only include resources that match the filter in the response.
- string filter = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Specify how the results should be sorted.
- string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCaPools][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCaPools].
-message ListCaPoolsResponse {
- // The list of [CaPools][google.cloud.security.privateca.v1.CaPool].
- repeated CaPool ca_pools = 1;
-
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateAuthoritiesRequest.next_page_token][] to retrieve the next
- // page of results.
- string next_page_token = 2;
-
- // A list of locations (e.g. "us-west1") that could not be reached.
- repeated string unreachable = 3;
-}
-
-// Request message for
-// [CertificateAuthorityService.GetCertificateRevocationList][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateRevocationList].
-message GetCertificateRevocationListRequest {
- // Required. The [name][google.cloud.security.privateca.v1.CertificateRevocationList.name] of the
- // [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] to get.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateRevocationList"
- }
- ];
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCertificateRevocationLists][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateRevocationLists].
-message ListCertificateRevocationListsRequest {
- // Required. The resource name of the location associated with the
- // [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList], in the format
- // `projects/*/locations/*/caPools/*/certificateAuthorities/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateAuthority"
- }
- ];
-
- // Optional. Limit on the number of
- // [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList] to include in the
- // response. Further [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList]
- // can subsequently be obtained by including the
- // [ListCertificateRevocationListsResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateRevocationListsResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Pagination token, returned earlier via
- // [ListCertificateRevocationListsResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateRevocationListsResponse.next_page_token].
- string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Only include resources that match the filter in the response.
- string filter = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Specify how the results should be sorted.
- string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCertificateRevocationLists][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateRevocationLists].
-message ListCertificateRevocationListsResponse {
- // The list of [CertificateRevocationLists][google.cloud.security.privateca.v1.CertificateRevocationList].
- repeated CertificateRevocationList certificate_revocation_lists = 1;
-
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateRevocationListsRequest.next_page_token][] to retrieve the
- // next page of results.
- string next_page_token = 2;
-
- // A list of locations (e.g. "us-west1") that could not be reached.
- repeated string unreachable = 3;
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCertificateRevocationList][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateRevocationList].
-message UpdateCertificateRevocationListRequest {
- // Required. [CertificateRevocationList][google.cloud.security.privateca.v1.CertificateRevocationList] with updated values.
- CertificateRevocationList certificate_revocation_list = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A list of fields to be updated in this request.
- google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.CreateCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificateTemplate].
-message CreateCertificateTemplateRequest {
- // Required. The resource name of the location associated with the
- // [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate], in the format
- // `projects/*/locations/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "locations.googleapis.com/Location"
- }
- ];
-
- // Required. It must be unique within a location and match the regular
- // expression `[a-zA-Z0-9_-]{1,63}`
- string certificate_template_id = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] with initial field values.
- CertificateTemplate certificate_template = 3 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.DeleteCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.DeleteCertificateTemplate].
-message DeleteCertificateTemplateRequest {
- // Required. The resource name for this [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] in the format
- // `projects/*/locations/*/certificateTemplates/*`.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateTemplate"
- }
- ];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Request message for
-// [CertificateAuthorityService.GetCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.GetCertificateTemplate].
-message GetCertificateTemplateRequest {
- // Required. The [name][google.cloud.security.privateca.v1.CertificateTemplate.name] of the [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] to
- // get.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "privateca.googleapis.com/CertificateTemplate"
- }
- ];
-}
-
-// Request message for
-// [CertificateAuthorityService.ListCertificateTemplates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateTemplates].
-message ListCertificateTemplatesRequest {
- // Required. The resource name of the location associated with the
- // [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate], in the format
- // `projects/*/locations/*`.
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "locations.googleapis.com/Location"
- }
- ];
-
- // Optional. Limit on the number of
- // [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate] to include in the response.
- // Further [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate] can subsequently be
- // obtained by including the
- // [ListCertificateTemplatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateTemplatesResponse.next_page_token] in a subsequent
- // request. If unspecified, the server will pick an appropriate default.
- int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Pagination token, returned earlier via
- // [ListCertificateTemplatesResponse.next_page_token][google.cloud.security.privateca.v1.ListCertificateTemplatesResponse.next_page_token].
- string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Only include resources that match the filter in the response.
- string filter = 4 [(google.api.field_behavior) = OPTIONAL];
-
- // Optional. Specify how the results should be sorted.
- string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Response message for
-// [CertificateAuthorityService.ListCertificateTemplates][google.cloud.security.privateca.v1.CertificateAuthorityService.ListCertificateTemplates].
-message ListCertificateTemplatesResponse {
- // The list of [CertificateTemplates][google.cloud.security.privateca.v1.CertificateTemplate].
- repeated CertificateTemplate certificate_templates = 1;
-
- // A token to retrieve next page of results. Pass this value in
- // [ListCertificateTemplatesRequest.next_page_token][] to retrieve
- // the next page of results.
- string next_page_token = 2;
-
- // A list of locations (e.g. "us-west1") that could not be reached.
- repeated string unreachable = 3;
-}
-
-// Request message for
-// [CertificateAuthorityService.UpdateCertificateTemplate][google.cloud.security.privateca.v1.CertificateAuthorityService.UpdateCertificateTemplate].
-message UpdateCertificateTemplateRequest {
- // Required. [CertificateTemplate][google.cloud.security.privateca.v1.CertificateTemplate] with updated values.
- CertificateTemplate certificate_template = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Required. A list of fields to be updated in this request.
- google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Optional. An ID to identify requests. Specify a unique request ID so that if you must
- // retry your request, the server will know to ignore the request if it has
- // already been completed. The server will guarantee that for at least 60
- // minutes since the first request.
- //
- // For example, consider a situation where you make an initial request and t
- // he request times out. If you make the request again with the same request
- // ID, the server can check if original operation with the same request ID
- // was received, and if so, will ignore the second request. This prevents
- // clients from accidentally creating duplicate commitments.
- //
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
-}
-
-// Represents the metadata of the long-running operation.
-message OperationMetadata {
- // Output only. The time the operation was created.
- google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. The time the operation finished running.
- google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. Server-defined resource path for the target of the operation.
- string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. Name of the verb executed by the operation.
- string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. Human-readable status of the operation, if any.
- string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. Identifies whether the user has requested cancellation
- // of the operation. Operations that have successfully been cancelled
- // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
- // corresponding to `Code.CANCELLED`.
- bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
-
- // Output only. API version used to start the operation.
- string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
-}
diff --git a/proto/google/longrunning/operations.proto b/proto/google/longrunning/operations.proto
deleted file mode 100644
index c1fdc6f..0000000
--- a/proto/google/longrunning/operations.proto
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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";
-
-package google.longrunning;
-
-import "google/api/annotations.proto";
-import "google/api/client.proto";
-import "google/protobuf/any.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/empty.proto";
-import "google/rpc/status.proto";
-import "google/protobuf/descriptor.proto";
-
-option cc_enable_arenas = true;
-option csharp_namespace = "Google.LongRunning";
-option go_package = "google.golang.org/genproto/googleapis/longrunning;longrunning";
-option java_multiple_files = true;
-option java_outer_classname = "OperationsProto";
-option java_package = "com.google.longrunning";
-option php_namespace = "Google\\LongRunning";
-
-extend google.protobuf.MethodOptions {
- // Additional information regarding long-running operations.
- // In particular, this specifies the types that are returned from
- // long-running operations.
- //
- // Required for methods that return `google.longrunning.Operation`; invalid
- // otherwise.
- google.longrunning.OperationInfo operation_info = 1049;
-}
-
-// Manages long-running operations with an API service.
-//
-// When an API method normally takes long time to complete, it can be designed
-// to return [Operation][google.longrunning.Operation] to the client, and the client can use this
-// interface to receive the real response asynchronously by polling the
-// operation resource, or pass the operation resource to another API (such as
-// Google Cloud Pub/Sub API) to receive the response. Any API service that
-// returns long-running operations should implement the `Operations` interface
-// so developers can have a consistent client experience.
-service Operations {
- option (google.api.default_host) = "longrunning.googleapis.com";
-
- // Lists operations that match the specified filter in the request. If the
- // server doesn't support this method, it returns `UNIMPLEMENTED`.
- //
- // NOTE: the `name` binding allows API services to override the binding
- // to use different resource name schemes, such as `users/*/operations`. To
- // override the binding, API services can add a binding such as
- // `"/v1/{name=users/*}/operations"` to their service configuration.
- // For backwards compatibility, the default name includes the operations
- // collection id, however overriding users must ensure the name binding
- // is the parent resource, without the operations collection id.
- rpc ListOperations(ListOperationsRequest) returns (ListOperationsResponse) {
- option (google.api.http) = {
- get: "/v1/{name=operations}"
- };
- option (google.api.method_signature) = "name,filter";
- }
-
- // Gets the latest state of a long-running operation. Clients can use this
- // method to poll the operation result at intervals as recommended by the API
- // service.
- rpc GetOperation(GetOperationRequest) returns (Operation) {
- option (google.api.http) = {
- get: "/v1/{name=operations/**}"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Deletes a long-running operation. This method indicates that the client is
- // no longer interested in the operation result. It does not cancel the
- // operation. If the server doesn't support this method, it returns
- // `google.rpc.Code.UNIMPLEMENTED`.
- rpc DeleteOperation(DeleteOperationRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/v1/{name=operations/**}"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Starts asynchronous cancellation on a long-running operation. The server
- // makes a best effort to cancel the operation, but success is not
- // guaranteed. If the server doesn't support this method, it returns
- // `google.rpc.Code.UNIMPLEMENTED`. Clients can use
- // [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
- // other methods to check whether the cancellation succeeded or whether the
- // operation completed despite cancellation. On successful cancellation,
- // the operation is not deleted; instead, it becomes an operation with
- // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
- // corresponding to `Code.CANCELLED`.
- rpc CancelOperation(CancelOperationRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- post: "/v1/{name=operations/**}:cancel"
- body: "*"
- };
- option (google.api.method_signature) = "name";
- }
-
- // Waits until the specified long-running operation is done or reaches at most
- // a specified timeout, returning the latest state. If the operation is
- // already done, the latest state is immediately returned. If the timeout
- // specified is greater than the default HTTP/RPC timeout, the HTTP/RPC
- // timeout is used. If the server does not support this method, it returns
- // `google.rpc.Code.UNIMPLEMENTED`.
- // Note that this method is on a best-effort basis. It may return the latest
- // state before the specified timeout (including immediately), meaning even an
- // immediate response is no guarantee that the operation is done.
- rpc WaitOperation(WaitOperationRequest) returns (Operation) {
- }
-}
-
-// This resource represents a long-running operation that is the result of a
-// network API call.
-message Operation {
- // The server-assigned name, which is only unique within the same service that
- // originally returns it. If you use the default HTTP mapping, the
- // `name` should be a resource name ending with `operations/{unique_id}`.
- string name = 1;
-
- // Service-specific metadata associated with the operation. It typically
- // contains progress information and common metadata such as create time.
- // Some services might not provide such metadata. Any method that returns a
- // long-running operation should document the metadata type, if any.
- google.protobuf.Any metadata = 2;
-
- // If the value is `false`, it means the operation is still in progress.
- // If `true`, the operation is completed, and either `error` or `response` is
- // available.
- bool done = 3;
-
- // The operation result, which can be either an `error` or a valid `response`.
- // If `done` == `false`, neither `error` nor `response` is set.
- // If `done` == `true`, exactly one of `error` or `response` is set.
- oneof result {
- // The error result of the operation in case of failure or cancellation.
- google.rpc.Status error = 4;
-
- // The normal response of the operation in case of success. If the original
- // method returns no data on success, such as `Delete`, the response is
- // `google.protobuf.Empty`. If the original method is standard
- // `Get`/`Create`/`Update`, the response should be the resource. For other
- // methods, the response should have the type `XxxResponse`, where `Xxx`
- // is the original method name. For example, if the original method name
- // is `TakeSnapshot()`, the inferred response type is
- // `TakeSnapshotResponse`.
- google.protobuf.Any response = 5;
- }
-}
-
-// The request message for [Operations.GetOperation][google.longrunning.Operations.GetOperation].
-message GetOperationRequest {
- // The name of the operation resource.
- string name = 1;
-}
-
-// The request message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
-message ListOperationsRequest {
- // The name of the operation's parent resource.
- string name = 4;
-
- // The standard list filter.
- string filter = 1;
-
- // The standard list page size.
- int32 page_size = 2;
-
- // The standard list page token.
- string page_token = 3;
-}
-
-// The response message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
-message ListOperationsResponse {
- // A list of operations that matches the specified filter in the request.
- repeated Operation operations = 1;
-
- // The standard List next-page token.
- string next_page_token = 2;
-}
-
-// The request message for [Operations.CancelOperation][google.longrunning.Operations.CancelOperation].
-message CancelOperationRequest {
- // The name of the operation resource to be cancelled.
- string name = 1;
-}
-
-// The request message for [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation].
-message DeleteOperationRequest {
- // The name of the operation resource to be deleted.
- string name = 1;
-}
-
-// The request message for [Operations.WaitOperation][google.longrunning.Operations.WaitOperation].
-message WaitOperationRequest {
- // The name of the operation resource to wait on.
- string name = 1;
-
- // The maximum duration to wait before timing out. If left blank, the wait
- // will be at most the time permitted by the underlying HTTP/RPC protocol.
- // If RPC context deadline is also specified, the shorter one will be used.
- google.protobuf.Duration timeout = 2;
-}
-
-// A message representing the message types used by a long-running operation.
-//
-// Example:
-//
-// rpc LongRunningRecognize(LongRunningRecognizeRequest)
-// returns (google.longrunning.Operation) {
-// option (google.longrunning.operation_info) = {
-// response_type: "LongRunningRecognizeResponse"
-// metadata_type: "LongRunningRecognizeMetadata"
-// };
-// }
-message OperationInfo {
- // Required. The message name of the primary return type for this
- // long-running operation.
- // This type will be used to deserialize the LRO's response.
- //
- // If the response is in a different package from the rpc, a fully-qualified
- // message name must be used (e.g. `google.protobuf.Struct`).
- //
- // Note: Altering this value constitutes a breaking change.
- string response_type = 1;
-
- // Required. The message name of the metadata type for this long-running
- // operation.
- //
- // If the response is in a different package from the rpc, a fully-qualified
- // message name must be used (e.g. `google.protobuf.Struct`).
- //
- // Note: Altering this value constitutes a breaking change.
- string metadata_type = 2;
-}
diff --git a/proto/google/rpc/code.proto b/proto/google/rpc/code.proto
deleted file mode 100644
index 98ae0ac..0000000
--- a/proto/google/rpc/code.proto
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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";
-
-package google.rpc;
-
-option go_package = "google.golang.org/genproto/googleapis/rpc/code;code";
-option java_multiple_files = true;
-option java_outer_classname = "CodeProto";
-option java_package = "com.google.rpc";
-option objc_class_prefix = "RPC";
-
-// The canonical error codes for gRPC APIs.
-//
-//
-// Sometimes multiple error codes may apply. Services should return
-// the most specific error code that applies. For example, prefer
-// `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply.
-// Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`.
-enum Code {
- // Not an error; returned on success
- //
- // HTTP Mapping: 200 OK
- OK = 0;
-
- // The operation was cancelled, typically by the caller.
- //
- // HTTP Mapping: 499 Client Closed Request
- CANCELLED = 1;
-
- // Unknown error. For example, this error may be returned when
- // a `Status` value received from another address space belongs to
- // an error space that is not known in this address space. Also
- // errors raised by APIs that do not return enough error information
- // may be converted to this error.
- //
- // HTTP Mapping: 500 Internal Server Error
- UNKNOWN = 2;
-
- // The client specified an invalid argument. Note that this differs
- // from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments
- // that are problematic regardless of the state of the system
- // (e.g., a malformed file name).
- //
- // HTTP Mapping: 400 Bad Request
- INVALID_ARGUMENT = 3;
-
- // The deadline expired before the operation could complete. For operations
- // that change the state of the system, this error may be returned
- // even if the operation has completed successfully. For example, a
- // successful response from a server could have been delayed long
- // enough for the deadline to expire.
- //
- // HTTP Mapping: 504 Gateway Timeout
- DEADLINE_EXCEEDED = 4;
-
- // Some requested entity (e.g., file or directory) was not found.
- //
- // Note to server developers: if a request is denied for an entire class
- // of users, such as gradual feature rollout or undocumented whitelist,
- // `NOT_FOUND` may be used. If a request is denied for some users within
- // a class of users, such as user-based access control, `PERMISSION_DENIED`
- // must be used.
- //
- // HTTP Mapping: 404 Not Found
- NOT_FOUND = 5;
-
- // The entity that a client attempted to create (e.g., file or directory)
- // already exists.
- //
- // HTTP Mapping: 409 Conflict
- ALREADY_EXISTS = 6;
-
- // The caller does not have permission to execute the specified
- // operation. `PERMISSION_DENIED` must not be used for rejections
- // caused by exhausting some resource (use `RESOURCE_EXHAUSTED`
- // instead for those errors). `PERMISSION_DENIED` must not be
- // used if the caller can not be identified (use `UNAUTHENTICATED`
- // instead for those errors). This error code does not imply the
- // request is valid or the requested entity exists or satisfies
- // other pre-conditions.
- //
- // HTTP Mapping: 403 Forbidden
- PERMISSION_DENIED = 7;
-
- // The request does not have valid authentication credentials for the
- // operation.
- //
- // HTTP Mapping: 401 Unauthorized
- UNAUTHENTICATED = 16;
-
- // Some resource has been exhausted, perhaps a per-user quota, or
- // perhaps the entire file system is out of space.
- //
- // HTTP Mapping: 429 Too Many Requests
- RESOURCE_EXHAUSTED = 8;
-
- // The operation was rejected because the system is not in a state
- // required for the operation's execution. For example, the directory
- // to be deleted is non-empty, an rmdir operation is applied to
- // a non-directory, etc.
- //
- // Service implementors can use the following guidelines to decide
- // between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:
- // (a) Use `UNAVAILABLE` if the client can retry just the failing call.
- // (b) Use `ABORTED` if the client should retry at a higher level
- // (e.g., when a client-specified test-and-set fails, indicating the
- // client should restart a read-modify-write sequence).
- // (c) Use `FAILED_PRECONDITION` if the client should not retry until
- // the system state has been explicitly fixed. E.g., if an "rmdir"
- // fails because the directory is non-empty, `FAILED_PRECONDITION`
- // should be returned since the client should not retry unless
- // the files are deleted from the directory.
- //
- // HTTP Mapping: 400 Bad Request
- FAILED_PRECONDITION = 9;
-
- // The operation was aborted, typically due to a concurrency issue such as
- // a sequencer check failure or transaction abort.
- //
- // See the guidelines above for deciding between `FAILED_PRECONDITION`,
- // `ABORTED`, and `UNAVAILABLE`.
- //
- // HTTP Mapping: 409 Conflict
- ABORTED = 10;
-
- // The operation was attempted past the valid range. E.g., seeking or
- // reading past end-of-file.
- //
- // Unlike `INVALID_ARGUMENT`, this error indicates a problem that may
- // be fixed if the system state changes. For example, a 32-bit file
- // system will generate `INVALID_ARGUMENT` if asked to read at an
- // offset that is not in the range [0,2^32-1], but it will generate
- // `OUT_OF_RANGE` if asked to read from an offset past the current
- // file size.
- //
- // There is a fair bit of overlap between `FAILED_PRECONDITION` and
- // `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific
- // error) when it applies so that callers who are iterating through
- // a space can easily look for an `OUT_OF_RANGE` error to detect when
- // they are done.
- //
- // HTTP Mapping: 400 Bad Request
- OUT_OF_RANGE = 11;
-
- // The operation is not implemented or is not supported/enabled in this
- // service.
- //
- // HTTP Mapping: 501 Not Implemented
- UNIMPLEMENTED = 12;
-
- // Internal errors. This means that some invariants expected by the
- // underlying system have been broken. This error code is reserved
- // for serious errors.
- //
- // HTTP Mapping: 500 Internal Server Error
- INTERNAL = 13;
-
- // The service is currently unavailable. This is most likely a
- // transient condition, which can be corrected by retrying with
- // a backoff. Note that it is not always safe to retry
- // non-idempotent operations.
- //
- // See the guidelines above for deciding between `FAILED_PRECONDITION`,
- // `ABORTED`, and `UNAVAILABLE`.
- //
- // HTTP Mapping: 503 Service Unavailable
- UNAVAILABLE = 14;
-
- // Unrecoverable data loss or corruption.
- //
- // HTTP Mapping: 500 Internal Server Error
- DATA_LOSS = 15;
-}
diff --git a/proto/google/rpc/status.proto b/proto/google/rpc/status.proto
deleted file mode 100644
index 3b1f7a9..0000000
--- a/proto/google/rpc/status.proto
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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";
-
-package google.rpc;
-
-import "google/protobuf/any.proto";
-
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/genproto/googleapis/rpc/status;status";
-option java_multiple_files = true;
-option java_outer_classname = "StatusProto";
-option java_package = "com.google.rpc";
-option objc_class_prefix = "RPC";
-
-// The `Status` type defines a logical error model that is suitable for
-// different programming environments, including REST APIs and RPC APIs. It is
-// used by [gRPC](https://github.com/grpc). Each `Status` message contains
-// three pieces of data: error code, error message, and error details.
-//
-// You can find out more about this error model and how to work with it in the
-// [API Design Guide](https://cloud.google.com/apis/design/errors).
-message Status {
- // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
- int32 code = 1;
-
- // A developer-facing error message, which should be in English. Any
- // user-facing error message should be localized and sent in the
- // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
- string message = 2;
-
- // A list of messages that carry the error details. There is a common set of
- // message types for APIs to use.
- repeated google.protobuf.Any details = 3;
-}
diff --git a/proto/google/security/meshca/v1/meshca.proto b/proto/google/security/meshca/v1/meshca.proto
deleted file mode 100644
index b0bd140..0000000
--- a/proto/google/security/meshca/v1/meshca.proto
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2019 Istio Authors. All Rights Reserved.
-//
-// 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";
-
-package google.security.meshca.v1;
-
-import "google/protobuf/duration.proto";
-
-option java_multiple_files = true;
-option java_outer_classname = "MeshCaProto";
-option java_package = "com.google.security.meshca.v1";
-option go_package = "github.com/costinm/grpc-mesh/gen/google_ca";
-
-// Certificate request message.
-message MeshCertificateRequest {
- // The request ID must be a valid UUID with the exception that zero UUID is
- // not supported (00000000-0000-0000-0000-000000000000).
- string request_id = 1;
- // PEM-encoded certificate request.
- string csr = 2;
- // Optional: requested certificate validity period.
- google.protobuf.Duration validity = 3;
- // Reserved 4
-}
-
-// Certificate response message.
-message MeshCertificateResponse {
- // PEM-encoded certificate chain.
- // Leaf cert is element '0'. Root cert is element 'n'.
- repeated string cert_chain = 1;
-}
-
-// Service for managing certificates issued by the CSM CA.
-service MeshCertificateService {
- // Using provided CSR, returns a signed certificate that represents a GCP
- // service account identity.
- rpc CreateCertificate(MeshCertificateRequest)
- returns (MeshCertificateResponse) {
- }
-}
diff --git a/proto/google/type/expr.proto b/proto/google/type/expr.proto
deleted file mode 100644
index af0778c..0000000
--- a/proto/google/type/expr.proto
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// 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";
-
-package google.type;
-
-option go_package = "google.golang.org/genproto/googleapis/type/expr;expr";
-option java_multiple_files = true;
-option java_outer_classname = "ExprProto";
-option java_package = "com.google.type";
-option objc_class_prefix = "GTP";
-
-// Represents a textual expression in the Common Expression Language (CEL)
-// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
-// are documented at https://github.com/google/cel-spec.
-//
-// Example (Comparison):
-//
-// title: "Summary size limit"
-// description: "Determines if a summary is less than 100 chars"
-// expression: "document.summary.size() < 100"
-//
-// Example (Equality):
-//
-// title: "Requestor is owner"
-// description: "Determines if requestor is the document owner"
-// expression: "document.owner == request.auth.claims.email"
-//
-// Example (Logic):
-//
-// title: "Public documents"
-// description: "Determine whether the document should be publicly visible"
-// expression: "document.type != 'private' && document.type != 'internal'"
-//
-// Example (Data Manipulation):
-//
-// title: "Notification string"
-// description: "Create a notification string with a timestamp."
-// expression: "'New message received at ' + string(document.create_time)"
-//
-// The exact variables and functions that may be referenced within an expression
-// are determined by the service that evaluates it. See the service
-// documentation for additional information.
-message Expr {
- // Textual representation of an expression in Common Expression Language
- // syntax.
- string expression = 1;
-
- // Optional. Title for the expression, i.e. a short string describing
- // its purpose. This can be used e.g. in UIs which allow to enter the
- // expression.
- string title = 2;
-
- // Optional. Description of the expression. This is a longer text which
- // describes the expression, e.g. when hovered over it in a UI.
- string description = 3;
-
- // Optional. String indicating the location of the expression for error
- // reporting, e.g. a file name and a position in the file.
- string location = 4;
-}
diff --git a/proto/grpc/binlog/v1/binarylog.proto b/proto/grpc/binlog/v1/binarylog.proto
deleted file mode 100644
index 9ed1733..0000000
--- a/proto/grpc/binlog/v1/binarylog.proto
+++ /dev/null
@@ -1,209 +0,0 @@
-// Copyright 2018 The gRPC Authors
-// All rights reserved.
-//
-// 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto
-
-syntax = "proto3";
-
-package grpc.binarylog.v1;
-
-import "google/protobuf/duration.proto";
-import "google/protobuf/timestamp.proto";
-
-option go_package = "google.golang.org/grpc/binarylog/grpc_binarylog_v1";
-option java_multiple_files = true;
-option java_package = "io.grpc.binarylog.v1";
-option java_outer_classname = "BinaryLogProto";
-
-// Log entry we store in binary logs
-message GrpcLogEntry {
- // Enumerates the type of event
- // Note the terminology is different from the RPC semantics
- // definition, but the same meaning is expressed here.
- enum EventType {
- EVENT_TYPE_UNKNOWN = 0;
- // Header sent from client to server
- EVENT_TYPE_CLIENT_HEADER = 1;
- // Header sent from server to client
- EVENT_TYPE_SERVER_HEADER = 2;
- // Message sent from client to server
- EVENT_TYPE_CLIENT_MESSAGE = 3;
- // Message sent from server to client
- EVENT_TYPE_SERVER_MESSAGE = 4;
- // A signal that client is done sending
- EVENT_TYPE_CLIENT_HALF_CLOSE = 5;
- // Trailer indicates the end of the RPC.
- // On client side, this event means a trailer was either received
- // from the network or the gRPC library locally generated a status
- // to inform the application about a failure.
- // On server side, this event means the server application requested
- // to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after
- // this due to races on server side.
- EVENT_TYPE_SERVER_TRAILER = 6;
- // A signal that the RPC is cancelled. On client side, this
- // indicates the client application requests a cancellation.
- // On server side, this indicates that cancellation was detected.
- // Note: This marks the end of the RPC. Events may arrive after
- // this due to races. For example, on client side a trailer
- // may arrive even though the application requested to cancel the RPC.
- EVENT_TYPE_CANCEL = 7;
- }
-
- // Enumerates the entity that generates the log entry
- enum Logger {
- LOGGER_UNKNOWN = 0;
- LOGGER_CLIENT = 1;
- LOGGER_SERVER = 2;
- }
-
- // The timestamp of the binary log message
- google.protobuf.Timestamp timestamp = 1;
-
- // Uniquely identifies a call. The value must not be 0 in order to disambiguate
- // from an unset value.
- // Each call may have several log entries, they will all have the same call_id.
- // Nothing is guaranteed about their value other than they are unique across
- // different RPCs in the same gRPC process.
- uint64 call_id = 2;
-
- // The entry sequence id for this call. The first GrpcLogEntry has a
- // value of 1, to disambiguate from an unset value. The purpose of
- // this field is to detect missing entries in environments where
- // durability or ordering is not guaranteed.
- uint64 sequence_id_within_call = 3;
-
- EventType type = 4;
- Logger logger = 5; // One of the above Logger enum
-
- // The logger uses one of the following fields to record the payload,
- // according to the type of the log entry.
- oneof payload {
- ClientHeader client_header = 6;
- ServerHeader server_header = 7;
- // Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
- Message message = 8;
- Trailer trailer = 9;
- }
-
- // true if payload does not represent the full message or metadata.
- bool payload_truncated = 10;
-
- // Peer address information, will only be recorded on the first
- // incoming event. On client side, peer is logged on
- // EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
- // the case of trailers-only. On server side, peer is always
- // logged on EVENT_TYPE_CLIENT_HEADER.
- Address peer = 11;
-};
-
-message ClientHeader {
- // This contains only the metadata from the application.
- Metadata metadata = 1;
-
- // The name of the RPC method, which looks something like:
- // //
- // Note the leading "/" character.
- string method_name = 2;
-
- // A single process may be used to run multiple virtual
- // servers with different identities.
- // The authority is the name of such a server identitiy.
- // It is typically a portion of the URI in the form of
- // or : .
- string authority = 3;
-
- // the RPC timeout
- google.protobuf.Duration timeout = 4;
-}
-
-message ServerHeader {
- // This contains only the metadata from the application.
- Metadata metadata = 1;
-}
-
-message Trailer {
- // This contains only the metadata from the application.
- Metadata metadata = 1;
-
- // The gRPC status code.
- uint32 status_code = 2;
-
- // An original status message before any transport specific
- // encoding.
- string status_message = 3;
-
- // The value of the 'grpc-status-details-bin' metadata key. If
- // present, this is always an encoded 'google.rpc.Status' message.
- bytes status_details = 4;
-}
-
-// Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE
-message Message {
- // Length of the message. It may not be the same as the length of the
- // data field, as the logging payload can be truncated or omitted.
- uint32 length = 1;
- // May be truncated or omitted.
- bytes data = 2;
-}
-
-// A list of metadata pairs, used in the payload of client header,
-// server header, and server trailer.
-// Implementations may omit some entries to honor the header limits
-// of GRPC_BINARY_LOG_CONFIG.
-//
-// Header keys added by gRPC are omitted. To be more specific,
-// implementations will not log the following entries, and this is
-// not to be treated as a truncation:
-// - entries handled by grpc that are not user visible, such as those
-// that begin with 'grpc-' (with exception of grpc-trace-bin)
-// or keys like 'lb-token'
-// - transport specific entries, including but not limited to:
-// ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc
-// - entries added for call credentials
-//
-// Implementations must always log grpc-trace-bin if it is present.
-// Practically speaking it will only be visible on server side because
-// grpc-trace-bin is managed by low level client side mechanisms
-// inaccessible from the application level. On server side, the
-// header is just a normal metadata key.
-// The pair will not count towards the size limit.
-message Metadata {
- repeated MetadataEntry entry = 1;
-}
-
-// A metadata key value pair
-message MetadataEntry {
- string key = 1;
- bytes value = 2;
-}
-
-// Address information
-message Address {
- enum Type {
- TYPE_UNKNOWN = 0;
- // address is in 1.2.3.4 form
- TYPE_IPV4 = 1;
- // address is in IPv6 canonical form (RFC5952 section 4)
- // The scope is NOT included in the address string.
- TYPE_IPV6 = 2;
- // address is UDS string
- TYPE_UNIX = 3;
- };
- Type type = 1;
- string address = 2;
- // only for TYPE_IPV4 and TYPE_IPV6
- uint32 ip_port = 3;
-}
diff --git a/proto/grpc/channelz/v1/channelz.proto b/proto/grpc/channelz/v1/channelz.proto
deleted file mode 100644
index d078109..0000000
--- a/proto/grpc/channelz/v1/channelz.proto
+++ /dev/null
@@ -1,564 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// This file defines an interface for exporting monitoring information
-// out of gRPC servers. See the full design at
-// https://github.com/grpc/proposal/blob/master/A14-channelz.md
-//
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/channelz/v1/channelz.proto
-
-syntax = "proto3";
-
-package grpc.channelz.v1;
-
-import "google/protobuf/any.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/timestamp.proto";
-import "google/protobuf/wrappers.proto";
-
-option go_package = "google.golang.org/grpc/channelz/grpc_channelz_v1";
-option java_multiple_files = true;
-option java_package = "io.grpc.channelz.v1";
-option java_outer_classname = "ChannelzProto";
-
-// Channel is a logical grouping of channels, subchannels, and sockets.
-message Channel {
- // The identifier for this channel. This should be set.
- ChannelRef ref = 1;
- // Data specific to this channel.
- ChannelData data = 2;
- // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
-
- // There are no ordering guarantees on the order of channel refs.
- // There may not be cycles in the ref graph.
- // A channel ref may be present in more than one channel or subchannel.
- repeated ChannelRef channel_ref = 3;
-
- // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
- // There are no ordering guarantees on the order of subchannel refs.
- // There may not be cycles in the ref graph.
- // A sub channel ref may be present in more than one channel or subchannel.
- repeated SubchannelRef subchannel_ref = 4;
-
- // There are no ordering guarantees on the order of sockets.
- repeated SocketRef socket_ref = 5;
-}
-
-// Subchannel is a logical grouping of channels, subchannels, and sockets.
-// A subchannel is load balanced over by it's ancestor
-message Subchannel {
- // The identifier for this channel.
- SubchannelRef ref = 1;
- // Data specific to this channel.
- ChannelData data = 2;
- // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
-
- // There are no ordering guarantees on the order of channel refs.
- // There may not be cycles in the ref graph.
- // A channel ref may be present in more than one channel or subchannel.
- repeated ChannelRef channel_ref = 3;
-
- // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
- // There are no ordering guarantees on the order of subchannel refs.
- // There may not be cycles in the ref graph.
- // A sub channel ref may be present in more than one channel or subchannel.
- repeated SubchannelRef subchannel_ref = 4;
-
- // There are no ordering guarantees on the order of sockets.
- repeated SocketRef socket_ref = 5;
-}
-
-// These come from the specified states in this document:
-// https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md
-message ChannelConnectivityState {
- enum State {
- UNKNOWN = 0;
- IDLE = 1;
- CONNECTING = 2;
- READY = 3;
- TRANSIENT_FAILURE = 4;
- SHUTDOWN = 5;
- }
- State state = 1;
-}
-
-// Channel data is data related to a specific Channel or Subchannel.
-message ChannelData {
- // The connectivity state of the channel or subchannel. Implementations
- // should always set this.
- ChannelConnectivityState state = 1;
-
- // The target this channel originally tried to connect to. May be absent
- string target = 2;
-
- // A trace of recent events on the channel. May be absent.
- ChannelTrace trace = 3;
-
- // The number of calls started on the channel
- int64 calls_started = 4;
- // The number of calls that have completed with an OK status
- int64 calls_succeeded = 5;
- // The number of calls that have completed with a non-OK status
- int64 calls_failed = 6;
-
- // The last time a call was started on the channel.
- google.protobuf.Timestamp last_call_started_timestamp = 7;
-}
-
-// A trace event is an interesting thing that happened to a channel or
-// subchannel, such as creation, address resolution, subchannel creation, etc.
-message ChannelTraceEvent {
- // High level description of the event.
- string description = 1;
- // The supported severity levels of trace events.
- enum Severity {
- CT_UNKNOWN = 0;
- CT_INFO = 1;
- CT_WARNING = 2;
- CT_ERROR = 3;
- }
- // the severity of the trace event
- Severity severity = 2;
- // When this event occurred.
- google.protobuf.Timestamp timestamp = 3;
- // ref of referenced channel or subchannel.
- // Optional, only present if this event refers to a child object. For example,
- // this field would be filled if this trace event was for a subchannel being
- // created.
- oneof child_ref {
- ChannelRef channel_ref = 4;
- SubchannelRef subchannel_ref = 5;
- }
-}
-
-// ChannelTrace represents the recent events that have occurred on the channel.
-message ChannelTrace {
- // Number of events ever logged in this tracing object. This can differ from
- // events.size() because events can be overwritten or garbage collected by
- // implementations.
- int64 num_events_logged = 1;
- // Time that this channel was created.
- google.protobuf.Timestamp creation_timestamp = 2;
- // List of events that have occurred on this channel.
- repeated ChannelTraceEvent events = 3;
-}
-
-// ChannelRef is a reference to a Channel.
-message ChannelRef {
- // The globally unique id for this channel. Must be a positive number.
- int64 channel_id = 1;
- // An optional name associated with the channel.
- string name = 2;
- // Intentionally don't use field numbers from other refs.
- reserved 3, 4, 5, 6, 7, 8;
-}
-
-// SubchannelRef is a reference to a Subchannel.
-message SubchannelRef {
- // The globally unique id for this subchannel. Must be a positive number.
- int64 subchannel_id = 7;
- // An optional name associated with the subchannel.
- string name = 8;
- // Intentionally don't use field numbers from other refs.
- reserved 1, 2, 3, 4, 5, 6;
-}
-
-// SocketRef is a reference to a Socket.
-message SocketRef {
- // The globally unique id for this socket. Must be a positive number.
- int64 socket_id = 3;
- // An optional name associated with the socket.
- string name = 4;
- // Intentionally don't use field numbers from other refs.
- reserved 1, 2, 5, 6, 7, 8;
-}
-
-// ServerRef is a reference to a Server.
-message ServerRef {
- // A globally unique identifier for this server. Must be a positive number.
- int64 server_id = 5;
- // An optional name associated with the server.
- string name = 6;
- // Intentionally don't use field numbers from other refs.
- reserved 1, 2, 3, 4, 7, 8;
-}
-
-// Server represents a single server. There may be multiple servers in a single
-// program.
-message Server {
- // The identifier for a Server. This should be set.
- ServerRef ref = 1;
- // The associated data of the Server.
- ServerData data = 2;
-
- // The sockets that the server is listening on. There are no ordering
- // guarantees. This may be absent.
- repeated SocketRef listen_socket = 3;
-}
-
-// ServerData is data for a specific Server.
-message ServerData {
- // A trace of recent events on the server. May be absent.
- ChannelTrace trace = 1;
-
- // The number of incoming calls started on the server
- int64 calls_started = 2;
- // The number of incoming calls that have completed with an OK status
- int64 calls_succeeded = 3;
- // The number of incoming calls that have a completed with a non-OK status
- int64 calls_failed = 4;
-
- // The last time a call was started on the server.
- google.protobuf.Timestamp last_call_started_timestamp = 5;
-}
-
-// Information about an actual connection. Pronounced "sock-ay".
-message Socket {
- // The identifier for the Socket.
- SocketRef ref = 1;
-
- // Data specific to this Socket.
- SocketData data = 2;
- // The locally bound address.
- Address local = 3;
- // The remote bound address. May be absent.
- Address remote = 4;
- // Security details for this socket. May be absent if not available, or
- // there is no security on the socket.
- Security security = 5;
-
- // Optional, represents the name of the remote endpoint, if different than
- // the original target name.
- string remote_name = 6;
-}
-
-// SocketData is data associated for a specific Socket. The fields present
-// are specific to the implementation, so there may be minor differences in
-// the semantics. (e.g. flow control windows)
-message SocketData {
- // The number of streams that have been started.
- int64 streams_started = 1;
- // The number of streams that have ended successfully:
- // On client side, received frame with eos bit set;
- // On server side, sent frame with eos bit set.
- int64 streams_succeeded = 2;
- // The number of streams that have ended unsuccessfully:
- // On client side, ended without receiving frame with eos bit set;
- // On server side, ended without sending frame with eos bit set.
- int64 streams_failed = 3;
- // The number of grpc messages successfully sent on this socket.
- int64 messages_sent = 4;
- // The number of grpc messages received on this socket.
- int64 messages_received = 5;
-
- // The number of keep alives sent. This is typically implemented with HTTP/2
- // ping messages.
- int64 keep_alives_sent = 6;
-
- // The last time a stream was created by this endpoint. Usually unset for
- // servers.
- google.protobuf.Timestamp last_local_stream_created_timestamp = 7;
- // The last time a stream was created by the remote endpoint. Usually unset
- // for clients.
- google.protobuf.Timestamp last_remote_stream_created_timestamp = 8;
-
- // The last time a message was sent by this endpoint.
- google.protobuf.Timestamp last_message_sent_timestamp = 9;
- // The last time a message was received by this endpoint.
- google.protobuf.Timestamp last_message_received_timestamp = 10;
-
- // The amount of window, granted to the local endpoint by the remote endpoint.
- // This may be slightly out of date due to network latency. This does NOT
- // include stream level or TCP level flow control info.
- google.protobuf.Int64Value local_flow_control_window = 11;
-
- // The amount of window, granted to the remote endpoint by the local endpoint.
- // This may be slightly out of date due to network latency. This does NOT
- // include stream level or TCP level flow control info.
- google.protobuf.Int64Value remote_flow_control_window = 12;
-
- // Socket options set on this socket. May be absent if 'summary' is set
- // on GetSocketRequest.
- repeated SocketOption option = 13;
-}
-
-// Address represents the address used to create the socket.
-message Address {
- message TcpIpAddress {
- // Either the IPv4 or IPv6 address in bytes. Will be either 4 bytes or 16
- // bytes in length.
- bytes ip_address = 1;
- // 0-64k, or -1 if not appropriate.
- int32 port = 2;
- }
- // A Unix Domain Socket address.
- message UdsAddress {
- string filename = 1;
- }
- // An address type not included above.
- message OtherAddress {
- // The human readable version of the value. This value should be set.
- string name = 1;
- // The actual address message.
- google.protobuf.Any value = 2;
- }
-
- oneof address {
- TcpIpAddress tcpip_address = 1;
- UdsAddress uds_address = 2;
- OtherAddress other_address = 3;
- }
-}
-
-// Security represents details about how secure the socket is.
-message Security {
- message Tls {
- oneof cipher_suite {
- // The cipher suite name in the RFC 4346 format:
- // https://tools.ietf.org/html/rfc4346#appendix-C
- string standard_name = 1;
- // Some other way to describe the cipher suite if
- // the RFC 4346 name is not available.
- string other_name = 2;
- }
- // the certificate used by this endpoint.
- bytes local_certificate = 3;
- // the certificate used by the remote endpoint.
- bytes remote_certificate = 4;
- }
- message OtherSecurity {
- // The human readable version of the value.
- string name = 1;
- // The actual security details message.
- google.protobuf.Any value = 2;
- }
- oneof model {
- Tls tls = 1;
- OtherSecurity other = 2;
- }
-}
-
-// SocketOption represents socket options for a socket. Specifically, these
-// are the options returned by getsockopt().
-message SocketOption {
- // The full name of the socket option. Typically this will be the upper case
- // name, such as "SO_REUSEPORT".
- string name = 1;
- // The human readable value of this socket option. At least one of value or
- // additional will be set.
- string value = 2;
- // Additional data associated with the socket option. At least one of value
- // or additional will be set.
- google.protobuf.Any additional = 3;
-}
-
-// For use with SocketOption's additional field. This is primarily used for
-// SO_RCVTIMEO and SO_SNDTIMEO
-message SocketOptionTimeout {
- google.protobuf.Duration duration = 1;
-}
-
-// For use with SocketOption's additional field. This is primarily used for
-// SO_LINGER.
-message SocketOptionLinger {
- // active maps to `struct linger.l_onoff`
- bool active = 1;
- // duration maps to `struct linger.l_linger`
- google.protobuf.Duration duration = 2;
-}
-
-// For use with SocketOption's additional field. Tcp info for
-// SOL_TCP and TCP_INFO.
-message SocketOptionTcpInfo {
- uint32 tcpi_state = 1;
-
- uint32 tcpi_ca_state = 2;
- uint32 tcpi_retransmits = 3;
- uint32 tcpi_probes = 4;
- uint32 tcpi_backoff = 5;
- uint32 tcpi_options = 6;
- uint32 tcpi_snd_wscale = 7;
- uint32 tcpi_rcv_wscale = 8;
-
- uint32 tcpi_rto = 9;
- uint32 tcpi_ato = 10;
- uint32 tcpi_snd_mss = 11;
- uint32 tcpi_rcv_mss = 12;
-
- uint32 tcpi_unacked = 13;
- uint32 tcpi_sacked = 14;
- uint32 tcpi_lost = 15;
- uint32 tcpi_retrans = 16;
- uint32 tcpi_fackets = 17;
-
- uint32 tcpi_last_data_sent = 18;
- uint32 tcpi_last_ack_sent = 19;
- uint32 tcpi_last_data_recv = 20;
- uint32 tcpi_last_ack_recv = 21;
-
- uint32 tcpi_pmtu = 22;
- uint32 tcpi_rcv_ssthresh = 23;
- uint32 tcpi_rtt = 24;
- uint32 tcpi_rttvar = 25;
- uint32 tcpi_snd_ssthresh = 26;
- uint32 tcpi_snd_cwnd = 27;
- uint32 tcpi_advmss = 28;
- uint32 tcpi_reordering = 29;
-}
-
-// Channelz is a service exposed by gRPC servers that provides detailed debug
-// information.
-service Channelz {
- // Gets all root channels (i.e. channels the application has directly
- // created). This does not include subchannels nor non-top level channels.
- rpc GetTopChannels(GetTopChannelsRequest) returns (GetTopChannelsResponse);
- // Gets all servers that exist in the process.
- rpc GetServers(GetServersRequest) returns (GetServersResponse);
- // Returns a single Server, or else a NOT_FOUND code.
- rpc GetServer(GetServerRequest) returns (GetServerResponse);
- // Gets all server sockets that exist in the process.
- rpc GetServerSockets(GetServerSocketsRequest) returns (GetServerSocketsResponse);
- // Returns a single Channel, or else a NOT_FOUND code.
- rpc GetChannel(GetChannelRequest) returns (GetChannelResponse);
- // Returns a single Subchannel, or else a NOT_FOUND code.
- rpc GetSubchannel(GetSubchannelRequest) returns (GetSubchannelResponse);
- // Returns a single Socket or else a NOT_FOUND code.
- rpc GetSocket(GetSocketRequest) returns (GetSocketResponse);
-}
-
-message GetTopChannelsRequest {
- // start_channel_id indicates that only channels at or above this id should be
- // included in the results.
- // To request the first page, this should be set to 0. To request
- // subsequent pages, the client generates this value by adding 1 to
- // the highest seen result ID.
- int64 start_channel_id = 1;
-
- // If non-zero, the server will return a page of results containing
- // at most this many items. If zero, the server will choose a
- // reasonable page size. Must never be negative.
- int64 max_results = 2;
-}
-
-message GetTopChannelsResponse {
- // list of channels that the connection detail service knows about. Sorted in
- // ascending channel_id order.
- // Must contain at least 1 result, otherwise 'end' must be true.
- repeated Channel channel = 1;
- // If set, indicates that the list of channels is the final list. Requesting
- // more channels can only return more if they are created after this RPC
- // completes.
- bool end = 2;
-}
-
-message GetServersRequest {
- // start_server_id indicates that only servers at or above this id should be
- // included in the results.
- // To request the first page, this must be set to 0. To request
- // subsequent pages, the client generates this value by adding 1 to
- // the highest seen result ID.
- int64 start_server_id = 1;
-
- // If non-zero, the server will return a page of results containing
- // at most this many items. If zero, the server will choose a
- // reasonable page size. Must never be negative.
- int64 max_results = 2;
-}
-
-message GetServersResponse {
- // list of servers that the connection detail service knows about. Sorted in
- // ascending server_id order.
- // Must contain at least 1 result, otherwise 'end' must be true.
- repeated Server server = 1;
- // If set, indicates that the list of servers is the final list. Requesting
- // more servers will only return more if they are created after this RPC
- // completes.
- bool end = 2;
-}
-
-message GetServerRequest {
- // server_id is the identifier of the specific server to get.
- int64 server_id = 1;
-}
-
-message GetServerResponse {
- // The Server that corresponds to the requested server_id. This field
- // should be set.
- Server server = 1;
-}
-
-message GetServerSocketsRequest {
- int64 server_id = 1;
- // start_socket_id indicates that only sockets at or above this id should be
- // included in the results.
- // To request the first page, this must be set to 0. To request
- // subsequent pages, the client generates this value by adding 1 to
- // the highest seen result ID.
- int64 start_socket_id = 2;
-
- // If non-zero, the server will return a page of results containing
- // at most this many items. If zero, the server will choose a
- // reasonable page size. Must never be negative.
- int64 max_results = 3;
-}
-
-message GetServerSocketsResponse {
- // list of socket refs that the connection detail service knows about. Sorted in
- // ascending socket_id order.
- // Must contain at least 1 result, otherwise 'end' must be true.
- repeated SocketRef socket_ref = 1;
- // If set, indicates that the list of sockets is the final list. Requesting
- // more sockets will only return more if they are created after this RPC
- // completes.
- bool end = 2;
-}
-
-message GetChannelRequest {
- // channel_id is the identifier of the specific channel to get.
- int64 channel_id = 1;
-}
-
-message GetChannelResponse {
- // The Channel that corresponds to the requested channel_id. This field
- // should be set.
- Channel channel = 1;
-}
-
-message GetSubchannelRequest {
- // subchannel_id is the identifier of the specific subchannel to get.
- int64 subchannel_id = 1;
-}
-
-message GetSubchannelResponse {
- // The Subchannel that corresponds to the requested subchannel_id. This
- // field should be set.
- Subchannel subchannel = 1;
-}
-
-message GetSocketRequest {
- // socket_id is the identifier of the specific socket to get.
- int64 socket_id = 1;
-
- // If true, the response will contain only high level information
- // that is inexpensive to obtain. Fields thay may be omitted are
- // documented.
- bool summary = 2;
-}
-
-message GetSocketResponse {
- // The Socket that corresponds to the requested socket_id. This field
- // should be set.
- Socket socket = 1;
-}
diff --git a/proto/grpc/core/stats.proto b/proto/grpc/core/stats.proto
deleted file mode 100644
index c663227..0000000
--- a/proto/grpc/core/stats.proto
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2017 gRPC 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";
-
-package grpc.core;
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/core";
-
-message Bucket {
- double start = 1;
- uint64 count = 2;
-}
-
-message Histogram {
- repeated Bucket buckets = 1;
-}
-
-message Metric {
- string name = 1;
- oneof value {
- uint64 count = 10;
- Histogram histogram = 11;
- }
-}
-
-message Stats {
- repeated Metric metrics = 1;
-}
diff --git a/proto/grpc/gcp/altscontext.proto b/proto/grpc/gcp/altscontext.proto
deleted file mode 100644
index a6cceb1..0000000
--- a/proto/grpc/gcp/altscontext.proto
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/altscontext.proto
-
-syntax = "proto3";
-
-package grpc.gcp;
-
-import "grpc/gcp/transport_security_common.proto";
-
-option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
-option java_multiple_files = true;
-option java_outer_classname = "AltsContextProto";
-option java_package = "io.grpc.alts.internal";
-
-message AltsContext {
- // The application protocol negotiated for this connection.
- string application_protocol = 1;
-
- // The record protocol negotiated for this connection.
- string record_protocol = 2;
-
- // The security level of the created secure channel.
- SecurityLevel security_level = 3;
-
- // The peer service account.
- string peer_service_account = 4;
-
- // The local service account.
- string local_service_account = 5;
-
- // The RPC protocol versions supported by the peer.
- RpcProtocolVersions peer_rpc_versions = 6;
-
- // Additional attributes of the peer.
- map peer_attributes = 7;
-}
diff --git a/proto/grpc/gcp/handshaker.proto b/proto/grpc/gcp/handshaker.proto
deleted file mode 100644
index 02764ba..0000000
--- a/proto/grpc/gcp/handshaker.proto
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/handshaker.proto
-
-syntax = "proto3";
-
-package grpc.gcp;
-
-import "grpc/gcp/transport_security_common.proto";
-
-option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
-option java_multiple_files = true;
-option java_outer_classname = "HandshakerProto";
-option java_package = "io.grpc.alts.internal";
-
-
-enum HandshakeProtocol {
- // Default value.
- HANDSHAKE_PROTOCOL_UNSPECIFIED = 0;
-
- // TLS handshake protocol.
- TLS = 1;
-
- // Application Layer Transport Security handshake protocol.
- ALTS = 2;
-}
-
-enum NetworkProtocol {
- NETWORK_PROTOCOL_UNSPECIFIED = 0;
- TCP = 1;
- UDP = 2;
-}
-
-message Endpoint {
- // IP address. It should contain an IPv4 or IPv6 string literal, e.g.
- // "192.168.0.1" or "2001:db8::1".
- string ip_address = 1;
-
- // Port number.
- int32 port = 2;
-
- // Network protocol (e.g., TCP, UDP) associated with this endpoint.
- NetworkProtocol protocol = 3;
-}
-
-message Identity {
- oneof identity_oneof {
- // Service account of a connection endpoint.
- string service_account = 1;
-
- // Hostname of a connection endpoint.
- string hostname = 2;
- }
-
- // Additional attributes of the identity.
- map attributes = 3;
-}
-
-message StartClientHandshakeReq {
- // Handshake security protocol requested by the client.
- HandshakeProtocol handshake_security_protocol = 1;
-
- // The application protocols supported by the client, e.g., "h2" (for http2),
- // "grpc".
- repeated string application_protocols = 2;
-
- // The record protocols supported by the client, e.g.,
- // "ALTSRP_GCM_AES128".
- repeated string record_protocols = 3;
-
- // (Optional) Describes which server identities are acceptable by the client.
- // If target identities are provided and none of them matches the peer
- // identity of the server, handshake will fail.
- repeated Identity target_identities = 4;
-
- // (Optional) Application may specify a local identity. Otherwise, the
- // handshaker chooses a default local identity.
- Identity local_identity = 5;
-
- // (Optional) Local endpoint information of the connection to the server,
- // such as local IP address, port number, and network protocol.
- Endpoint local_endpoint = 6;
-
- // (Optional) Endpoint information of the remote server, such as IP address,
- // port number, and network protocol.
- Endpoint remote_endpoint = 7;
-
- // (Optional) If target name is provided, a secure naming check is performed
- // to verify that the peer authenticated identity is indeed authorized to run
- // the target name.
- string target_name = 8;
-
- // (Optional) RPC protocol versions supported by the client.
- RpcProtocolVersions rpc_versions = 9;
-
- // (Optional) Maximum frame size supported by the client.
- uint32 max_frame_size = 10;
-}
-
-message ServerHandshakeParameters {
- // The record protocols supported by the server, e.g.,
- // "ALTSRP_GCM_AES128".
- repeated string record_protocols = 1;
-
- // (Optional) A list of local identities supported by the server, if
- // specified. Otherwise, the handshaker chooses a default local identity.
- repeated Identity local_identities = 2;
-}
-
-message StartServerHandshakeReq {
- // The application protocols supported by the server, e.g., "h2" (for http2),
- // "grpc".
- repeated string application_protocols = 1;
-
- // Handshake parameters (record protocols and local identities supported by
- // the server) mapped by the handshake protocol. Each handshake security
- // protocol (e.g., TLS or ALTS) has its own set of record protocols and local
- // identities. Since protobuf does not support enum as key to the map, the key
- // to handshake_parameters is the integer value of HandshakeProtocol enum.
- map handshake_parameters = 2;
-
- // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
- // that the peer's out_frames are split into multiple HandshakReq messages.
- bytes in_bytes = 3;
-
- // (Optional) Local endpoint information of the connection to the client,
- // such as local IP address, port number, and network protocol.
- Endpoint local_endpoint = 4;
-
- // (Optional) Endpoint information of the remote client, such as IP address,
- // port number, and network protocol.
- Endpoint remote_endpoint = 5;
-
- // (Optional) RPC protocol versions supported by the server.
- RpcProtocolVersions rpc_versions = 6;
-
- // (Optional) Maximum frame size supported by the server.
- uint32 max_frame_size = 7;
-}
-
-message NextHandshakeMessageReq {
- // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
- // that the peer's out_frames are split into multiple NextHandshakerMessageReq
- // messages.
- bytes in_bytes = 1;
-}
-
-message HandshakerReq {
- oneof req_oneof {
- // The start client handshake request message.
- StartClientHandshakeReq client_start = 1;
-
- // The start server handshake request message.
- StartServerHandshakeReq server_start = 2;
-
- // The next handshake request message.
- NextHandshakeMessageReq next = 3;
- }
-}
-
-message HandshakerResult {
- // The application protocol negotiated for this connection.
- string application_protocol = 1;
-
- // The record protocol negotiated for this connection.
- string record_protocol = 2;
-
- // Cryptographic key data. The key data may be more than the key length
- // required for the record protocol, thus the client of the handshaker
- // service needs to truncate the key data into the right key length.
- bytes key_data = 3;
-
- // The authenticated identity of the peer.
- Identity peer_identity = 4;
-
- // The local identity used in the handshake.
- Identity local_identity = 5;
-
- // Indicate whether the handshaker service client should keep the channel
- // between the handshaker service open, e.g., in order to handle
- // post-handshake messages in the future.
- bool keep_channel_open = 6;
-
- // The RPC protocol versions supported by the peer.
- RpcProtocolVersions peer_rpc_versions = 7;
-
- // The maximum frame size of the peer.
- uint32 max_frame_size = 8;
-}
-
-message HandshakerStatus {
- // The status code. This could be the gRPC status code.
- uint32 code = 1;
-
- // The status details.
- string details = 2;
-}
-
-message HandshakerResp {
- // Frames to be given to the peer for the NextHandshakeMessageReq. May be
- // empty if no out_frames have to be sent to the peer or if in_bytes in the
- // HandshakerReq are incomplete. All the non-empty out frames must be sent to
- // the peer even if the handshaker status is not OK as these frames may
- // contain the alert frames.
- bytes out_frames = 1;
-
- // Number of bytes in the in_bytes consumed by the handshaker. It is possible
- // that part of in_bytes in HandshakerReq was unrelated to the handshake
- // process.
- uint32 bytes_consumed = 2;
-
- // This is set iff the handshake was successful. out_frames may still be set
- // to frames that needs to be forwarded to the peer.
- HandshakerResult result = 3;
-
- // Status of the handshaker.
- HandshakerStatus status = 4;
-}
-
-service HandshakerService {
- // Handshaker service accepts a stream of handshaker request, returning a
- // stream of handshaker response. Client is expected to send exactly one
- // message with either client_start or server_start followed by one or more
- // messages with next. Each time client sends a request, the handshaker
- // service expects to respond. Client does not have to wait for service's
- // response before sending next request.
- rpc DoHandshake(stream HandshakerReq)
- returns (stream HandshakerResp) {
- }
-}
diff --git a/proto/grpc/gcp/transport_security_common.proto b/proto/grpc/gcp/transport_security_common.proto
deleted file mode 100644
index 8f01be7..0000000
--- a/proto/grpc/gcp/transport_security_common.proto
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2018 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/transport_security_common.proto
-
-syntax = "proto3";
-
-package grpc.gcp;
-
-option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
-option java_multiple_files = true;
-option java_outer_classname = "TransportSecurityCommonProto";
-option java_package = "io.grpc.alts.internal";
-
-// The security level of the created channel. The list is sorted in increasing
-// level of security. This order must always be maintained.
-enum SecurityLevel {
- SECURITY_NONE = 0;
- INTEGRITY_ONLY = 1;
- INTEGRITY_AND_PRIVACY = 2;
-}
-
-// Max and min supported RPC protocol versions.
-message RpcProtocolVersions {
- // RPC version contains a major version and a minor version.
- message Version {
- uint32 major = 1;
- uint32 minor = 2;
- }
- // Maximum supported RPC version.
- Version max_rpc_version = 1;
- // Minimum supported RPC version.
- Version min_rpc_version = 2;
-}
diff --git a/proto/grpc/health/v1/health.proto b/proto/grpc/health/v1/health.proto
deleted file mode 100644
index 38843ff..0000000
--- a/proto/grpc/health/v1/health.proto
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2015 The gRPC 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.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/health/v1/health.proto
-
-syntax = "proto3";
-
-package grpc.health.v1;
-
-option csharp_namespace = "Grpc.Health.V1";
-option go_package = "google.golang.org/grpc/health/grpc_health_v1";
-option java_multiple_files = true;
-option java_outer_classname = "HealthProto";
-option java_package = "io.grpc.health.v1";
-
-message HealthCheckRequest {
- string service = 1;
-}
-
-message HealthCheckResponse {
- enum ServingStatus {
- UNKNOWN = 0;
- SERVING = 1;
- NOT_SERVING = 2;
- SERVICE_UNKNOWN = 3; // Used only by the Watch method.
- }
- ServingStatus status = 1;
-}
-
-service Health {
- // If the requested service is unknown, the call will fail with status
- // NOT_FOUND.
- rpc Check(HealthCheckRequest) returns (HealthCheckResponse);
-
- // Performs a watch for the serving status of the requested service.
- // The server will immediately send back a message indicating the current
- // serving status. It will then subsequently send a new message whenever
- // the service's serving status changes.
- //
- // If the requested service is unknown when the call is received, the
- // server will send a message setting the serving status to
- // SERVICE_UNKNOWN but will *not* terminate the call. If at some
- // future point, the serving status of the service becomes known, the
- // server will send a new message with the service's serving status.
- //
- // If the call terminates with status UNIMPLEMENTED, then clients
- // should assume this method is not supported and should not retry the
- // call. If the call terminates with any other status (including OK),
- // clients should retry the call with appropriate exponential backoff.
- rpc Watch(HealthCheckRequest) returns (stream HealthCheckResponse);
-}
diff --git a/proto/grpc/lb/v1/load_balancer.proto b/proto/grpc/lb/v1/load_balancer.proto
deleted file mode 100644
index 00fc709..0000000
--- a/proto/grpc/lb/v1/load_balancer.proto
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2015 The gRPC 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.
-
-// This file defines the GRPCLB LoadBalancing protocol.
-//
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/lb/v1/load_balancer.proto
-syntax = "proto3";
-
-package grpc.lb.v1;
-
-import "google/protobuf/duration.proto";
-import "google/protobuf/timestamp.proto";
-
-option go_package = "google.golang.org/grpc/balancer/grpclb/grpc_lb_v1";
-option java_multiple_files = true;
-option java_outer_classname = "LoadBalancerProto";
-option java_package = "io.grpc.lb.v1";
-
-service LoadBalancer {
- // Bidirectional rpc to get a list of servers.
- rpc BalanceLoad(stream LoadBalanceRequest) returns (stream LoadBalanceResponse);
-}
-
-message LoadBalanceRequest {
- oneof load_balance_request_type {
- // This message should be sent on the first request to the load balancer.
- InitialLoadBalanceRequest initial_request = 1;
-
- // The client stats should be periodically reported to the load balancer
- // based on the duration defined in the InitialLoadBalanceResponse.
- ClientStats client_stats = 2;
- }
-}
-
-message InitialLoadBalanceRequest {
- // The name of the load balanced service (e.g., service.googleapis.com). Its
- // length should be less than 256 bytes.
- // The name might include a port number. How to handle the port number is up
- // to the balancer.
- string name = 1;
-}
-
-// Contains the number of calls finished for a particular load balance token.
-message ClientStatsPerToken {
- // See Server.load_balance_token.
- string load_balance_token = 1;
-
- // The total number of RPCs that finished associated with the token.
- int64 num_calls = 2;
-}
-
-// Contains client level statistics that are useful to load balancing. Each
-// count except the timestamp should be reset to zero after reporting the stats.
-message ClientStats {
- // The timestamp of generating the report.
- google.protobuf.Timestamp timestamp = 1;
-
- // The total number of RPCs that started.
- int64 num_calls_started = 2;
-
- // The total number of RPCs that finished.
- int64 num_calls_finished = 3;
-
- // The total number of RPCs that failed to reach a server except dropped RPCs.
- int64 num_calls_finished_with_client_failed_to_send = 6;
-
- // The total number of RPCs that finished and are known to have been received
- // by a server.
- int64 num_calls_finished_known_received = 7;
-
- // The list of dropped calls.
- repeated ClientStatsPerToken calls_finished_with_drop = 8;
-
- reserved 4, 5;
-}
-
-message LoadBalanceResponse {
- oneof load_balance_response_type {
- // This message should be sent on the first response to the client.
- InitialLoadBalanceResponse initial_response = 1;
-
- // Contains the list of servers selected by the load balancer. The client
- // should send requests to these servers in the specified order.
- ServerList server_list = 2;
-
- // If this field is set, then the client should eagerly enter fallback
- // mode (even if there are existing, healthy connections to backends).
- FallbackResponse fallback_response = 3;
- }
-}
-
-message FallbackResponse {}
-
-message InitialLoadBalanceResponse {
- reserved 1; // never-used load_balancer_delegate
-
- // This interval defines how often the client should send the client stats
- // to the load balancer. Stats should only be reported when the duration is
- // positive.
- google.protobuf.Duration client_stats_report_interval = 2;
-}
-
-message ServerList {
- // Contains a list of servers selected by the load balancer. The list will
- // be updated when server resolutions change or as needed to balance load
- // across more servers. The client should consume the server list in order
- // unless instructed otherwise via the client_config.
- repeated Server servers = 1;
-
- // Was google.protobuf.Duration expiration_interval.
- reserved 3;
-}
-
-// Contains server information. When the drop field is not true, use the other
-// fields.
-message Server {
- // A resolved address for the server, serialized in network-byte-order. It may
- // either be an IPv4 or IPv6 address.
- bytes ip_address = 1;
-
- // A resolved port number for the server.
- int32 port = 2;
-
- // An opaque but printable token for load reporting. The client must include
- // the token of the picked server into the initial metadata when it starts a
- // call to that server. The token is used by the server to verify the request
- // and to allow the server to report load to the gRPC LB system. The token is
- // also used in client stats for reporting dropped calls.
- //
- // Its length can be variable but must be less than 50 bytes.
- string load_balance_token = 3;
-
- // Indicates whether this particular request should be dropped by the client.
- // If the request is dropped, there will be a corresponding entry in
- // ClientStats.calls_finished_with_drop.
- bool drop = 4;
-
- reserved 5;
-}
diff --git a/proto/grpc/lb/v1/load_reporter.proto b/proto/grpc/lb/v1/load_reporter.proto
deleted file mode 100644
index 6484e01..0000000
--- a/proto/grpc/lb/v1/load_reporter.proto
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2018 gRPC 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";
-
-package grpc.lb.v1;
-
-import "google/protobuf/duration.proto";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/lb";
-
-// The LoadReporter service.
-service LoadReporter {
- // Report load from server to lb.
- rpc ReportLoad(stream LoadReportRequest)
- returns (stream LoadReportResponse) {
- };
-}
-
-message LoadReportRequest {
- // This message should be sent on the first request to the gRPC server.
- InitialLoadReportRequest initial_request = 1;
-}
-
-message InitialLoadReportRequest {
- // The hostname this load reporter client is requesting load for.
- string load_balanced_hostname = 1;
-
- // Additional information to disambiguate orphaned load: load that should have
- // gone to this load reporter client, but was not able to be sent since the
- // load reporter client has disconnected. load_key is sent in orphaned load
- // reports; see Load.load_key.
- bytes load_key = 2;
-
- // This interval defines how often the server should send load reports to
- // the load balancer.
- google.protobuf.Duration load_report_interval = 3;
-}
-
-message LoadReportResponse {
- // This message should be sent on the first response to the load balancer.
- InitialLoadReportResponse initial_response = 1;
-
- // Reports server-wide statistics for load balancing.
- // This should be reported with every response.
- LoadBalancingFeedback load_balancing_feedback = 2;
-
- // A load report for each tuple. This could be considered to be
- // a multimap indexed by . It is not strictly necessary to
- // aggregate all entries into one entry per tuple, although it
- // is preferred to do so.
- repeated Load load = 3;
-}
-
-message InitialLoadReportResponse {
- // Initial response returns the Load balancer ID. This must be plain text
- // (printable ASCII).
- string load_balancer_id = 1;
-
- enum ImplementationIdentifier {
- IMPL_UNSPECIFIED = 0;
- CPP = 1; // Standard Google C++ implementation.
- JAVA = 2; // Standard Google Java implementation.
- GO = 3; // Standard Google Go implementation.
- }
- // Optional identifier of this implementation of the load reporting server.
- ImplementationIdentifier implementation_id = 2;
-
- // Optional server_version should be a value that is modified (and
- // monotonically increased) when changes are made to the server
- // implementation.
- int64 server_version = 3;
-}
-
-message LoadBalancingFeedback {
- // Reports the current utilization of the server (typical range [0.0 - 1.0]).
- float server_utilization = 1;
-
- // The total rate of calls handled by this server (including errors).
- float calls_per_second = 2;
-
- // The total rate of error responses sent by this server.
- float errors_per_second = 3;
-}
-
-message Load {
- // The (plain text) tag used by the calls covered by this load report. The
- // tag is that part of the load balancer token after removing the load
- // balancer id. Empty is equivalent to non-existent tag.
- string load_balance_tag = 1;
-
- // The user identity authenticated by the calls covered by this load
- // report. Empty is equivalent to no known user_id.
- string user_id = 3;
-
- // IP address of the client that sent these requests, serialized in
- // network-byte-order. It may either be an IPv4 or IPv6 address.
- bytes client_ip_address = 15;
-
- // The number of calls started (since the last report) with the given tag and
- // user_id.
- int64 num_calls_started = 4;
-
- // Indicates whether this load report is an in-progress load report in which
- // num_calls_in_progress is the only valid entry. If in_progress_report is not
- // set, num_calls_in_progress will be ignored. If in_progress_report is set,
- // fields other than num_calls_in_progress and orphaned_load will be ignored.
- // TODO(juanlishen): A Load is either an in_progress_report or not. We should
- // make this explicit in hierarchy. From the log, I see in_progress_report_
- // has a random num_calls_in_progress_ when not set, which might lead to bug
- // when the balancer process the load report.
- oneof in_progress_report {
- // The number of calls in progress (instantaneously) per load balancer id.
- int64 num_calls_in_progress = 5;
- }
-
- // The following values are counts or totals of call statistics that finished
- // with the given tag and user_id.
- int64 num_calls_finished_without_error = 6; // Calls with status OK.
- int64 num_calls_finished_with_error = 7; // Calls with status non-OK.
- // Calls that finished with a status that maps to HTTP 5XX (see
- // googleapis/google/rpc/code.proto). Note that this is a subset of
- // num_calls_finished_with_error.
- int64 num_calls_finished_with_server_error = 16;
-
- // Totals are from calls that with _and_ without error.
- int64 total_bytes_sent = 8;
- int64 total_bytes_received = 9;
- google.protobuf.Duration total_latency = 10;
-
- // Optional metrics reported for the call(s). Requires that metric_name is
- // unique.
- repeated CallMetricData metric_data = 11;
-
- // The following two fields are used for reporting orphaned load: load that
- // could not be reported to the originating balancer either since the balancer
- // is no longer connected or because the frontend sent an invalid token. These
- // fields must not be set with normal (unorphaned) load reports.
- oneof orphaned_load {
- // Load_key is the load_key from the initial_request from the originating
- // balancer.
- bytes load_key = 12 [deprecated=true];
-
- // If true then this load report is for calls that had an invalid token; the
- // user is probably abusing the gRPC protocol.
- // TODO(yankaiz): Rename load_key_unknown.
- bool load_key_unknown = 13;
-
- // load_key and balancer_id are included in order to identify orphaned load
- // from different origins.
- OrphanedLoadIdentifier orphaned_load_identifier = 14;
- }
-
- reserved 2;
-}
-
-message CallMetricData {
- // Name of the metric; may be empty.
- string metric_name = 1;
-
- // Number of calls that finished and included this metric.
- int64 num_calls_finished_with_metric = 2;
-
- // Sum of metric values across all calls that finished with this metric.
- double total_metric_value = 3;
-}
-
-message OrphanedLoadIdentifier {
- // The load_key from the initial_request from the originating balancer.
- bytes load_key = 1;
-
- // The unique ID generated by LoadReporter to identify balancers. Here it
- // distinguishes orphaned load with a same load_key.
- string load_balancer_id = 2;
-}
diff --git a/proto/grpc/lookup/v1/rls.proto b/proto/grpc/lookup/v1/rls.proto
deleted file mode 100644
index 7d17352..0000000
--- a/proto/grpc/lookup/v1/rls.proto
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 The gRPC 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";
-
-package grpc.lookup.v1;
-
-option go_package = "google.golang.org/grpc/lookup/grpc_lookup_v1";
-option java_multiple_files = true;
-option java_package = "io.grpc.lookup.v1";
-option java_outer_classname = "RlsProto";
-
-message RouteLookupRequest {
- // Target type allows the client to specify what kind of target format it
- // would like from RLS to allow it to find the regional server, e.g. "grpc".
- string target_type = 3;
- // Possible reasons for making a request.
- enum Reason {
- REASON_UNKNOWN = 0; // Unused
- REASON_MISS = 1; // No data available in local cache
- REASON_STALE = 2; // Data in local cache is stale
- }
- // Reason for making this request.
- Reason reason = 5;
- // For REASON_STALE, the header_data from the stale response, if any.
- string stale_header_data = 6;
- // Map of key values extracted via key builders for the gRPC or HTTP request.
- map key_map = 4;
-
- reserved 1, 2;
- reserved "server", "path";
-}
-
-message RouteLookupResponse {
- // Prioritized list (best one first) of addressable entities to use
- // for routing, using syntax requested by the request target_type.
- // The targets will be tried in order until a healthy one is found.
- repeated string targets = 3;
- // Optional header value to pass along to AFE in the X-Google-RLS-Data header.
- // Cached with "target" and sent with all requests that match the request key.
- // Allows the RLS to pass its work product to the eventual target.
- string header_data = 2;
-
- reserved 1;
- reserved "target";
-}
-
-service RouteLookupService {
- // Lookup returns a target for a single key.
- rpc RouteLookup(RouteLookupRequest) returns (RouteLookupResponse) {}
-}
diff --git a/proto/grpc/lookup/v1/rls_config.proto b/proto/grpc/lookup/v1/rls_config.proto
deleted file mode 100644
index 9d2b6c5..0000000
--- a/proto/grpc/lookup/v1/rls_config.proto
+++ /dev/null
@@ -1,225 +0,0 @@
-// Copyright 2020 The gRPC 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";
-
-package grpc.lookup.v1;
-
-import "google/protobuf/duration.proto";
-
-option go_package = "google.golang.org/grpc/lookup/grpc_lookup_v1";
-option java_multiple_files = true;
-option java_package = "io.grpc.lookup.v1";
-option java_outer_classname = "RlsConfigProto";
-
-// Extract a key based on a given name (e.g. header name or query parameter
-// name). The name must match one of the names listed in the "name" field. If
-// the "required_match" field is true, one of the specified names must be
-// present for the keybuilder to match.
-message NameMatcher {
- // The name that will be used in the RLS key_map to refer to this value.
- // If required_match is true, you may omit this field or set it to an empty
- // string, in which case the matcher will require a match, but won't update
- // the key_map.
- string key = 1;
-
- // Ordered list of names (headers or query parameter names) that can supply
- // this value; the first one with a non-empty value is used.
- repeated string names = 2;
-
- // If true, make this extraction required; the key builder will not match
- // if no value is found.
- bool required_match = 3;
-}
-
-// A GrpcKeyBuilder applies to a given gRPC service, name, and headers.
-message GrpcKeyBuilder {
- // To match, one of the given Name fields must match; the service and method
- // fields are specified as fixed strings. The service name is required and
- // includes the proto package name. The method name may be omitted, in
- // which case any method on the given service is matched.
- message Name {
- string service = 1;
- string method = 2;
- }
- repeated Name names = 1;
-
- // If you wish to include the host, service, or method names as keys in the
- // generated RouteLookupRequest, specify key names to use in the extra_keys
- // submessage. If a key name is empty, no key will be set for that value.
- // If this submessage is specified, the normal host/path fields will be left
- // unset in the RouteLookupRequest. We are deprecating host/path in the
- // RouteLookupRequest, so services should migrate to the ExtraKeys approach.
- message ExtraKeys {
- string host = 1;
- string service = 2;
- string method = 3;
- }
- ExtraKeys extra_keys = 3;
-
- // Extract keys from all listed headers.
- // For gRPC, it is an error to specify "required_match" on the NameMatcher
- // protos.
- repeated NameMatcher headers = 2;
-
- // You can optionally set one or more specific key/value pairs to be added to
- // the key_map. This can be useful to identify which builder built the key,
- // for example if you are suppressing the actual method, but need to
- // separately cache and request all the matched methods.
- map constant_keys = 4;
-}
-
-// An HttpKeyBuilder applies to a given HTTP URL and headers.
-//
-// Path and host patterns use the matching syntax from gRPC transcoding to
-// extract named key/value pairs from the path and host components of the URL:
-// https://github.com/googleapis/googleapis/blob/master/google/api/http.proto
-//
-// It is invalid to specify the same key name in multiple places in a pattern.
-//
-// For a service where the project id can be expressed either as a subdomain or
-// in the path, separate HttpKeyBuilders must be used:
-// host_pattern: 'example.com' path_pattern: '/{id}/{object}/**'
-// host_pattern: '{id}.example.com' path_pattern: '/{object}/**'
-// If the host is exactly 'example.com', the first path segment will be used as
-// the id and the second segment as the object. If the host has a subdomain, the
-// subdomain will be used as the id and the first segment as the object. If
-// neither pattern matches, no keys will be extracted.
-message HttpKeyBuilder {
- // host_pattern is an ordered list of host template patterns for the desired
- // value. If any host_pattern values are specified, then at least one must
- // match, and the last one wins and sets any specified variables. A host
- // consists of labels separated by dots. Each label is matched against the
- // label in the pattern as follows:
- // - "*": Matches any single label.
- // - "**": Matches zero or more labels (first or last part of host only).
- // - "{=...}": One or more label capture, where "..." can be any
- // template that does not include a capture.
- // - "{}": A single label capture. Identical to {=*}.
- //
- // Examples:
- // - "example.com": Only applies to the exact host example.com.
- // - "*.example.com": Matches subdomains of example.com.
- // - "**.example.com": matches example.com, and all levels of subdomains.
- // - "{project}.example.com": Extracts the third level subdomain.
- // - "{project=**}.example.com": Extracts the third level+ subdomains.
- // - "{project=**}": Extracts the entire host.
- repeated string host_patterns = 1;
-
- // path_pattern is an ordered list of path template patterns for the desired
- // value. If any path_pattern values are specified, then at least one must
- // match, and the last one wins and sets any specified variables. A path
- // consists of segments separated by slashes. Each segment is matched against
- // the segment in the pattern as follows:
- // - "*": Matches any single segment.
- // - "**": Matches zero or more segments (first or last part of path only).
- // - "{=...}": One or more segment capture, where "..." can be any
- // template that does not include a capture.
- // - "{}": A single segment capture. Identical to {=*}.
- // A custom method may also be specified by appending ":" and the custom
- // method name or "*" to indicate any custom method (including no custom
- // method). For example, "/*/projects/{project_id}/**:*" extracts
- // `{project_id}` for any version, resource and custom method that includes
- // it. By default, any custom method will be matched.
- //
- // Examples:
- // - "/v1/{name=messages/*}": extracts a name like "messages/12345".
- // - "/v1/messages/{message_id}": extracts a message_id like "12345".
- // - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
- repeated string path_patterns = 2;
-
- // List of query parameter names to try to match.
- // For example: ["parent", "name", "resource.name"]
- // We extract all the specified query_parameters (case-sensitively). If any
- // are marked as "required_match" and are not present, this keybuilder fails
- // to match. If a given parameter appears multiple times (?foo=a&foo=b) we
- // will report it as a comma-separated string (foo=a,b).
- repeated NameMatcher query_parameters = 3;
-
- // List of headers to try to match.
- // We extract all the specified header values (case-insensitively). If any
- // are marked as "required_match" and are not present, this keybuilder fails
- // to match. If a given header appears multiple times in the request we will
- // report it as a comma-separated string, in standard HTTP fashion.
- repeated NameMatcher headers = 4;
-
- // You can optionally set one or more specific key/value pairs to be added to
- // the key_map. This can be useful to identify which builder built the key,
- // for example if you are suppressing a lot of information from the URL, but
- // need to separately cache and request URLs with that content.
- map constant_keys = 5;
-}
-
-message RouteLookupConfig {
- // Ordered specifications for constructing keys for HTTP requests. Last
- // match wins. If no HttpKeyBuilder matches, an empty key_map will be sent to
- // the lookup service; it should likely reply with a global default route
- // and raise an alert.
- repeated HttpKeyBuilder http_keybuilders = 1;
-
- // Unordered specifications for constructing keys for gRPC requests. All
- // GrpcKeyBuilders on this list must have unique "name" fields so that the
- // client is free to prebuild a hash map keyed by name. If no GrpcKeyBuilder
- // matches, an empty key_map will be sent to the lookup service; it should
- // likely reply with a global default route and raise an alert.
- repeated GrpcKeyBuilder grpc_keybuilders = 2;
-
- // The name of the lookup service as a gRPC URI. Typically, this will be
- // a subdomain of the target, such as "lookup.datastore.googleapis.com".
- string lookup_service = 3;
-
- // Configure a timeout value for lookup service requests.
- // Defaults to 10 seconds if not specified.
- google.protobuf.Duration lookup_service_timeout = 4;
-
- // How long are responses valid for (like HTTP Cache-Control).
- // If omitted or zero, the longest valid cache time is used.
- // This value is clamped to 5 minutes to avoid unflushable bad responses.
- google.protobuf.Duration max_age = 5;
-
- // After a response has been in the client cache for this amount of time
- // and is re-requested, start an asynchronous RPC to re-validate it.
- // This value should be less than max_age by at least the length of a
- // typical RTT to the Route Lookup Service to fully mask the RTT latency.
- // If omitted, keys are only re-requested after they have expired.
- google.protobuf.Duration stale_age = 6;
-
- // Rough indicator of amount of memory to use for the client cache. Some of
- // the data structure overhead is not accounted for, so actual memory consumed
- // will be somewhat greater than this value. If this field is omitted or set
- // to zero, a client default will be used. The value may be capped to a lower
- // amount based on client configuration.
- int64 cache_size_bytes = 7;
-
- // This is a list of all the possible targets that can be returned by the
- // lookup service. If a target not on this list is returned, it will be
- // treated the same as an unhealthy target.
- repeated string valid_targets = 8;
-
- // This value provides a default target to use if needed. If set, it will be
- // used if RLS returns an error, times out, or returns an invalid response.
- // Note that requests can be routed only to a subdomain of the original
- // target, e.g. "us_east_1.cloudbigtable.googleapis.com".
- string default_target = 9;
-
- reserved 10;
- reserved "request_processing_strategy";
-}
-
-// RouteLookupClusterSpecifier is used in xDS to represent a cluster specifier
-// plugin for RLS.
-message RouteLookupClusterSpecifier {
- // The RLS config for this cluster specifier plugin instance.
- RouteLookupConfig route_lookup_config = 1;
-}
diff --git a/proto/grpc/reflection/v1/reflection.proto b/proto/grpc/reflection/v1/reflection.proto
deleted file mode 100644
index 1a2ceed..0000000
--- a/proto/grpc/reflection/v1/reflection.proto
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2016 The gRPC 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.
-
-// Service exported by server reflection. A more complete description of how
-// server reflection works can be found at
-// https://github.com/grpc/grpc/blob/master/doc/server-reflection.md
-//
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/reflection/v1/reflection.proto
-
-syntax = "proto3";
-
-package grpc.reflection.v1;
-
-option go_package = "google.golang.org/grpc/reflection/grpc_reflection_v1";
-option java_multiple_files = true;
-option java_package = "io.grpc.reflection.v1";
-option java_outer_classname = "ServerReflectionProto";
-
-service ServerReflection {
- // The reflection service is structured as a bidirectional stream, ensuring
- // all related requests go to a single server.
- rpc ServerReflectionInfo(stream ServerReflectionRequest)
- returns (stream ServerReflectionResponse);
-}
-
-// The message sent by the client when calling ServerReflectionInfo method.
-message ServerReflectionRequest {
- string host = 1;
- // To use reflection service, the client should set one of the following
- // fields in message_request. The server distinguishes requests by their
- // defined field and then handles them using corresponding methods.
- oneof message_request {
- // Find a proto file by the file name.
- string file_by_filename = 3;
-
- // Find the proto file that declares the given fully-qualified symbol name.
- // This field should be a fully-qualified symbol name
- // (e.g. .[.] or .).
- string file_containing_symbol = 4;
-
- // Find the proto file which defines an extension extending the given
- // message type with the given field number.
- ExtensionRequest file_containing_extension = 5;
-
- // Finds the tag numbers used by all known extensions of the given message
- // type, and appends them to ExtensionNumberResponse in an undefined order.
- // Its corresponding method is best-effort: it's not guaranteed that the
- // reflection service will implement this method, and it's not guaranteed
- // that this method will provide all extensions. Returns
- // StatusCode::UNIMPLEMENTED if it's not implemented.
- // This field should be a fully-qualified type name. The format is
- // .
- string all_extension_numbers_of_type = 6;
-
- // List the full names of registered services. The content will not be
- // checked.
- string list_services = 7;
- }
-}
-
-// The type name and extension number sent by the client when requesting
-// file_containing_extension.
-message ExtensionRequest {
- // Fully-qualified type name. The format should be .
- string containing_type = 1;
- int32 extension_number = 2;
-}
-
-// The message sent by the server to answer ServerReflectionInfo method.
-message ServerReflectionResponse {
- string valid_host = 1;
- ServerReflectionRequest original_request = 2;
- // The server sets one of the following fields according to the message_request
- // in the request.
- oneof message_response {
- // This message is used to answer file_by_filename, file_containing_symbol,
- // file_containing_extension requests with transitive dependencies.
- // As the repeated label is not allowed in oneof fields, we use a
- // FileDescriptorResponse message to encapsulate the repeated fields.
- // The reflection service is allowed to avoid sending FileDescriptorProtos
- // that were previously sent in response to earlier requests in the stream.
- FileDescriptorResponse file_descriptor_response = 4;
-
- // This message is used to answer all_extension_numbers_of_type requests.
- ExtensionNumberResponse all_extension_numbers_response = 5;
-
- // This message is used to answer list_services requests.
- ListServiceResponse list_services_response = 6;
-
- // This message is used when an error occurs.
- ErrorResponse error_response = 7;
- }
-}
-
-// Serialized FileDescriptorProto messages sent by the server answering
-// a file_by_filename, file_containing_symbol, or file_containing_extension
-// request.
-message FileDescriptorResponse {
- // Serialized FileDescriptorProto messages. We avoid taking a dependency on
- // descriptor.proto, which uses proto2 only features, by making them opaque
- // bytes instead.
- repeated bytes file_descriptor_proto = 1;
-}
-
-// A list of extension numbers sent by the server answering
-// all_extension_numbers_of_type request.
-message ExtensionNumberResponse {
- // Full name of the base type, including the package name. The format
- // is .
- string base_type_name = 1;
- repeated int32 extension_number = 2;
-}
-
-// A list of ServiceResponse sent by the server answering list_services request.
-message ListServiceResponse {
- // The information of each service may be expanded in the future, so we use
- // ServiceResponse message to encapsulate it.
- repeated ServiceResponse service = 1;
-}
-
-// The information of a single service used by ListServiceResponse to answer
-// list_services request.
-message ServiceResponse {
- // Full name of a registered service, including its package name. The format
- // is .
- string name = 1;
-}
-
-// The error code and error message sent by the server when an error occurs.
-message ErrorResponse {
- // This field uses the error codes defined in grpc::StatusCode.
- int32 error_code = 1;
- string error_message = 2;
-}
-
diff --git a/proto/grpc/service_config/service_config.proto b/proto/grpc/service_config/service_config.proto
deleted file mode 100644
index 5fdd78e..0000000
--- a/proto/grpc/service_config/service_config.proto
+++ /dev/null
@@ -1,692 +0,0 @@
-// Copyright 2016 The gRPC 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.
-
-// A ServiceConfig is supplied when a service is deployed. It mostly contains
-// parameters for how clients that connect to the service should behave (for
-// example, the load balancing policy to use to pick between service replicas).
-//
-// The configuration options provided here act as overrides to automatically
-// chosen option values. Service owners should be conservative in specifying
-// options as the system is likely to choose better values for these options in
-// the vast majority of cases. In other words, please specify a configuration
-// option only if you really have to, and avoid copy-paste inclusion of configs.
-//
-// Note that gRPC uses the service config in JSON form, not in protobuf
-// form. This proto definition is intended to help document the schema but
-// will not actually be used directly by gRPC.
-
-syntax = "proto3";
-
-package grpc.service_config;
-
-import "google/protobuf/duration.proto";
-import "google/protobuf/struct.proto";
-import "google/protobuf/wrappers.proto";
-import "google/rpc/code.proto";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-option java_package = "io.grpc.serviceconfig";
-option java_multiple_files = true;
-option java_outer_classname = "ServiceConfigProto";
-
-// Configuration for a method.
-message MethodConfig {
- // The names of the methods to which this configuration applies.
- // - MethodConfig without names (empty list) will be skipped.
- // - Each name entry must be unique across the entire ServiceConfig.
- // - If the 'method' field is empty, this MethodConfig specifies the defaults
- // for all methods for the specified service.
- // - If the 'service' field is empty, the 'method' field must be empty, and
- // this MethodConfig specifies the default for all methods (it's the default
- // config).
- //
- // When determining which MethodConfig to use for a given RPC, the most
- // specific match wins. For example, let's say that the service config
- // contains the following MethodConfig entries:
- //
- // method_config { name { } ... }
- // method_config { name { service: "MyService" } ... }
- // method_config { name { service: "MyService" method: "Foo" } ... }
- //
- // MyService/Foo will use the third entry, because it exactly matches the
- // service and method name. MyService/Bar will use the second entry, because
- // it provides the default for all methods of MyService. AnotherService/Baz
- // will use the first entry, because it doesn't match the other two.
- //
- // In JSON representation, value "", value `null`, and not present are the
- // same. The following are the same Name:
- // - { "service": "s" }
- // - { "service": "s", "method": null }
- // - { "service": "s", "method": "" }
- message Name {
- string service = 1; // Required. Includes proto package name.
- string method = 2;
- }
- repeated Name name = 1;
-
- // Whether RPCs sent to this method should wait until the connection is
- // ready by default. If false, the RPC will abort immediately if there is
- // a transient failure connecting to the server. Otherwise, gRPC will
- // attempt to connect until the deadline is exceeded.
- //
- // The value specified via the gRPC client API will override the value
- // set here. However, note that setting the value in the client API will
- // also affect transient errors encountered during name resolution, which
- // cannot be caught by the value here, since the service config is
- // obtained by the gRPC client via name resolution.
- google.protobuf.BoolValue wait_for_ready = 2;
-
- // The default timeout in seconds for RPCs sent to this method. This can be
- // overridden in code. If no reply is received in the specified amount of
- // time, the request is aborted and a DEADLINE_EXCEEDED error status
- // is returned to the caller.
- //
- // The actual deadline used will be the minimum of the value specified here
- // and the value set by the application via the gRPC client API. If either
- // one is not set, then the other will be used. If neither is set, then the
- // request has no deadline.
- google.protobuf.Duration timeout = 3;
-
- // The maximum allowed payload size for an individual request or object in a
- // stream (client->server) in bytes. The size which is measured is the
- // serialized payload after per-message compression (but before stream
- // compression) in bytes. This applies both to streaming and non-streaming
- // requests.
- //
- // The actual value used is the minimum of the value specified here and the
- // value set by the application via the gRPC client API. If either one is
- // not set, then the other will be used. If neither is set, then the
- // built-in default is used.
- //
- // If a client attempts to send an object larger than this value, it will not
- // be sent and the client will see a ClientError.
- // Note that 0 is a valid value, meaning that the request message
- // must be empty.
- google.protobuf.UInt32Value max_request_message_bytes = 4;
-
- // The maximum allowed payload size for an individual response or object in a
- // stream (server->client) in bytes. The size which is measured is the
- // serialized payload after per-message compression (but before stream
- // compression) in bytes. This applies both to streaming and non-streaming
- // requests.
- //
- // The actual value used is the minimum of the value specified here and the
- // value set by the application via the gRPC client API. If either one is
- // not set, then the other will be used. If neither is set, then the
- // built-in default is used.
- //
- // If a server attempts to send an object larger than this value, it will not
- // be sent, and a ServerError will be sent to the client instead.
- // Note that 0 is a valid value, meaning that the response message
- // must be empty.
- google.protobuf.UInt32Value max_response_message_bytes = 5;
-
- // The retry policy for outgoing RPCs.
- message RetryPolicy {
- // The maximum number of RPC attempts, including the original attempt.
- //
- // This field is required and must be greater than 1.
- // Any value greater than 5 will be treated as if it were 5.
- uint32 max_attempts = 1;
-
- // Exponential backoff parameters. The initial retry attempt will occur at
- // random(0, initial_backoff). In general, the nth attempt will occur at
- // random(0,
- // min(initial_backoff*backoff_multiplier**(n-1), max_backoff)).
- // Required. Must be greater than zero.
- google.protobuf.Duration initial_backoff = 2;
- // Required. Must be greater than zero.
- google.protobuf.Duration max_backoff = 3;
- float backoff_multiplier = 4; // Required. Must be greater than zero.
-
- // The set of status codes which may be retried.
- //
- // This field is required and must be non-empty.
- repeated google.rpc.Code retryable_status_codes = 5;
- }
-
- // The hedging policy for outgoing RPCs. Hedged RPCs may execute more than
- // once on the server, so only idempotent methods should specify a hedging
- // policy.
- message HedgingPolicy {
- // The hedging policy will send up to max_requests RPCs.
- // This number represents the total number of all attempts, including
- // the original attempt.
- //
- // This field is required and must be greater than 1.
- // Any value greater than 5 will be treated as if it were 5.
- uint32 max_attempts = 1;
-
- // The first RPC will be sent immediately, but the max_requests-1 subsequent
- // hedged RPCs will be sent at intervals of every hedging_delay. Set this
- // to 0 to immediately send all max_requests RPCs.
- google.protobuf.Duration hedging_delay = 2;
-
- // The set of status codes which indicate other hedged RPCs may still
- // succeed. If a non-fatal status code is returned by the server, hedged
- // RPCs will continue. Otherwise, outstanding requests will be canceled and
- // the error returned to the client application layer.
- //
- // This field is optional.
- repeated google.rpc.Code non_fatal_status_codes = 3;
- }
-
- // Only one of retry_policy or hedging_policy may be set. If neither is set,
- // RPCs will not be retried or hedged.
- oneof retry_or_hedging_policy {
- RetryPolicy retry_policy = 6;
- HedgingPolicy hedging_policy = 7;
- }
-}
-
-// Configuration for pick_first LB policy.
-message PickFirstConfig {}
-
-// Configuration for round_robin LB policy.
-message RoundRobinConfig {}
-
-// Configuration for outlier_detection LB policy
-message OutlierDetectionLoadBalancingConfig {
- // The time interval between ejection analysis sweeps. This can result in
- // both new ejections as well as addresses being returned to service. Defaults
- // to 10000ms or 10s.
- google.protobuf.Duration interval = 1;
-
- // The base time that as address is ejected for. The real time is equal to the
- // base time multiplied by the number of times the address has been ejected.
- // Defaults to 30000ms or 30s.
- google.protobuf.Duration base_ejection_time = 2;
-
- // The maximum time that an address is ejected for. If not specified, the default value (300000ms or 300s) or
- // the base_ejection_time value is applied, whatever is larger.
- google.protobuf.Duration max_ejection_time = 3;
-
- // The maximum % of an address list that can be ejected due to outlier
- // detection. Defaults to 10% but will eject at least one address regardless of the value.
- google.protobuf.UInt32Value max_ejection_percent = 4;
-
- // Parameters for the success rate ejection algorithm.
- // This algorithm monitors the request success rate for all endpoints and
- // ejects individual endpoints whose success rates are statistical outliers.
- message SuccessRateEjection {
- // This factor is used to determine the ejection threshold for success rate
- // outlier ejection. The ejection threshold is the difference between the
- // mean success rate, and the product of this factor and the standard
- // deviation of the mean success rate: mean - (stdev *
- // success_rate_stdev_factor). This factor is divided by a thousand to get a
- // double. That is, if the desired factor is 1.9, the runtime value should
- // be 1900. Defaults to 1900.
- google.protobuf.UInt32Value stdev_factor = 1;
-
- // The % chance that an address will be actually ejected when an outlier status
- // is detected through success rate statistics. This setting can be used to
- // disable ejection or to ramp it up slowly. Defaults to 100.
- google.protobuf.UInt32Value enforcement_percentage = 2;
-
- // The number of addresses that must have enough request volume to
- // detect success rate outliers. If the number of addresses is less than this
- // setting, outlier detection via success rate statistics is not performed
- // for any addresses. Defaults to 5.
- google.protobuf.UInt32Value minimum_hosts = 3;
-
- // The minimum number of total requests that must be collected in one
- // interval (as defined by the interval duration above) to include this address
- // in success rate based outlier detection. If the volume is lower than this
- // setting, outlier detection via success rate statistics is not performed
- // for that address. Defaults to 100.
- google.protobuf.UInt32Value request_volume = 4;
- }
-
- // Parameters for the failure percentage algorithm.
- // This algorithm ejects individual endpoints whose failure rate is greater than
- // some threshold, independently of any other endpoint.
- message FailurePercentageEjection {
- // The failure percentage to use when determining failure percentage-based outlier detection. If
- // the failure percentage of a given address is greater than or equal to this value, it will be
- // ejected. Defaults to 85.
- google.protobuf.UInt32Value threshold = 1;
-
- // The % chance that an address will be actually ejected when an outlier status is detected through
- // failure percentage statistics. This setting can be used to disable ejection or to ramp it up
- // slowly. Defaults to 100.
- google.protobuf.UInt32Value enforcement_percentage = 2;
-
- // The minimum number of addresses in order to perform failure percentage-based ejection.
- // If the total number of addresses is less than this value, failure percentage-based
- // ejection will not be performed. Defaults to 5.
- google.protobuf.UInt32Value minimum_hosts = 3;
-
- // The minimum number of total requests that must be collected in one interval (as defined by the
- // interval duration above) to perform failure percentage-based ejection for this address. If the
- // volume is lower than this setting, failure percentage-based ejection will not be performed for
- // this host. Defaults to 50.
- google.protobuf.UInt32Value request_volume = 4;
- }
-
- // If set, success rate ejections will be performed
- SuccessRateEjection success_rate_ejection = 5;
-
- // If set, failure rate ejections will be performed
- FailurePercentageEjection failure_percentage_ejection = 6;
-
- // The config for the child policy
- repeated LoadBalancingConfig child_policy = 13;
-}
-
-// Configuration for grpclb LB policy.
-message GrpcLbConfig {
- // Optional. What LB policy to use for routing between the backend
- // addresses. If unset, defaults to round_robin.
- // Currently, the only supported values are round_robin and pick_first.
- // Note that this will be used both in balancer mode and in fallback mode.
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support.
- repeated LoadBalancingConfig child_policy = 1;
- // Optional. If specified, overrides the name of the service to be sent to
- // the balancer.
- string service_name = 2;
- // Optional. The timeout in seconds for receiving the server list from the LB
- // server. Defaults to 10s.
- google.protobuf.Duration initial_fallback_timeout = 3;
-}
-
-// Configuration for priority LB policy.
-message PriorityLoadBalancingPolicyConfig {
- // A map of name to child policy configuration.
- // The names are used to allow the priority policy to update
- // existing child policies instead of creating new ones every
- // time it receives a config update.
- message Child {
- repeated LoadBalancingConfig config = 1;
-
- // If true, will ignore reresolution requests from this child.
- bool ignore_reresolution_requests = 2;
- }
- map children = 1;
-
- // A list of child names in decreasing priority order
- // (i.e., first element is the highest priority).
- repeated string priorities = 2;
-}
-
-// Configuration for weighted_target LB policy.
-message WeightedTargetLoadBalancingPolicyConfig {
- message Target {
- uint32 weight = 1;
- repeated LoadBalancingConfig child_policy = 2;
- }
- map targets = 1;
-}
-
-// Configuration for xds_cluster_manager_experimental LB policy.
-message XdsClusterManagerLoadBalancingPolicyConfig {
- message Child {
- repeated LoadBalancingConfig child_policy = 1;
- }
- map children = 1;
-}
-
-// Configuration for the cds LB policy.
-message CdsConfig {
- string cluster = 1; // Required.
-}
-
-// Represents an xDS server.
-message XdsServer {
- string server_uri = 1 [json_name = "server_uri"]; // Required.
-
- message ChannelCredentials {
- string type = 1; // Required.
- google.protobuf.Struct config = 2; // Optional JSON config.
- }
- // A list of channel creds to use. The first supported type will be used.
- repeated ChannelCredentials channel_creds = 2 [json_name = "channel_creds"];
-
- // A repeated list of server features.
- repeated google.protobuf.Value server_features = 3
- [json_name = "server_features"];
-}
-
-// Configuration for xds_cluster_resolver LB policy.
-message XdsClusterResolverLoadBalancingPolicyConfig {
- // Describes a discovery mechanism instance.
- // For EDS or LOGICAL_DNS clusters, there will be exactly one
- // DiscoveryMechanism, which will describe the cluster of the parent
- // CDS policy.
- // For aggregate clusters, there will be one DiscoveryMechanism for each
- // underlying cluster.
- message DiscoveryMechanism {
- // Cluster name.
- string cluster = 1;
-
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // If set to the empty string, load reporting will be sent to the same
- // server that we obtained CDS data from.
- // DEPRECATED: Use new lrs_load_reporting_server field instead.
- google.protobuf.StringValue lrs_load_reporting_server_name = 2
- [deprecated=true];
-
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // Supercedes lrs_load_reporting_server_name field.
- XdsServer lrs_load_reporting_server = 7;
-
- // Maximum number of outstanding requests can be made to the upstream
- // cluster. Default is 1024.
- google.protobuf.UInt32Value max_concurrent_requests = 3;
-
- enum Type {
- UNKNOWN = 0;
- EDS = 1;
- LOGICAL_DNS = 2;
- };
- Type type = 4;
-
- // For type EDS only.
- // EDS service name, as returned in CDS.
- // May be unset if not specified in CDS.
- string eds_service_name = 5;
-
- // For type LOGICAL_DNS only.
- // DNS name to resolve in "host:port" form.
- string dns_hostname = 6;
-
- // The configuration for outlier_detection child policies
- // Within this message, the child_policy field will be ignored
- OutlierDetectionLoadBalancingConfig outlier_detection = 8;
- }
-
- // Ordered list of discovery mechanisms.
- // Must have at least one element.
- // Results from each discovery mechanism are concatenated together in
- // successive priorities.
- repeated DiscoveryMechanism discovery_mechanisms = 1;
-
- // xDS LB policy.
- // This represents the xDS LB policy, which does not necessarily map
- // one-to-one to a gRPC LB policy. Currently, the following policies
- // are supported:
- // - "ROUND_ROBIN" (config is empty)
- // - "RING_HASH" (config is a RingHashLoadBalancingConfig)
- repeated LoadBalancingConfig xds_lb_policy = 2;
-}
-
-// Configuration for xds_cluster_impl LB policy.
-message XdsClusterImplLoadBalancingPolicyConfig {
- // Cluster name. Required.
- string cluster = 1;
-
- // EDS service name.
- // Not set if cluster is not an EDS cluster or if it does not
- // specify an EDS service name.
- string eds_service_name = 2;
-
- // Server to send load reports to.
- // If unset, no load reporting is done.
- // If set to empty string, load reporting will be sent to the same
- // server as we are getting xds data from.
- // DEPRECATED: Use new lrs_load_reporting_server field instead.
- google.protobuf.StringValue lrs_load_reporting_server_name = 3
- [deprecated=true];
-
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // Supercedes lrs_load_reporting_server_name field.
- XdsServer lrs_load_reporting_server = 7;
-
- // Maximum number of outstanding requests can be made to the upstream cluster.
- // Default is 1024.
- google.protobuf.UInt32Value max_concurrent_requests = 4;
-
- // Drop configuration.
- message DropCategory {
- string category = 1;
- uint32 requests_per_million = 2;
- }
- repeated DropCategory drop_categories = 5;
-
- // Child policy.
- repeated LoadBalancingConfig child_policy = 6;
-}
-
-// Configuration for eds LB policy.
-message EdsLoadBalancingPolicyConfig {
- // Cluster name. Required.
- string cluster = 1;
-
- // EDS service name, as returned in CDS.
- // May be unset if not specified in CDS.
- string eds_service_name = 2;
-
- // Server to send load reports to.
- // If unset, no load reporting is done.
- // If set to empty string, load reporting will be sent to the same
- // server as we are getting xds data from.
- google.protobuf.StringValue lrs_load_reporting_server_name = 3;
-
- // Locality-picking policy.
- // This policy's config is expected to be in the format used
- // by the weighted_target policy. Note that the config should include
- // an empty value for the "targets" field; that empty value will be
- // replaced by one that is dynamically generated based on the EDS data.
- // Optional; defaults to "weighted_target".
- repeated LoadBalancingConfig locality_picking_policy = 4;
-
- // Endpoint-picking policy.
- // This will be configured as the policy for each child in the
- // locality-policy's config.
- // Optional; defaults to "round_robin".
- repeated LoadBalancingConfig endpoint_picking_policy = 5;
-}
-
-// Configuration for ring_hash LB policy.
-message RingHashLoadBalancingConfig {
- uint64 min_ring_size = 1;
- uint64 max_ring_size = 2;
-}
-
-// Configuration for lrs LB policy.
-message LrsLoadBalancingPolicyConfig {
- // Cluster name. Required.
- string cluster_name = 1;
-
- // EDS service name, as returned in CDS.
- // May be unset if not specified in CDS.
- string eds_service_name = 2;
-
- // Server to send load reports to. Required.
- // If set to empty string, load reporting will be sent to the same
- // server as we are getting xds data from.
- string lrs_load_reporting_server_name = 3;
-
- // The locality for which this policy will report load. Required.
- message Locality {
- string region = 1;
- string zone = 2;
- string subzone = 3;
- }
- Locality locality = 4;
-
- // Endpoint-picking policy.
- repeated LoadBalancingConfig child_policy = 5;
-}
-
-// Configuration for xds LB policy.
-message XdsConfig {
- // Name of balancer to connect to.
- string balancer_name = 1 [deprecated = true];
- // Optional. What LB policy to use for intra-locality routing.
- // If unset, will use whatever algorithm is specified by the balancer.
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support.
- repeated LoadBalancingConfig child_policy = 2;
- // Optional. What LB policy to use in fallback mode. If not
- // specified, defaults to round_robin.
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support.
- repeated LoadBalancingConfig fallback_policy = 3;
- // Optional. Name to use in EDS query. If not present, defaults to
- // the server name from the target URI.
- string eds_service_name = 4;
- // LRS server to send load reports to.
- // If not present, load reporting will be disabled.
- // If set to the empty string, load reporting will be sent to the same
- // server that we obtained CDS data from.
- google.protobuf.StringValue lrs_load_reporting_server_name = 5;
-}
-
-// Selects LB policy and provides corresponding configuration.
-//
-// In general, all instances of this field should be repeated. Clients will
-// iterate through the list in order and stop at the first policy that they
-// support. This allows the service config to specify custom policies that may
-// not be known to all clients.
-//
-// - If the config for the first supported policy is invalid, the whole service
-// config is invalid.
-// - If the list doesn't contain any supported policy, the whole service config
-// is invalid.
-message LoadBalancingConfig {
- // Exactly one LB policy may be configured.
- oneof policy {
- // For each new LB policy supported by gRPC, a new field must be added
- // here. The field's name must be the LB policy name and its type is a
- // message that provides whatever configuration parameters are needed
- // by the LB policy. The configuration message will be passed to the
- // LB policy when it is instantiated on the client.
- //
- // If the LB policy does not require any configuration parameters, the
- // message for that LB policy may be empty.
- //
- // Note that if an LB policy contains another nested LB policy
- // (e.g., a gslb policy picks the cluster and then delegates to
- // a round_robin policy to pick the backend within that cluster), its
- // configuration message may include a nested instance of the
- // LoadBalancingConfig message to configure the nested LB policy.
-
- PickFirstConfig pick_first = 4 [json_name = "pick_first"];
-
- RoundRobinConfig round_robin = 1 [json_name = "round_robin"];
-
- OutlierDetectionLoadBalancingConfig outlier_detection = 15 [json_name = "outlier_detection"];
-
- // gRPC lookaside load balancing.
- // This will eventually be deprecated by the new xDS-based local
- // balancing policy.
- GrpcLbConfig grpclb = 3;
-
- // REMAINING POLICIES ARE EXPERIMENTAL -- DO NOT USE
-
- PriorityLoadBalancingPolicyConfig priority_experimental = 9
- [json_name = "priority_experimental"];
- WeightedTargetLoadBalancingPolicyConfig weighted_target_experimental = 10
- [json_name = "weighted_target_experimental"];
-
- // xDS-based load balancing.
- XdsClusterManagerLoadBalancingPolicyConfig xds_cluster_manager_experimental
- = 14 [json_name = "xds_cluster_manager_experimental"];
- CdsConfig cds_experimental = 6 [json_name = "cds_experimental"];
- XdsClusterResolverLoadBalancingPolicyConfig
- xds_cluster_resolver_experimental = 11
- [json_name = "xds_cluster_resolver_experimental"];
- XdsClusterImplLoadBalancingPolicyConfig xds_cluster_impl_experimental = 12
- [json_name = "xds_cluster_impl_experimental"];
- RingHashLoadBalancingConfig ring_hash_experimental = 13
- [json_name = "ring_hash_experimental"];
-
- // Deprecated xDS-related policies.
- LrsLoadBalancingPolicyConfig lrs_experimental = 8
- [json_name = "lrs_experimental", deprecated = true];
- EdsLoadBalancingPolicyConfig eds_experimental = 7
- [json_name = "eds_experimental", deprecated = true];
- XdsConfig xds = 2 [deprecated = true];
- XdsConfig xds_experimental = 5 [json_name = "xds_experimental",
- deprecated = true];
-
- // Next available ID: 16
- }
-}
-
-// A ServiceConfig represents information about a service but is not specific to
-// any name resolver.
-message ServiceConfig {
- // Load balancing policy.
- //
- // Note that load_balancing_policy is deprecated in favor of
- // load_balancing_config; the former will be used only if the latter
- // is unset.
- //
- // If no LB policy is configured here, then the default is pick_first.
- // If the policy name is set via the client API, that value overrides
- // the value specified here.
- //
- // If the deprecated load_balancing_policy field is used, note that if the
- // resolver returns at least one balancer address (as opposed to backend
- // addresses), gRPC will use grpclb (see
- // https://github.com/grpc/grpc/blob/master/doc/load-balancing.md),
- // regardless of what policy is configured here. However, if the resolver
- // returns at least one backend address in addition to the balancer
- // address(es), the client may fall back to the requested policy if it
- // is unable to reach any of the grpclb load balancers.
- enum LoadBalancingPolicy {
- UNSPECIFIED = 0;
- ROUND_ROBIN = 1;
- }
- LoadBalancingPolicy load_balancing_policy = 1 [deprecated = true];
- // Multiple LB policies can be specified; clients will iterate through
- // the list in order and stop at the first policy that they support. If none
- // are supported, the service config is considered invalid.
- repeated LoadBalancingConfig load_balancing_config = 4;
-
- // Per-method configuration.
- repeated MethodConfig method_config = 2;
-
- // If a RetryThrottlingPolicy is provided, gRPC will automatically throttle
- // retry attempts and hedged RPCs when the client's ratio of failures to
- // successes exceeds a threshold.
- //
- // For each server name, the gRPC client will maintain a token_count which is
- // initially set to max_tokens. Every outgoing RPC (regardless of service or
- // method invoked) will change token_count as follows:
- //
- // - Every failed RPC will decrement the token_count by 1.
- // - Every successful RPC will increment the token_count by token_ratio.
- //
- // If token_count is less than or equal to max_tokens / 2, then RPCs will not
- // be retried and hedged RPCs will not be sent.
- message RetryThrottlingPolicy {
- // The number of tokens starts at max_tokens. The token_count will always be
- // between 0 and max_tokens.
- //
- // This field is required and must be greater than zero.
- uint32 max_tokens = 1;
-
- // The amount of tokens to add on each successful RPC. Typically this will
- // be some number between 0 and 1, e.g., 0.1.
- //
- // This field is required and must be greater than zero. Up to 3 decimal
- // places are supported.
- float token_ratio = 2;
- }
- RetryThrottlingPolicy retry_throttling = 3;
-
- message HealthCheckConfig {
- // Service name to use in the health-checking request.
- google.protobuf.StringValue service_name = 1;
- }
- HealthCheckConfig health_check_config = 5;
-
- // next available tag: 6
-}
diff --git a/proto/grpc/testing/benchmark_service.proto b/proto/grpc/testing/benchmark_service.proto
deleted file mode 100644
index cf9601e..0000000
--- a/proto/grpc/testing/benchmark_service.proto
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-syntax = "proto3";
-
-import "grpc/testing/messages.proto";
-
-package grpc.testing;
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-option java_multiple_files = true;
-option java_package = "io.grpc.testing";
-option java_outer_classname = "BenchmarkServiceProto";
-
-service BenchmarkService {
- // One request followed by one response.
- // The server returns the client payload as-is.
- rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
-
- // Repeated sequence of one request followed by one response.
- // Should be called streaming ping-pong
- // The server returns the client payload as-is on each response
- rpc StreamingCall(stream SimpleRequest) returns (stream SimpleResponse);
-
- // Single-sided unbounded streaming from client to server
- // The server returns the client payload as-is once the client does WritesDone
- rpc StreamingFromClient(stream SimpleRequest) returns (SimpleResponse);
-
- // Single-sided unbounded streaming from server to client
- // The server repeatedly returns the client payload as-is
- rpc StreamingFromServer(SimpleRequest) returns (stream SimpleResponse);
-
- // Two-sided unbounded streaming between server to client
- // Both sides send the content of their own choice to the other
- rpc StreamingBothWays(stream SimpleRequest) returns (stream SimpleResponse);
-}
diff --git a/proto/grpc/testing/control.proto b/proto/grpc/testing/control.proto
deleted file mode 100644
index 2373839..0000000
--- a/proto/grpc/testing/control.proto
+++ /dev/null
@@ -1,294 +0,0 @@
-// Copyright 2015 gRPC 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";
-
-import "grpc/testing/payloads.proto";
-import "grpc/testing/stats.proto";
-
-package grpc.testing;
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-option java_multiple_files = true;
-option java_package = "io.grpc.testing";
-option java_outer_classname = "ControlProto";
-
-enum ClientType {
- // Many languages support a basic distinction between using
- // sync or async client, and this allows the specification
- SYNC_CLIENT = 0;
- ASYNC_CLIENT = 1;
- OTHER_CLIENT = 2; // used for some language-specific variants
- CALLBACK_CLIENT = 3;
-}
-
-enum ServerType {
- SYNC_SERVER = 0;
- ASYNC_SERVER = 1;
- ASYNC_GENERIC_SERVER = 2;
- OTHER_SERVER = 3; // used for some language-specific variants
- CALLBACK_SERVER = 4;
-}
-
-enum RpcType {
- UNARY = 0;
- STREAMING = 1;
- STREAMING_FROM_CLIENT = 2;
- STREAMING_FROM_SERVER = 3;
- STREAMING_BOTH_WAYS = 4;
-}
-
-// Parameters of poisson process distribution, which is a good representation
-// of activity coming in from independent identical stationary sources.
-message PoissonParams {
- // The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
- double offered_load = 1;
-}
-
-// Once an RPC finishes, immediately start a new one.
-// No configuration parameters needed.
-message ClosedLoopParams {}
-
-message LoadParams {
- oneof load {
- ClosedLoopParams closed_loop = 1;
- PoissonParams poisson = 2;
- };
-}
-
-// presence of SecurityParams implies use of TLS
-message SecurityParams {
- bool use_test_ca = 1;
- string server_host_override = 2;
- string cred_type = 3;
-}
-
-message ChannelArg {
- string name = 1;
- oneof value {
- string str_value = 2;
- int32 int_value = 3;
- }
-}
-
-message ClientConfig {
- // List of targets to connect to. At least one target needs to be specified.
- repeated string server_targets = 1;
- ClientType client_type = 2;
- SecurityParams security_params = 3;
- // How many concurrent RPCs to start for each channel.
- // For synchronous client, use a separate thread for each outstanding RPC.
- int32 outstanding_rpcs_per_channel = 4;
- // Number of independent client channels to create.
- // i-th channel will connect to server_target[i % server_targets.size()]
- int32 client_channels = 5;
- // Only for async client. Number of threads to use to start/manage RPCs.
- int32 async_client_threads = 7;
- RpcType rpc_type = 8;
- // The requested load for the entire client (aggregated over all the threads).
- LoadParams load_params = 10;
- PayloadConfig payload_config = 11;
- HistogramParams histogram_params = 12;
-
- // Specify the cores we should run the client on, if desired
- repeated int32 core_list = 13;
- int32 core_limit = 14;
-
- // If we use an OTHER_CLIENT client_type, this string gives more detail
- string other_client_api = 15;
-
- repeated ChannelArg channel_args = 16;
-
- // Number of threads that share each completion queue
- int32 threads_per_cq = 17;
-
- // Number of messages on a stream before it gets finished/restarted
- int32 messages_per_stream = 18;
-
- // Use coalescing API when possible.
- bool use_coalesce_api = 19;
-
- // If 0, disabled. Else, specifies the period between gathering latency
- // medians in milliseconds.
- int32 median_latency_collection_interval_millis = 20;
-
- // Number of client processes. 0 indicates no restriction.
- int32 client_processes = 21;
-}
-
-message ClientStatus { ClientStats stats = 1; }
-
-// Request current stats
-message Mark {
- // if true, the stats will be reset after taking their snapshot.
- bool reset = 1;
-}
-
-message ClientArgs {
- oneof argtype {
- ClientConfig setup = 1;
- Mark mark = 2;
- }
-}
-
-message ServerConfig {
- ServerType server_type = 1;
- SecurityParams security_params = 2;
- // Port on which to listen. Zero means pick unused port.
- int32 port = 4;
- // Only for async server. Number of threads used to serve the requests.
- int32 async_server_threads = 7;
- // Specify the number of cores to limit server to, if desired
- int32 core_limit = 8;
- // payload config, used in generic server.
- // Note this must NOT be used in proto (non-generic) servers. For proto servers,
- // 'response sizes' must be configured from the 'response_size' field of the
- // 'SimpleRequest' objects in RPC requests.
- PayloadConfig payload_config = 9;
-
- // Specify the cores we should run the server on, if desired
- repeated int32 core_list = 10;
-
- // If we use an OTHER_SERVER client_type, this string gives more detail
- string other_server_api = 11;
-
- // Number of threads that share each completion queue
- int32 threads_per_cq = 12;
-
- // c++-only options (for now) --------------------------------
-
- // Buffer pool size (no buffer pool specified if unset)
- int32 resource_quota_size = 1001;
- repeated ChannelArg channel_args = 1002;
-
- // Number of server processes. 0 indicates no restriction.
- int32 server_processes = 21;
-}
-
-message ServerArgs {
- oneof argtype {
- ServerConfig setup = 1;
- Mark mark = 2;
- }
-}
-
-message ServerStatus {
- ServerStats stats = 1;
- // the port bound by the server
- int32 port = 2;
- // Number of cores available to the server
- int32 cores = 3;
-}
-
-message CoreRequest {
-}
-
-message CoreResponse {
- // Number of cores available on the server
- int32 cores = 1;
-}
-
-message Void {
-}
-
-// A single performance scenario: input to qps_json_driver
-message Scenario {
- // Human readable name for this scenario
- string name = 1;
- // Client configuration
- ClientConfig client_config = 2;
- // Number of clients to start for the test
- int32 num_clients = 3;
- // Server configuration
- ServerConfig server_config = 4;
- // Number of servers to start for the test
- int32 num_servers = 5;
- // Warmup period, in seconds
- int32 warmup_seconds = 6;
- // Benchmark time, in seconds
- int32 benchmark_seconds = 7;
- // Number of workers to spawn locally (usually zero)
- int32 spawn_local_worker_count = 8;
-}
-
-// A set of scenarios to be run with qps_json_driver
-message Scenarios {
- repeated Scenario scenarios = 1;
-}
-
-// Basic summary that can be computed from ClientStats and ServerStats
-// once the scenario has finished.
-message ScenarioResultSummary
-{
- // Total number of operations per second over all clients. What is counted as 1 'operation' depends on the benchmark scenarios:
- // For unary benchmarks, an operation is processing of a single unary RPC.
- // For streaming benchmarks, an operation is processing of a single ping pong of request and response.
- double qps = 1;
- // QPS per server core.
- double qps_per_server_core = 2;
- // The total server cpu load based on system time across all server processes, expressed as percentage of a single cpu core.
- // For example, 85 implies 85% of a cpu core, 125 implies 125% of a cpu core. Since we are accumulating the cpu load across all the server
- // processes, the value could > 100 when there are multiple servers or a single server using multiple threads and cores.
- // Same explanation for the total client cpu load below.
- double server_system_time = 3;
- // The total server cpu load based on user time across all server processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
- double server_user_time = 4;
- // The total client cpu load based on system time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
- double client_system_time = 5;
- // The total client cpu load based on user time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
- double client_user_time = 6;
-
- // X% latency percentiles (in nanoseconds)
- double latency_50 = 7;
- double latency_90 = 8;
- double latency_95 = 9;
- double latency_99 = 10;
- double latency_999 = 11;
-
- // server cpu usage percentage
- double server_cpu_usage = 12;
-
- // Number of requests that succeeded/failed
- double successful_requests_per_second = 13;
- double failed_requests_per_second = 14;
-
- // Number of polls called inside completion queue per request
- double client_polls_per_request = 15;
- double server_polls_per_request = 16;
-
- // Queries per CPU-sec over all servers or clients
- double server_queries_per_cpu_sec = 17;
- double client_queries_per_cpu_sec = 18;
-}
-
-// Results of a single benchmark scenario.
-message ScenarioResult {
- // Inputs used to run the scenario.
- Scenario scenario = 1;
- // Histograms from all clients merged into one histogram.
- HistogramData latencies = 2;
- // Client stats for each client
- repeated ClientStats client_stats = 3;
- // Server stats for each server
- repeated ServerStats server_stats = 4;
- // Number of cores available to each server
- repeated int32 server_cores = 5;
- // An after-the-fact computed summary
- ScenarioResultSummary summary = 6;
- // Information on success or failure of each worker
- repeated bool client_success = 7;
- repeated bool server_success = 8;
- // Number of failed requests (one row per status code seen)
- repeated RequestResultCount request_results = 9;
-}
diff --git a/proto/grpc/testing/empty.proto b/proto/grpc/testing/empty.proto
deleted file mode 100644
index 4feecd5..0000000
--- a/proto/grpc/testing/empty.proto
+++ /dev/null
@@ -1,32 +0,0 @@
-
-// Copyright 2015 gRPC 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";
-
-package grpc.testing;
-
-option java_package = "io.grpc.testing.integration";
-option java_outer_classname = "EmptyProtos";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-// An empty message that you can re-use to avoid defining duplicated empty
-// messages in your project. A typical example is to use it as argument or the
-// return value of a service API. For instance:
-//
-// service Foo {
-// rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
-// };
-//
-message Empty {}
diff --git a/proto/grpc/testing/messages.proto b/proto/grpc/testing/messages.proto
deleted file mode 100644
index 0590b0a..0000000
--- a/proto/grpc/testing/messages.proto
+++ /dev/null
@@ -1,273 +0,0 @@
-
-// Copyright 2015-2016 gRPC 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.
-
-// Message definitions to be used by integration test service definitions.
-
-syntax = "proto3";
-
-package grpc.testing;
-
-option java_package = "io.grpc.testing.integration";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-// TODO(dgq): Go back to using well-known types once
-// https://github.com/grpc/grpc/issues/6980 has been fixed.
-// import "google/protobuf/wrappers.proto";
-message BoolValue {
- // The bool value.
- bool value = 1;
-}
-
-// The type of payload that should be returned.
-enum PayloadType {
- // Compressable text format.
- COMPRESSABLE = 0;
-}
-
-// A block of data, to simply increase gRPC message size.
-message Payload {
- // The type of data in body.
- PayloadType type = 1;
- // Primary contents of payload.
- bytes body = 2;
-}
-
-// A protobuf representation for grpc status. This is used by test
-// clients to specify a status that the server should attempt to return.
-message EchoStatus {
- int32 code = 1;
- string message = 2;
-}
-
-// The type of route that a client took to reach a server w.r.t. gRPCLB.
-// The server must fill in "fallback" if it detects that the RPC reached
-// the server via the "gRPCLB fallback" path, and "backend" if it detects
-// that the RPC reached the server via "gRPCLB backend" path (i.e. if it got
-// the address of this server from the gRPCLB server BalanceLoad RPC). Exactly
-// how this detection is done is context and server dependent.
-enum GrpclbRouteType {
- // Server didn't detect the route that a client took to reach it.
- GRPCLB_ROUTE_TYPE_UNKNOWN = 0;
- // Indicates that a client reached a server via gRPCLB fallback.
- GRPCLB_ROUTE_TYPE_FALLBACK = 1;
- // Indicates that a client reached a server as a gRPCLB-given backend.
- GRPCLB_ROUTE_TYPE_BACKEND = 2;
-}
-
-// Unary request.
-message SimpleRequest {
- // Desired payload type in the response from the server.
- // If response_type is RANDOM, server randomly chooses one from other formats.
- PayloadType response_type = 1;
-
- // Desired payload size in the response from the server.
- int32 response_size = 2;
-
- // Optional input payload sent along with the request.
- Payload payload = 3;
-
- // Whether SimpleResponse should include username.
- bool fill_username = 4;
-
- // Whether SimpleResponse should include OAuth scope.
- bool fill_oauth_scope = 5;
-
- // Whether to request the server to compress the response. This field is
- // "nullable" in order to interoperate seamlessly with clients not able to
- // implement the full compression tests by introspecting the call to verify
- // the response's compression status.
- BoolValue response_compressed = 6;
-
- // Whether server should return a given status
- EchoStatus response_status = 7;
-
- // Whether the server should expect this request to be compressed.
- BoolValue expect_compressed = 8;
-
- // Whether SimpleResponse should include server_id.
- bool fill_server_id = 9;
-
- // Whether SimpleResponse should include grpclb_route_type.
- bool fill_grpclb_route_type = 10;
-}
-
-// Unary response, as configured by the request.
-message SimpleResponse {
- // Payload to increase message size.
- Payload payload = 1;
- // The user the request came from, for verifying authentication was
- // successful when the client expected it.
- string username = 2;
- // OAuth scope.
- string oauth_scope = 3;
-
- // Server ID. This must be unique among different server instances,
- // but the same across all RPC's made to a particular server instance.
- string server_id = 4;
- // gRPCLB Path.
- GrpclbRouteType grpclb_route_type = 5;
-
- // Server hostname.
- string hostname = 6;
-}
-
-// Client-streaming request.
-message StreamingInputCallRequest {
- // Optional input payload sent along with the request.
- Payload payload = 1;
-
- // Whether the server should expect this request to be compressed. This field
- // is "nullable" in order to interoperate seamlessly with servers not able to
- // implement the full compression tests by introspecting the call to verify
- // the request's compression status.
- BoolValue expect_compressed = 2;
-
- // Not expecting any payload from the response.
-}
-
-// Client-streaming response.
-message StreamingInputCallResponse {
- // Aggregated size of payloads received from the client.
- int32 aggregated_payload_size = 1;
-}
-
-// Configuration for a particular response.
-message ResponseParameters {
- // Desired payload sizes in responses from the server.
- int32 size = 1;
-
- // Desired interval between consecutive responses in the response stream in
- // microseconds.
- int32 interval_us = 2;
-
- // Whether to request the server to compress the response. This field is
- // "nullable" in order to interoperate seamlessly with clients not able to
- // implement the full compression tests by introspecting the call to verify
- // the response's compression status.
- BoolValue compressed = 3;
-}
-
-// Server-streaming request.
-message StreamingOutputCallRequest {
- // Desired payload type in the response from the server.
- // If response_type is RANDOM, the payload from each response in the stream
- // might be of different types. This is to simulate a mixed type of payload
- // stream.
- PayloadType response_type = 1;
-
- // Configuration for each expected response message.
- repeated ResponseParameters response_parameters = 2;
-
- // Optional input payload sent along with the request.
- Payload payload = 3;
-
- // Whether server should return a given status
- EchoStatus response_status = 7;
-}
-
-// Server-streaming response, as configured by the request and parameters.
-message StreamingOutputCallResponse {
- // Payload to increase response size.
- Payload payload = 1;
-}
-
-// For reconnect interop test only.
-// Client tells server what reconnection parameters it used.
-message ReconnectParams {
- int32 max_reconnect_backoff_ms = 1;
-}
-
-// For reconnect interop test only.
-// Server tells client whether its reconnects are following the spec and the
-// reconnect backoffs it saw.
-message ReconnectInfo {
- bool passed = 1;
- repeated int32 backoff_ms = 2;
-}
-
-message LoadBalancerStatsRequest {
- // Request stats for the next num_rpcs sent by client.
- int32 num_rpcs = 1;
- // If num_rpcs have not completed within timeout_sec, return partial results.
- int32 timeout_sec = 2;
-}
-
-message LoadBalancerStatsResponse {
- message RpcsByPeer {
- // The number of completed RPCs for each peer.
- map rpcs_by_peer = 1;
- }
- // The number of completed RPCs for each peer.
- map rpcs_by_peer = 1;
- // The number of RPCs that failed to record a remote peer.
- int32 num_failures = 2;
- map rpcs_by_method = 3;
-}
-
-// Request for retrieving a test client's accumulated stats.
-message LoadBalancerAccumulatedStatsRequest {}
-
-// Accumulated stats for RPCs sent by a test client.
-message LoadBalancerAccumulatedStatsResponse {
- // The total number of RPCs have ever issued for each type.
- // Deprecated: use stats_per_method.rpcs_started instead.
- map num_rpcs_started_by_method = 1 [deprecated = true];
- // The total number of RPCs have ever completed successfully for each type.
- // Deprecated: use stats_per_method.result instead.
- map num_rpcs_succeeded_by_method = 2 [deprecated = true];
- // The total number of RPCs have ever failed for each type.
- // Deprecated: use stats_per_method.result instead.
- map num_rpcs_failed_by_method = 3 [deprecated = true];
-
- message MethodStats {
- // The number of RPCs that were started for this method.
- int32 rpcs_started = 1;
-
- // The number of RPCs that completed with each status for this method. The
- // key is the integral value of a google.rpc.Code; the value is the count.
- map result = 2;
- }
-
- // Per-method RPC statistics. The key is the RpcType in string form; e.g.
- // 'EMPTY_CALL' or 'UNARY_CALL'
- map stats_per_method = 4;
-}
-
-// Configurations for a test client.
-message ClientConfigureRequest {
- // Type of RPCs to send.
- enum RpcType {
- EMPTY_CALL = 0;
- UNARY_CALL = 1;
- }
-
- // Metadata to be attached for the given type of RPCs.
- message Metadata {
- RpcType type = 1;
- string key = 2;
- string value = 3;
- }
-
- // The types of RPCs the client sends.
- repeated RpcType types = 1;
- // The collection of custom metadata to be attached to RPCs sent by the client.
- repeated Metadata metadata = 2;
- // The deadline to use, in seconds, for all RPCs. If unset or zero, the
- // client will use the default from the command-line.
- int32 timeout_sec = 3;
-}
-
-// Response for updating a test client's configuration.
-message ClientConfigureResponse {}
diff --git a/proto/grpc/testing/payloads.proto b/proto/grpc/testing/payloads.proto
deleted file mode 100644
index 6ac9b2d..0000000
--- a/proto/grpc/testing/payloads.proto
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2015 gRPC 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";
-
-package grpc.testing;
-
-option java_multiple_files = true;
-option java_package = "io.grpc.testing";
-option java_outer_classname = "PayloadsProto";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-message ByteBufferParams {
- int32 req_size = 1;
- int32 resp_size = 2;
-}
-
-message SimpleProtoParams {
- int32 req_size = 1;
- int32 resp_size = 2;
-}
-
-message ComplexProtoParams {
- // TODO (vpai): Fill this in once the details of complex, representative
- // protos are decided
-}
-
-message PayloadConfig {
- oneof payload {
- ByteBufferParams bytebuf_params = 1;
- SimpleProtoParams simple_params = 2;
- ComplexProtoParams complex_params = 3;
- }
-}
diff --git a/proto/grpc/testing/report_qps_scenario_service.proto b/proto/grpc/testing/report_qps_scenario_service.proto
deleted file mode 100644
index 564d273..0000000
--- a/proto/grpc/testing/report_qps_scenario_service.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-syntax = "proto3";
-
-import "grpc/testing/control.proto";
-
-package grpc.testing;
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-option java_multiple_files = true;
-option java_package = "io.grpc.testing";
-option java_outer_classname = "ReportQpsScenarioServiceProto";
-
-service ReportQpsScenarioService {
- // Report results of a QPS test benchmark scenario.
- rpc ReportScenario(ScenarioResult) returns (Void);
-}
diff --git a/proto/grpc/testing/stats.proto b/proto/grpc/testing/stats.proto
deleted file mode 100644
index bbab8fb..0000000
--- a/proto/grpc/testing/stats.proto
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2015 gRPC 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";
-
-package grpc.testing;
-
-import "grpc/core/stats.proto";
-
-option java_multiple_files = true;
-option java_package = "io.grpc.testing";
-option java_outer_classname = "StatsProto";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-message ServerStats {
- // wall clock time change in seconds since last reset
- double time_elapsed = 1;
-
- // change in user time (in seconds) used by the server since last reset
- double time_user = 2;
-
- // change in server time (in seconds) used by the server process and all
- // threads since last reset
- double time_system = 3;
-
- // change in total cpu time of the server (data from proc/stat)
- uint64 total_cpu_time = 4;
-
- // change in idle time of the server (data from proc/stat)
- uint64 idle_cpu_time = 5;
-
- // Number of polls called inside completion queue
- uint64 cq_poll_count = 6;
-
- // Core library stats
- grpc.core.Stats core_stats = 7;
-}
-
-// Histogram params based on grpc/support/histogram.c
-message HistogramParams {
- double resolution = 1; // first bucket is [0, 1 + resolution)
- double max_possible = 2; // use enough buckets to allow this value
-}
-
-// Histogram data based on grpc/support/histogram.c
-message HistogramData {
- repeated uint32 bucket = 1;
- double min_seen = 2;
- double max_seen = 3;
- double sum = 4;
- double sum_of_squares = 5;
- double count = 6;
-}
-
-message RequestResultCount {
- int32 status_code = 1;
- int64 count = 2;
-}
-
-message ClientStats {
- // Latency histogram. Data points are in nanoseconds.
- HistogramData latencies = 1;
-
- // See ServerStats for details.
- double time_elapsed = 2;
- double time_user = 3;
- double time_system = 4;
-
- // Number of failed requests (one row per status code seen)
- repeated RequestResultCount request_results = 5;
-
- // Number of polls called inside completion queue
- uint64 cq_poll_count = 6;
-
- // Core library stats
- grpc.core.Stats core_stats = 7;
-}
diff --git a/proto/grpc/testing/test.proto b/proto/grpc/testing/test.proto
deleted file mode 100644
index 1b4c912..0000000
--- a/proto/grpc/testing/test.proto
+++ /dev/null
@@ -1,105 +0,0 @@
-
-// Copyright 2015-2016 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-
-syntax = "proto3";
-
-import "grpc/testing/empty.proto";
-import "grpc/testing/messages.proto";
-
-package grpc.testing;
-
-option java_package = "io.grpc.testing.integration";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-// A simple service to test the various types of RPCs and experiment with
-// performance with various types of payload.
-service TestService {
- // One empty request followed by one empty response.
- rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
-
- // One request followed by one response.
- rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
-
- // One request followed by one response. Response has cache control
- // headers set such that a caching HTTP proxy (such as GFE) can
- // satisfy subsequent requests.
- rpc CacheableUnaryCall(SimpleRequest) returns (SimpleResponse);
-
- // One request followed by a sequence of responses (streamed download).
- // The server returns the payload with client desired type and sizes.
- rpc StreamingOutputCall(StreamingOutputCallRequest)
- returns (stream StreamingOutputCallResponse);
-
- // A sequence of requests followed by one response (streamed upload).
- // The server returns the aggregated size of client payload as the result.
- rpc StreamingInputCall(stream StreamingInputCallRequest)
- returns (StreamingInputCallResponse);
-
- // A sequence of requests with each request served by the server immediately.
- // As one request could lead to multiple responses, this interface
- // demonstrates the idea of full duplexing.
- rpc FullDuplexCall(stream StreamingOutputCallRequest)
- returns (stream StreamingOutputCallResponse);
-
- // A sequence of requests followed by a sequence of responses.
- // The server buffers all the client requests and then serves them in order. A
- // stream of responses are returned to the client when the server starts with
- // first request.
- rpc HalfDuplexCall(stream StreamingOutputCallRequest)
- returns (stream StreamingOutputCallResponse);
-
- // The test server will not implement this method. It will be used
- // to test the behavior when clients call unimplemented methods.
- rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty);
-}
-
-// A simple service NOT implemented at servers so clients can test for
-// that case.
-service UnimplementedService {
- // A call that no server should implement
- rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty);
-}
-
-// A service used to control reconnect server.
-service ReconnectService {
- rpc Start(grpc.testing.ReconnectParams) returns (grpc.testing.Empty);
- rpc Stop(grpc.testing.Empty) returns (grpc.testing.ReconnectInfo);
-}
-
-// A service used to obtain stats for verifying LB behavior.
-service LoadBalancerStatsService {
- // Gets the backend distribution for RPCs sent by a test client.
- rpc GetClientStats(LoadBalancerStatsRequest)
- returns (LoadBalancerStatsResponse) {}
-
- // Gets the accumulated stats for RPCs sent by a test client.
- rpc GetClientAccumulatedStats(LoadBalancerAccumulatedStatsRequest)
- returns (LoadBalancerAccumulatedStatsResponse) {}
-}
-
-// A service to remotely control health status of an xDS test server.
-service XdsUpdateHealthService {
- rpc SetServing(grpc.testing.Empty) returns (grpc.testing.Empty);
- rpc SetNotServing(grpc.testing.Empty) returns (grpc.testing.Empty);
-}
-
-// A service to dynamically update the configuration of an xDS test client.
-service XdsUpdateClientConfigureService {
- // Update the tes client's configuration.
- rpc Configure(ClientConfigureRequest) returns (ClientConfigureResponse);
-}
diff --git a/proto/grpc/testing/worker_service.proto b/proto/grpc/testing/worker_service.proto
deleted file mode 100644
index 6b9b70b..0000000
--- a/proto/grpc/testing/worker_service.proto
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2015 gRPC 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.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-syntax = "proto3";
-
-import "grpc/testing/control.proto";
-
-package grpc.testing;
-
-option java_multiple_files = true;
-option java_package = "io.grpc.testing";
-option java_outer_classname = "WorkerServiceProto";
-option go_package="github.com/costinm/grpc-mesh/proto/grpc/testing";
-
-service WorkerService {
- // Start server with specified workload.
- // First request sent specifies the ServerConfig followed by ServerStatus
- // response. After that, a "Mark" can be sent anytime to request the latest
- // stats. Closing the stream will initiate shutdown of the test server
- // and once the shutdown has finished, the OK status is sent to terminate
- // this RPC.
- rpc RunServer(stream ServerArgs) returns (stream ServerStatus);
-
- // Start client with specified workload.
- // First request sent specifies the ClientConfig followed by ClientStatus
- // response. After that, a "Mark" can be sent anytime to request the latest
- // stats. Closing the stream will initiate shutdown of the test client
- // and once the shutdown has finished, the OK status is sent to terminate
- // this RPC.
- rpc RunClient(stream ClientArgs) returns (stream ClientStatus);
-
- // Just return the core count - unary call
- rpc CoreCount(CoreRequest) returns (CoreResponse);
-
- // Quit this worker
- rpc QuitWorker(Void) returns (Void);
-}
diff --git a/proto/hbone/hbone.proto b/proto/hbone/hbone.proto
deleted file mode 100644
index b645c6f..0000000
--- a/proto/hbone/hbone.proto
+++ /dev/null
@@ -1,24 +0,0 @@
-syntax = "proto3";
-
-package hbone;
-
-option go_package="github.com/costinm/ugate/gen/proto/hbone";
-
-// WIP: using gRPC stack for TCP-over-HTTP/2.
-// This avoids the server-CLOSE problem and allows using the GRPC XDS integration
-// and all the other features. It might have a small performance cost due to
-// the extra framing and copy - needs to be evaluated.
-
-
-message Frame {
- bytes data = 1;
- uint32 status = 2;
-}
-
-// Experimental Stream service, to use with gRPC proxyless infrastructure and to handle
-// TCP plain-text 'server close' issues with some stacks.
-// It will be an alternate TCP transport - still H2 and mTLS based, but with additional framing.
-service Stream {
- rpc StreamAggregatedResources(stream Frame) returns (stream Frame) {}
-}
-
diff --git a/proto/istio/v1/auth/ca.proto b/proto/istio/v1/auth/ca.proto
deleted file mode 100644
index b229c34..0000000
--- a/proto/istio/v1/auth/ca.proto
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright Istio 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";
-
-// Keep this package for backward compatibility.
-package istio.v1.auth;
-
-option go_package = "github.com/costinm/ugate/gen/proto/istio/v1/auth";
-
-// Certificate request message. The authentication should be based on:
-// 1. Bearer tokens carried in the side channel;
-// 2. Client-side certificate via Mutual TLS handshake.
-// Note: the service implementation is REQUIRED to verify the authenticated caller is authorize to
-// all SANs in the CSR. The server side may overwrite any requested certificate field based on its
-// policies.
-message IstioCertificateRequest {
- // PEM-encoded certificate request.
- // The public key in the CSR is used to generate the certificate,
- // and other fields in the generated certificate may be overwritten by the CA.
- string csr = 1;
- // Optional: requested certificate validity period, in seconds.
- int64 validity_duration = 3;
-
- // $hide_from_docs
- // Optional: Opaque metadata provided by the XDS node to Istio.
- // Supported metadata: WorkloadName, WorkloadIP, ClusterID
- Struct metadata = 4;
-}
-
-// Certificate response message.
-message IstioCertificateResponse {
- // PEM-encoded certificate chain.
- // The leaf cert is the first element, and the root cert is the last element.
- repeated string cert_chain = 1;
-}
-
-// Service for managing certificates issued by the CA.
-service IstioCertificateService {
- // Using provided CSR, returns a signed certificate.
- rpc CreateCertificate(IstioCertificateRequest)
- returns (IstioCertificateResponse) {
- }
-}
-
-// Duplicated to avoid dependnecy to struct.proto
-// `Struct` represents a structured data value, consisting of fields
-// which map to dynamically typed values. In some languages, `Struct`
-// might be supported by a native representation. For example, in
-// scripting languages like JS a struct is represented as an
-// object. The details of that representation are described together
-// with the proto support for the language.
-//
-// The JSON representation for `Struct` is JSON object.
-message Struct {
- // Unordered map of dynamically typed values.
- map fields = 1;
-}
-
-// `Value` represents a dynamically typed value which can be either
-// null, a number, a string, a boolean, a recursive struct value, or a
-// list of values. A producer of value is expected to set one of that
-// variants, absence of any variant indicates an error.
-//
-// The JSON representation for `Value` is JSON value.
-message Value {
- // The kind of value.
- oneof kind {
- // Represents a null value.
- NullValue null_value = 1;
- // Represents a double value.
- double number_value = 2;
- // Represents a string value.
- string string_value = 3;
- // Represents a boolean value.
- bool bool_value = 4;
- // Represents a structured value.
- Struct struct_value = 5;
- // Represents a repeated `Value`.
- ListValue list_value = 6;
- }
-}
-
-// `NullValue` is a singleton enumeration to represent the null value for the
-// `Value` type union.
-//
-// The JSON representation for `NullValue` is JSON `null`.
-enum NullValue {
- // Null value.
- NULL_VALUE = 0;
-}
-
-// `ListValue` is a wrapper around a repeated field of values.
-//
-// The JSON representation for `ListValue` is JSON array.
-message ListValue {
- // Repeated field of dynamically typed values.
- repeated Value values = 1;
-}
diff --git a/proto/konectivity.proto b/proto/konectivity.proto
deleted file mode 100644
index a7c9bb5..0000000
--- a/proto/konectivity.proto
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright The Kubernetes 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";
-
-// https://raw.githubusercontent.com/kubernetes-sigs/apiserver-network-proxy/master/konnectivity-client/proto/client/client.proto
-// It does not use a package !
-
-// Retransmit?
-// Sliding windows?
-
-//option go_package = "sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client";
-option go_package = "github.com/costinm/ugate/gen/proto";
-
-service ProxyService {
- rpc Proxy(stream Packet) returns (stream Packet) {}
-}
-
-// From: https://github.com/kubernetes-sigs/apiserver-network-proxy/blob/master/proto/agent/agent.proto
-// This is used over UDS.
-service AgentService {
- // Agent Identifier?
- rpc Connect(stream Packet) returns (stream Packet) {}
-}
-
-enum PacketType {
- DIAL_REQ = 0;
- DIAL_RSP = 1;
- CLOSE_REQ = 2;
- CLOSE_RSP = 3;
- DATA = 4;
- DIAL_CLS = 5;
-}
-
-enum Error {
- EOF = 0;
- // ...
-}
-
-message Packet {
- PacketType type = 1;
-
- oneof payload {
- DialRequest dialRequest = 2;
- DialResponse dialResponse = 3;
- Data data = 4;
- CloseRequest closeRequest = 5;
- CloseResponse closeResponse = 6;
- CloseDial closeDial = 7;
- }
-}
-
-message DialRequest {
- // tcp or udp?
- string protocol = 1;
-
- // node:port
- string address = 2;
-
- // random id for client, maybe should be longer
- int64 random = 3;
-}
-
-message DialResponse {
- // error failed reason; enum?
- string error = 1;
-
- // connectID indicates the identifier of the connection
- int64 connectID = 2;
-
- // random copied from DialRequest
- int64 random = 3;
-}
-
-message CloseRequest {
- // connectID of the stream to close
- int64 connectID = 1;
-}
-
-message CloseResponse {
- // error message
- string error = 1;
-
- // connectID indicates the identifier of the connection
- int64 connectID = 2;
-}
-
-message CloseDial {
- // random id of the DialRequest
- int64 random = 1;
-}
-
-message Data {
- // connectID to connect to
- int64 connectID = 1;
-
- // error message if error happens
- string error = 2;
-
- // stream data
- bytes data = 3;
-}
diff --git a/proto/networking/v1beta1/destination_rule.proto b/proto/networking/v1beta1/destination_rule.proto
deleted file mode 100644
index c9f97e4..0000000
--- a/proto/networking/v1beta1/destination_rule.proto
+++ /dev/null
@@ -1,1125 +0,0 @@
-// Copyright 2020 Istio 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";
-
-import "google/api/field_behavior.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/wrappers.proto";
-import "networking/v1beta1/virtual_service.proto";
-
-// $schema: istio.networking.v1beta1.DestinationRule
-// $title: Destination Rule
-// $description: Configuration affecting load balancing, outlier detection, etc.
-// $location: https://istio.io/docs/reference/config/networking/destination-rule.html
-// $aliases: [/docs/reference/config/networking/v1beta1/destination-rule]
-// $mode: none
-
-// `DestinationRule` defines policies that apply to traffic intended for a
-// service after routing has occurred. These rules specify configuration
-// for load balancing, connection pool size from the sidecar, and outlier
-// detection settings to detect and evict unhealthy hosts from the load
-// balancing pool. For example, a simple load balancing policy for the
-// ratings service would look as follows:
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// ```
-// {{}}
-// {{}}
-//
-// Version specific policies can be specified by defining a named
-// `subset` and overriding the settings specified at the service level. The
-// following rule uses a round robin load balancing policy for all traffic
-// going to a subset named testversion that is composed of endpoints (e.g.,
-// pods) with labels (version:v3).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-// **Note:** Policies specified for subsets will not take effect until
-// a route rule explicitly sends traffic to this subset.
-//
-// Traffic policies can be customized to specific ports as well. The
-// following rule uses the least connection load balancing policy for all
-// traffic to port 80, while uses a round robin load balancing setting for
-// traffic to the port 9080.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings-port
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy: # Apply to all ports
-// portLevelSettings:
-// - port:
-// number: 80
-// loadBalancer:
-// simple: LEAST_CONN
-// - port:
-// number: 9080
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings-port
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy: # Apply to all ports
-// portLevelSettings:
-// - port:
-// number: 80
-// loadBalancer:
-// simple: LEAST_CONN
-// - port:
-// number: 9080
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-package istio.networking.v1beta1;
-
-option go_package = "istio.io/api/networking/v1beta1";
-
-// DestinationRule defines policies that apply to traffic intended for a service
-// after routing has occurred.
-//
-//
-//
-//
-//
-message DestinationRule {
- // The name of a service from the service registry. Service
- // names are looked up from the platform's service registry (e.g.,
- // Kubernetes services, Consul services, etc.) and from the hosts
- // declared by [ServiceEntries](https://istio.io/docs/reference/config/networking/service-entry/#ServiceEntry). Rules defined for
- // services that do not exist in the service registry will be ignored.
- //
- // *Note for Kubernetes users*: When short names are used (e.g. "reviews"
- // instead of "reviews.default.svc.cluster.local"), Istio will interpret
- // the short name based on the namespace of the rule, not the service. A
- // rule in the "default" namespace containing a host "reviews" will be
- // interpreted as "reviews.default.svc.cluster.local", irrespective of
- // the actual namespace associated with the reviews service. _To avoid
- // potential misconfigurations, it is recommended to always use fully
- // qualified domain names over short names._
- //
- // Note that the host field applies to both HTTP and TCP services.
- string host = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Traffic policies to apply (load balancing policy, connection pool
- // sizes, outlier detection).
- TrafficPolicy traffic_policy = 2;
-
- // One or more named sets that represent individual versions of a
- // service. Traffic policies can be overridden at subset level.
- repeated Subset subsets = 3;
-
- // A list of namespaces to which this destination rule is exported.
- // The resolution of a destination rule to apply to a service occurs in the
- // context of a hierarchy of namespaces. Exporting a destination rule allows
- // it to be included in the resolution hierarchy for services in
- // other namespaces. This feature provides a mechanism for service owners
- // and mesh administrators to control the visibility of destination rules
- // across namespace boundaries.
- //
- // If no namespaces are specified then the destination rule is exported to all
- // namespaces by default.
- //
- // The value "." is reserved and defines an export to the same namespace that
- // the destination rule is declared in. Similarly, the value "*" is reserved and
- // defines an export to all namespaces.
- repeated string export_to = 4;
-}
-
-// Traffic policies to apply for a specific destination, across all
-// destination ports. See DestinationRule for examples.
-message TrafficPolicy {
- // Settings controlling the load balancer algorithms.
- LoadBalancerSettings load_balancer = 1;
-
- // Settings controlling the volume of connections to an upstream service
- ConnectionPoolSettings connection_pool = 2;
-
- // Settings controlling eviction of unhealthy hosts from the load balancing pool
- OutlierDetection outlier_detection = 3;
-
- // TLS related settings for connections to the upstream service.
- ClientTLSSettings tls = 4;
-
- // Traffic policies that apply to specific ports of the service
- message PortTrafficPolicy {
- // Specifies the number of a port on the destination service
- // on which this policy is being applied.
- //
- PortSelector port = 1;
-
- // Settings controlling the load balancer algorithms.
- LoadBalancerSettings load_balancer = 2;
-
- // Settings controlling the volume of connections to an upstream service
- ConnectionPoolSettings connection_pool = 3;
-
- // Settings controlling eviction of unhealthy hosts from the load balancing pool
- OutlierDetection outlier_detection = 4;
-
- // TLS related settings for connections to the upstream service.
- ClientTLSSettings tls = 5;
- }
-
- // Traffic policies specific to individual ports. Note that port level
- // settings will override the destination-level settings. Traffic
- // settings specified at the destination-level will not be inherited when
- // overridden by port-level settings, i.e. default values will be applied
- // to fields omitted in port-level traffic policies.
- repeated PortTrafficPolicy port_level_settings = 5;
-}
-
-// A subset of endpoints of a service. Subsets can be used for scenarios
-// like A/B testing, or routing to a specific version of a service. Refer
-// to [VirtualService](https://istio.io/docs/reference/config/networking/virtual-service/#VirtualService) documentation for examples of using
-// subsets in these scenarios. In addition, traffic policies defined at the
-// service-level can be overridden at a subset-level. The following rule
-// uses a round robin load balancing policy for all traffic going to a
-// subset named testversion that is composed of endpoints (e.g., pods) with
-// labels (version:v3).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: LEAST_CONN
-// subsets:
-// - name: testversion
-// labels:
-// version: v3
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-// **Note:** Policies specified for subsets will not take effect until
-// a route rule explicitly sends traffic to this subset.
-//
-// One or more labels are typically required to identify the subset destination,
-// however, when the corresponding DestinationRule represents a host that
-// supports multiple SNI hosts (e.g., an egress gateway), a subset without labels
-// may be meaningful. In this case a traffic policy with [ClientTLSSettings](#ClientTLSSettings)
-// can be used to identify a specific SNI host corresponding to the named subset.
-message Subset {
- // Name of the subset. The service name and the subset name can
- // be used for traffic splitting in a route rule.
- string name = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Labels apply a filter over the endpoints of a service in the
- // service registry. See route rules for examples of usage.
- map labels = 2;
-
- // Traffic policies that apply to this subset. Subsets inherit the
- // traffic policies specified at the DestinationRule level. Settings
- // specified at the subset level will override the corresponding settings
- // specified at the DestinationRule level.
- TrafficPolicy traffic_policy = 3;
-}
-
-// Load balancing policies to apply for a specific destination. See Envoy's
-// load balancing
-// [documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancing)
-// for more details.
-//
-// For example, the following rule uses a round robin load balancing policy
-// for all traffic going to the ratings service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// simple: ROUND_ROBIN
-// ```
-// {{}}
-// {{}}
-//
-// The following example sets up sticky sessions for the ratings service
-// hashing-based load balancer for the same ratings service using the
-// the User cookie as the hash key.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// consistentHash:
-// httpCookie:
-// name: user
-// ttl: 0s
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-ratings
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// loadBalancer:
-// consistentHash:
-// httpCookie:
-// name: user
-// ttl: 0s
-// ```
-// {{}}
-// {{}}
-//
-message LoadBalancerSettings {
- // Standard load balancing algorithms that require no tuning.
- enum SimpleLB {
- // Round Robin policy. Default
- ROUND_ROBIN = 0;
-
- // The least request load balancer uses an O(1) algorithm which selects
- // two random healthy hosts and picks the host which has fewer active
- // requests.
- LEAST_CONN = 1;
-
- // The random load balancer selects a random healthy host. The random
- // load balancer generally performs better than round robin if no health
- // checking policy is configured.
- RANDOM = 2;
-
- // This option will forward the connection to the original IP address
- // requested by the caller without doing any form of load
- // balancing. This option must be used with care. It is meant for
- // advanced use cases. Refer to Original Destination load balancer in
- // Envoy for further details.
- PASSTHROUGH = 3;
- };
-
- // Consistent Hash-based load balancing can be used to provide soft
- // session affinity based on HTTP headers, cookies or other
- // properties. The affinity to a particular destination host will be
- // lost when one or more hosts are added/removed from the destination
- // service.
- message ConsistentHashLB {
- // Describes a HTTP cookie that will be used as the hash key for the
- // Consistent Hash load balancer. If the cookie is not present, it will
- // be generated.
- message HTTPCookie {
- // Name of the cookie.
- string name = 1 [(google.api.field_behavior) = REQUIRED];
- // Path to set for the cookie.
- string path = 2;
- // Lifetime of the cookie.
- google.protobuf.Duration ttl = 3 [(google.api.field_behavior) = REQUIRED];
- };
-
- // The hash key to use.
- oneof hash_key {
- // Hash based on a specific HTTP header.
- string http_header_name = 1;
-
- // Hash based on HTTP cookie.
- HTTPCookie http_cookie = 2;
-
- // Hash based on the source IP address.
- // This is applicable for both TCP and HTTP connections.
- bool use_source_ip = 3;
-
- // Hash based on a specific HTTP query parameter.
- string http_query_parameter_name = 5;
- };
-
- // The minimum number of virtual nodes to use for the hash
- // ring. Defaults to 1024. Larger ring sizes result in more granular
- // load distributions. If the number of hosts in the load balancing
- // pool is larger than the ring size, each host will be assigned a
- // single virtual node.
- uint64 minimum_ring_size = 4;
- };
-
- // (-- TODO: Enable Subset load balancing after moving to v2 API Also
- // look into enabling Priotity based load balancing for spilling over
- // from one priority pool to another. --)
-
- // Upstream load balancing policy.
- oneof lb_policy {
- SimpleLB simple = 1;
- ConsistentHashLB consistent_hash = 2;
- }
-
- // Locality load balancer settings, this will override mesh wide settings in entirety, meaning no merging would be performed
- // between this object and the object one in MeshConfig
- LocalityLoadBalancerSetting locality_lb_setting = 3;
-}
-
-// Connection pool settings for an upstream host. The settings apply to
-// each individual host in the upstream service. See Envoy's [circuit
-// breaker](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking)
-// for more details. Connection pool settings can be applied at the TCP
-// level as well as at HTTP level.
-//
-// For example, the following rule sets a limit of 100 connections to redis
-// service called myredissrv with a connect timeout of 30ms
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-redis
-// spec:
-// host: myredissrv.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// connectTimeout: 30ms
-// tcpKeepalive:
-// time: 7200s
-// interval: 75s
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: bookinfo-redis
-// spec:
-// host: myredissrv.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// connectTimeout: 30ms
-// tcpKeepalive:
-// time: 7200s
-// interval: 75s
-// ```
-// {{}}
-// {{}}
-//
-message ConnectionPoolSettings {
- // Settings common to both HTTP and TCP upstream connections.
- message TCPSettings {
- // TCP keepalive.
- message TcpKeepalive {
- // Maximum number of keepalive probes to send without response before
- // deciding the connection is dead. Default is to use the OS level configuration
- // (unless overridden, Linux defaults to 9.)
- uint32 probes = 1;
-
- // The time duration a connection needs to be idle before keep-alive
- // probes start being sent. Default is to use the OS level configuration
- // (unless overridden, Linux defaults to 7200s (ie 2 hours.)
- google.protobuf.Duration time = 2;
-
- // The time duration between keep-alive probes.
- // Default is to use the OS level configuration
- // (unless overridden, Linux defaults to 75s.)
- google.protobuf.Duration interval = 3;
- };
-
- // Maximum number of HTTP1 /TCP connections to a destination host. Default 2^32-1.
- int32 max_connections = 1;
-
- // TCP connection timeout. format:
- // 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.
- google.protobuf.Duration connect_timeout = 2;
-
- // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
- TcpKeepalive tcp_keepalive = 3;
- };
-
- // Settings applicable to HTTP1.1/HTTP2/GRPC connections.
- message HTTPSettings {
- // Maximum number of pending HTTP requests to a destination. Default 2^32-1.
- int32 http1_max_pending_requests = 1;
-
- // Maximum number of requests to a backend. Default 2^32-1.
- int32 http2_max_requests = 2;
-
- // Maximum number of requests per connection to a backend. Setting this
- // parameter to 1 disables keep alive. Default 0, meaning "unlimited",
- // up to 2^29.
- int32 max_requests_per_connection = 3;
-
- // Maximum number of retries that can be outstanding to all hosts in a
- // cluster at a given time. Defaults to 2^32-1.
- int32 max_retries = 4;
-
- // The idle timeout for upstream connection pool connections. The idle timeout
- // is defined as the period in which there are no active requests.
- // If not set, the default is 1 hour. When the idle timeout is reached,
- // the connection will be closed. If the connection is an HTTP/2
- // connection a drain sequence will occur prior to closing the connection.
- // Note that request based timeouts mean that HTTP/2 PINGs will not
- // keep the connection alive. Applies to both HTTP1.1 and HTTP2 connections.
- google.protobuf.Duration idle_timeout = 5;
-
- // Policy for upgrading http1.1 connections to http2.
- enum H2UpgradePolicy {
- // Use the global default.
- DEFAULT = 0;
- // Do not upgrade the connection to http2.
- // This opt-out option overrides the default.
- DO_NOT_UPGRADE = 1;
- // Upgrade the connection to http2.
- // This opt-in option overrides the default.
- UPGRADE = 2;
- };
- // Specify if http1.1 connection should be upgraded to http2 for the associated destination.
- H2UpgradePolicy h2_upgrade_policy = 6;
-
- // If set to true, client protocol will be preserved while initiating connection to backend.
- // Note that when this is set to true, h2_upgrade_policy will be ineffective i.e. the client
- // connections will not be upgraded to http2.
- bool use_client_protocol = 7;
- };
-
- // Settings common to both HTTP and TCP upstream connections.
- TCPSettings tcp = 1;
- // HTTP connection pool settings.
- HTTPSettings http = 2;
-}
-
-// A Circuit breaker implementation that tracks the status of each
-// individual host in the upstream service. Applicable to both HTTP and
-// TCP services. For HTTP services, hosts that continually return 5xx
-// errors for API calls are ejected from the pool for a pre-defined period
-// of time. For TCP services, connection timeouts or connection
-// failures to a given host counts as an error when measuring the
-// consecutive errors metric. See Envoy's [outlier
-// detection](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/outlier)
-// for more details.
-//
-// The following rule sets a connection pool size of 100 HTTP1 connections
-// with no more than 10 req/connection to the "reviews" service. In addition,
-// it sets a limit of 1000 concurrent HTTP2 requests and configures upstream
-// hosts to be scanned every 5 mins so that any host that fails 7 consecutive
-// times with a 502, 503, or 504 error code will be ejected for 15 minutes.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-cb-policy
-// spec:
-// host: reviews.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// http:
-// http2MaxRequests: 1000
-// maxRequestsPerConnection: 10
-// outlierDetection:
-// consecutive5xxErrors: 7
-// interval: 5m
-// baseEjectionTime: 15m
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-cb-policy
-// spec:
-// host: reviews.prod.svc.cluster.local
-// trafficPolicy:
-// connectionPool:
-// tcp:
-// maxConnections: 100
-// http:
-// http2MaxRequests: 1000
-// maxRequestsPerConnection: 10
-// outlierDetection:
-// consecutive5xxErrors: 7
-// interval: 5m
-// baseEjectionTime: 15m
-// ```
-// {{}}
-// {{}}
-//
-message OutlierDetection {
- // Number of errors before a host is ejected from the connection
- // pool. Defaults to 5. When the upstream host is accessed over HTTP, a
- // 502, 503, or 504 return code qualifies as an error. When the upstream host
- // is accessed over an opaque TCP connection, connect timeouts and
- // connection error/failure events qualify as an error.
- // $hide_from_docs
- int32 consecutive_errors = 1 [deprecated=true];
-
- // Determines whether to distinguish local origin failures from external errors. If set to true
- // consecutive_local_origin_failure is taken into account for outlier detection calculations.
- // This should be used when you want to derive the outlier detection status based on the errors
- // seen locally such as failure to connect, timeout while connecting etc. rather than the status code
- // retuned by upstream service. This is especially useful when the upstream service explicitly returns
- // a 5xx for some requests and you want to ignore those responses from upstream service while determining
- // the outlier detection status of a host.
- // Defaults to false.
- bool split_external_local_origin_errors = 8;
-
- // The number of consecutive locally originated failures before ejection
- // occurs. Defaults to 5. Parameter takes effect only when split_external_local_origin_errors
- // is set to true.
- google.protobuf.UInt32Value consecutive_local_origin_failures = 9;
-
- // Number of gateway errors before a host is ejected from the connection pool.
- // When the upstream host is accessed over HTTP, a 502, 503, or 504 return
- // code qualifies as a gateway error. When the upstream host is accessed over
- // an opaque TCP connection, connect timeouts and connection error/failure
- // events qualify as a gateway error.
- // This feature is disabled by default or when set to the value 0.
- //
- // Note that consecutive_gateway_errors and consecutive_5xx_errors can be
- // used separately or together. Because the errors counted by
- // consecutive_gateway_errors are also included in consecutive_5xx_errors,
- // if the value of consecutive_gateway_errors is greater than or equal to
- // the value of consecutive_5xx_errors, consecutive_gateway_errors will have
- // no effect.
- google.protobuf.UInt32Value consecutive_gateway_errors = 6;
-
- // Number of 5xx errors before a host is ejected from the connection pool.
- // When the upstream host is accessed over an opaque TCP connection, connect
- // timeouts, connection error/failure and request failure events qualify as a
- // 5xx error.
- // This feature defaults to 5 but can be disabled by setting the value to 0.
- //
- // Note that consecutive_gateway_errors and consecutive_5xx_errors can be
- // used separately or together. Because the errors counted by
- // consecutive_gateway_errors are also included in consecutive_5xx_errors,
- // if the value of consecutive_gateway_errors is greater than or equal to
- // the value of consecutive_5xx_errors, consecutive_gateway_errors will have
- // no effect.
- google.protobuf.UInt32Value consecutive_5xx_errors = 7;
-
- // Time interval between ejection sweep analysis. format:
- // 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.
- google.protobuf.Duration interval = 2;
-
- // Minimum ejection duration. A host will remain ejected for a period
- // equal to the product of minimum ejection duration and the number of
- // times the host has been ejected. This technique allows the system to
- // automatically increase the ejection period for unhealthy upstream
- // servers. format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 30s.
- google.protobuf.Duration base_ejection_time = 3;
-
- // Maximum % of hosts in the load balancing pool for the upstream
- // service that can be ejected. Defaults to 10%.
- int32 max_ejection_percent = 4;
-
- // Outlier detection will be enabled as long as the associated load balancing
- // pool has at least min_health_percent hosts in healthy mode. When the
- // percentage of healthy hosts in the load balancing pool drops below this
- // threshold, outlier detection will be disabled and the proxy will load balance
- // across all hosts in the pool (healthy and unhealthy). The threshold can be
- // disabled by setting it to 0%. The default is 0% as it's not typically
- // applicable in k8s environments with few pods per service.
- int32 min_health_percent = 5;
-}
-
-// SSL/TLS related settings for upstream connections. See Envoy's [TLS
-// context](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto.html#common-tls-configuration)
-// for more details. These settings are common to both HTTP and TCP upstreams.
-//
-// For example, the following rule configures a client to use mutual TLS
-// for connections to upstream database cluster.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: db-mtls
-// spec:
-// host: mydbserver.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: db-mtls
-// spec:
-// host: mydbserver.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-// {{}}
-//
-// The following rule configures a client to use TLS when talking to a
-// foreign service whose domain matches *.foo.com.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: tls-foo
-// spec:
-// host: "*.foo.com"
-// trafficPolicy:
-// tls:
-// mode: SIMPLE
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: tls-foo
-// spec:
-// host: "*.foo.com"
-// trafficPolicy:
-// tls:
-// mode: SIMPLE
-// ```
-// {{}}
-// {{}}
-//
-// The following rule configures a client to use Istio mutual TLS when talking
-// to rating services.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: ratings-istio-mtls
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: ISTIO_MUTUAL
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: ratings-istio-mtls
-// spec:
-// host: ratings.prod.svc.cluster.local
-// trafficPolicy:
-// tls:
-// mode: ISTIO_MUTUAL
-// ```
-// {{}}
-// {{}}
-//
-message ClientTLSSettings {
- // TLS connection mode
- enum TLSmode {
- // Do not setup a TLS connection to the upstream endpoint.
- DISABLE = 0;
-
- // Originate a TLS connection to the upstream endpoint.
- SIMPLE = 1;
-
- // Secure connections to the upstream using mutual TLS by presenting
- // client certificates for authentication.
- MUTUAL = 2;
-
- // Secure connections to the upstream using mutual TLS by presenting
- // client certificates for authentication.
- // Compared to Mutual mode, this mode uses certificates generated
- // automatically by Istio for mTLS authentication. When this mode is
- // used, all other fields in `ClientTLSSettings` should be empty.
- ISTIO_MUTUAL = 3;
- };
-
- // Indicates whether connections to this port should be secured
- // using TLS. The value of this field determines how TLS is enforced.
- TLSmode mode = 1 [(google.api.field_behavior) = REQUIRED];
-
- // REQUIRED if mode is `MUTUAL`. The path to the file holding the
- // client-side TLS certificate to use.
- // Should be empty if mode is `ISTIO_MUTUAL`.
- string client_certificate = 2;
-
- // REQUIRED if mode is `MUTUAL`. The path to the file holding the
- // client's private key.
- // Should be empty if mode is `ISTIO_MUTUAL`.
- string private_key = 3;
-
- // OPTIONAL: The path to the file containing certificate authority
- // certificates to use in verifying a presented server certificate. If
- // omitted, the proxy will not verify the server's certificate.
- // Should be empty if mode is `ISTIO_MUTUAL`.
- string ca_certificates = 4;
-
- // The name of the secret that holds the TLS certs for the
- // client including the CA certificates. Secret must exist in the
- // same namespace with the proxy using the certificates.
- // The secret (of type `generic`)should contain the
- // following keys and values: `key: `,
- // `cert: `, `cacert: `.
- // Here CACertificate is used to verify the server certificate.
- // Secret of type tls for client certificates along with
- // ca.crt key for CA certificates is also supported.
- // Only one of client certificates and CA certificate
- // or credentialName can be specified.
- //
- // **NOTE:** This field is currently applicable only at gateways.
- // Sidecars will continue to use the certificate paths.
- string credential_name = 7;
-
- // A list of alternate names to verify the subject identity in the
- // certificate. If specified, the proxy will verify that the server
- // certificate's subject alt name matches one of the specified values.
- // If specified, this list overrides the value of subject_alt_names
- // from the ServiceEntry.
- repeated string subject_alt_names = 5;
-
- // SNI string to present to the server during TLS handshake.
- string sni = 6;
-
- // InsecureSkipVerify specifies whether the proxy should skip verifying the
- // CA signature and SAN for the server certificate corresponding to the host.
- // This flag should only be set if global CA signature verifcation is
- // enabled, `VerifyCertAtClient` environmental variable is set to `true`,
- // but no verification is desired for a specific host. If enabled with or
- // without `VerifyCertAtClient` enabled, verification of the CA signature and
- // SAN will be skipped.
- //
- // `InsecureSkipVerify` is `false` by default.
- // `VerifyCertAtClient` is `false` by default in Istio version 1.9 but will
- // be `true` by default in a later version where, going forward, it will be
- // enabled by default.
- google.protobuf.BoolValue insecure_skip_verify = 8;
-}
-
-// Locality-weighted load balancing allows administrators to control the
-// distribution of traffic to endpoints based on the localities of where the
-// traffic originates and where it will terminate. These localities are
-// specified using arbitrary labels that designate a hierarchy of localities in
-// {region}/{zone}/{sub-zone} form. For additional detail refer to
-// [Locality Weight](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/locality_weight)
-// The following example shows how to setup locality weights mesh-wide.
-//
-// Given a mesh with workloads and their service deployed to "us-west/zone1/*"
-// and "us-west/zone2/*". This example specifies that when traffic accessing a
-// service originates from workloads in "us-west/zone1/*", 80% of the traffic
-// will be sent to endpoints in "us-west/zone1/*", i.e the same zone, and the
-// remaining 20% will go to endpoints in "us-west/zone2/*". This setup is
-// intended to favor routing traffic to endpoints in the same locality.
-// A similar setting is specified for traffic originating in "us-west/zone2/*".
-//
-// ```yaml
-// distribute:
-// - from: us-west/zone1/*
-// to:
-// "us-west/zone1/*": 80
-// "us-west/zone2/*": 20
-// - from: us-west/zone2/*
-// to:
-// "us-west/zone1/*": 20
-// "us-west/zone2/*": 80
-// ```
-//
-// If the goal of the operator is not to distribute load across zones and
-// regions but rather to restrict the regionality of failover to meet other
-// operational requirements an operator can set a 'failover' policy instead of
-// a 'distribute' policy.
-//
-// The following example sets up a locality failover policy for regions.
-// Assume a service resides in zones within us-east, us-west & eu-west
-// this example specifies that when endpoints within us-east become unhealthy
-// traffic should failover to endpoints in any zone or sub-zone within eu-west
-// and similarly us-west should failover to us-east.
-//
-// ```yaml
-// failover:
-// - from: us-east
-// to: eu-west
-// - from: us-west
-// to: us-east
-// ```
-// Locality load balancing settings.
-message LocalityLoadBalancerSetting{
- // Describes how traffic originating in the 'from' zone or sub-zone is
- // distributed over a set of 'to' zones. Syntax for specifying a zone is
- // {region}/{zone}/{sub-zone} and terminal wildcards are allowed on any
- // segment of the specification. Examples:
- //
- // `*` - matches all localities
- //
- // `us-west/*` - all zones and sub-zones within the us-west region
- //
- // `us-west/zone-1/*` - all sub-zones within us-west/zone-1
- message Distribute{
- // Originating locality, '/' separated, e.g. 'region/zone/sub_zone'.
- string from = 1;
-
- // Map of upstream localities to traffic distribution weights. The sum of
- // all weights should be 100. Any locality not present will
- // receive no traffic.
- map to = 2;
- };
-
- // Specify the traffic failover policy across regions. Since zone and sub-zone
- // failover is supported by default this only needs to be specified for
- // regions when the operator needs to constrain traffic failover so that
- // the default behavior of failing over to any endpoint globally does not
- // apply. This is useful when failing over traffic across regions would not
- // improve service health or may need to be restricted for other reasons
- // like regulatory controls.
- message Failover{
- // Originating region.
- string from = 1;
-
- // Destination region the traffic will fail over to when endpoints in
- // the 'from' region becomes unhealthy.
- string to = 2;
- };
-
- // Optional: only one of distribute, failover or failoverPriority can be set.
- // Explicitly specify loadbalancing weight across different zones and geographical locations.
- // Refer to [Locality weighted load balancing](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/locality_weight)
- // If empty, the locality weight is set according to the endpoints number within it.
- repeated Distribute distribute = 1;
-
- // Optional: only one of distribute, failover or failoverPriority can be set.
- // Explicitly specify the region traffic will land on when endpoints in local region becomes unhealthy.
- // Should be used together with OutlierDetection to detect unhealthy endpoints.
- // Note: if no OutlierDetection specified, this will not take effect.
- repeated Failover failover = 2;
-
- // failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.
- // This is to support traffic failover across different groups of endpoints.
- // Suppose there are total N labels specified:
- //
- // 1. Endpoints matching all N labels with the client proxy have priority P(0) i.e. the highest priority.
- // 2. Endpoints matching the first N-1 labels with the client proxy have priority P(1) i.e. second highest priority.
- // 3. By extension of this logic, endpoints matching only the first label with the client proxy has priority P(N-1) i.e. second lowest priority.
- // 4. All the other endpoints have priority P(N) i.e. lowest priority.
- //
- // Note: For a label to be considered for match, the previous labels must match, i.e. nth label would be considered matched only if first n-1 labels match.
- //
- // It can be any label specified on both client and server workloads.
- // The following labels which have special semantic meaning are also supported:
- //
- // - `topology.istio.io/network` is used to match the network metadata of an endpoint, which can be specified by pod/namespace label `topology.istio.io/network`, sidecar env `ISTIO_META_NETWORK` or MeshNetworks.
- // - `topology.istio.io/cluster` is used to match the clusterID of an endpoint, which can be specified by pod label `topology.istio.io/cluster` or pod env `ISTIO_META_CLUSTER_ID`.
- // - `topology.kubernetes.io/region` is used to match the region metadata of an endpoint, which maps to Kubernetes node label `topology.kubernetes.io/region` or the deprecated label `failure-domain.beta.kubernetes.io/region`.
- // - `topology.kubernetes.io/zone` is used to match the zone metadata of an endpoint, which maps to Kubernetes node label `topology.kubernetes.io/zone` or the deprecated label `failure-domain.beta.kubernetes.io/zone`.
- // - `topology.istio.io/subzone` is used to match the subzone metadata of an endpoint, which maps to Istio node label `topology.istio.io/subzone`.
- //
- // The below topology config indicates the following priority levels:
- //
- // ```yaml
- // failoverPriority:
- // - "topology.istio.io/network"
- // - "topology.kubernetes.io/region"
- // - "topology.kubernetes.io/zone"
- // - "topology.istio.io/subzone"
- // ```
- //
- // 1. endpoints match same [network, region, zone, subzone] label with the client proxy have the highest priority.
- // 2. endpoints have same [network, region, zone] label but different [subzone] label with the client proxy have the second highest priority.
- // 3. endpoints have same [network, region] label but different [zone] label with the client proxy have the third highest priority.
- // 4. endpoints have same [network] but different [region] labels with the client proxy have the fourth highest priority.
- // 5. all the other endpoints have the same lowest priority.
- //
- // Optional: only one of distribute, failover or failoverPriority can be set.
- // And it should be used together with `OutlierDetection` to detect unhealthy endpoints, otherwise has no effect.
- repeated string failover_priority = 4;
-
- // enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.
- // e.g. true means that turn on locality load balancing for this DestinationRule no matter what mesh wide settings is.
- google.protobuf.BoolValue enabled = 3;
-}
diff --git a/proto/networking/v1beta1/gateway.proto b/proto/networking/v1beta1/gateway.proto
deleted file mode 100644
index 7f08838..0000000
--- a/proto/networking/v1beta1/gateway.proto
+++ /dev/null
@@ -1,731 +0,0 @@
-// Copyright 2020 Istio 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";
-
-import "google/api/field_behavior.proto";
-
-// $schema: istio.networking.v1beta1.Gateway
-// $title: Gateway
-// $description: Configuration affecting edge load balancer.
-// $location: https://istio.io/docs/reference/config/networking/gateway.html
-// $aliases: [/docs/reference/config/networking/v1beta1/gateway]
-// $mode: none
-
-// `Gateway` describes a load balancer operating at the edge of the mesh
-// receiving incoming or outgoing HTTP/TCP connections. The specification
-// describes a set of ports that should be exposed, the type of protocol to
-// use, SNI configuration for the load balancer, etc.
-//
-// For example, the following Gateway configuration sets up a proxy to act
-// as a load balancer exposing port 80 and 9080 (http), 443 (https),
-// 9443(https) and port 2379 (TCP) for ingress. The gateway will be
-// applied to the proxy running on a pod with labels `app:
-// my-gateway-controller`. While Istio will configure the proxy to listen
-// on these ports, it is the responsibility of the user to ensure that
-// external traffic to these ports are allowed into the mesh.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// httpsRedirect: true # sends 301 redirect for http requests
-// - port:
-// number: 443
-// name: https-443
-// protocol: HTTPS
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// serverCertificate: /etc/certs/servercert.pem
-// privateKey: /etc/certs/privatekey.pem
-// - port:
-// number: 9443
-// name: https-9443
-// protocol: HTTPS
-// hosts:
-// - "bookinfo-namespace/*.bookinfo.com"
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
-// - port:
-// number: 9080
-// name: http-wildcard
-// protocol: HTTP
-// hosts:
-// - "*"
-// - port:
-// number: 2379 # to expose internal service via external port 2379
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// httpsRedirect: true # sends 301 redirect for http requests
-// - port:
-// number: 443
-// name: https-443
-// protocol: HTTPS
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// serverCertificate: /etc/certs/servercert.pem
-// privateKey: /etc/certs/privatekey.pem
-// - port:
-// number: 9443
-// name: https-9443
-// protocol: HTTPS
-// hosts:
-// - "bookinfo-namespace/*.bookinfo.com"
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
-// - port:
-// number: 9080
-// name: http-wildcard
-// protocol: HTTP
-// hosts:
-// - "*"
-// - port:
-// number: 2379 # to expose internal service via external port 2379
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// The Gateway specification above describes the L4-L6 properties of a load
-// balancer. A `VirtualService` can then be bound to a gateway to control
-// the forwarding of traffic arriving at a particular host or gateway port.
-//
-// For example, the following VirtualService splits traffic for
-// `https://uk.bookinfo.com/reviews`, `https://eu.bookinfo.com/reviews`,
-// `http://uk.bookinfo.com:9080/reviews`,
-// `http://eu.bookinfo.com:9080/reviews` into two versions (prod and qa) of
-// an internal reviews service on port 9080. In addition, requests
-// containing the cookie "user: dev-123" will be sent to special port 7777
-// in the qa version. The same rule is also applicable inside the mesh for
-// requests to the "reviews.prod.svc.cluster.local" service. This rule is
-// applicable across ports 443, 9080. Note that `http://uk.bookinfo.com`
-// gets redirected to `https://uk.bookinfo.com` (i.e. 80 redirects to 443).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-rule
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// gateways:
-// - some-config-namespace/my-gateway
-// - mesh # applies to all the sidecars in the mesh
-// http:
-// - match:
-// - headers:
-// cookie:
-// exact: "user=dev-123"
-// route:
-// - destination:
-// port:
-// number: 7777
-// host: reviews.qa.svc.cluster.local
-// - match:
-// - uri:
-// prefix: /reviews/
-// route:
-// - destination:
-// port:
-// number: 9080 # can be omitted if it's the only port for reviews
-// host: reviews.prod.svc.cluster.local
-// weight: 80
-// - destination:
-// host: reviews.qa.svc.cluster.local
-// weight: 20
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-rule
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// gateways:
-// - some-config-namespace/my-gateway
-// - mesh # applies to all the sidecars in the mesh
-// http:
-// - match:
-// - headers:
-// cookie:
-// exact: "user=dev-123"
-// route:
-// - destination:
-// port:
-// number: 7777
-// host: reviews.qa.svc.cluster.local
-// - match:
-// - uri:
-// prefix: /reviews/
-// route:
-// - destination:
-// port:
-// number: 9080 # can be omitted if it's the only port for reviews
-// host: reviews.prod.svc.cluster.local
-// weight: 80
-// - destination:
-// host: reviews.qa.svc.cluster.local
-// weight: 20
-// ```
-// {{}}
-// {{}}
-//
-// The following VirtualService forwards traffic arriving at (external)
-// port 27017 to internal Mongo server on port 5555. This rule is not
-// applicable internally in the mesh as the gateway list omits the
-// reserved name `mesh`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
-// gateways:
-// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same namespace as virtual service.
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.prod.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
-// gateways:
-// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same namespace as virtual service.
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.prod.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-// {{}}
-//
-// It is possible to restrict the set of virtual services that can bind to
-// a gateway server using the namespace/hostname syntax in the hosts field.
-// For example, the following Gateway allows any virtual service in the ns1
-// namespace to bind to it, while restricting only the virtual service with
-// foo.bar.com host in the ns2 namespace to bind to it.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "ns1/*"
-// - "ns2/foo.bar.com"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "ns1/*"
-// - "ns2/foo.bar.com"
-// ```
-// {{}}
-// {{}}
-//
-package istio.networking.v1beta1;
-
-option go_package = "istio.io/api/networking/v1beta1";
-
-// Gateway describes a load balancer operating at the edge of the mesh
-// receiving incoming or outgoing HTTP/TCP connections.
-//
-//
-//
-//
-//
-message Gateway {
- // A list of server specifications.
- repeated Server servers = 1 [(google.api.field_behavior) = REQUIRED];
-
- // One or more labels that indicate a specific set of pods/VMs
- // on which this gateway configuration should be applied.
- // By default workloads are searched across all namespaces based on label selectors.
- // This implies that a gateway resource in the namespace "foo" can select pods in
- // the namespace "bar" based on labels.
- // This behavior can be controlled via the `PILOT_SCOPE_GATEWAY_TO_NAMESPACE`
- // environment variable in istiod. If this variable is set
- // to true, the scope of label search is restricted to the configuration
- // namespace in which the the resource is present. In other words, the Gateway
- // resource must reside in the same namespace as the gateway workload
- // instance.
- // If selector is nil, the Gateway will be applied to all workloads.
- map selector = 2 [(google.api.field_behavior) = REQUIRED];
-}
-
-// `Server` describes the properties of the proxy on a given load balancer
-// port. For example,
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-ingress
-// spec:
-// selector:
-// app: my-ingressgateway
-// servers:
-// - port:
-// number: 80
-// name: http2
-// protocol: HTTP2
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-ingress
-// spec:
-// selector:
-// app: my-ingressgateway
-// servers:
-// - port:
-// number: 80
-// name: http2
-// protocol: HTTP2
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// Another example
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tcp-ingress
-// spec:
-// selector:
-// app: my-tcp-ingressgateway
-// servers:
-// - port:
-// number: 27018
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-tcp-ingress
-// spec:
-// selector:
-// app: my-tcp-ingressgateway
-// servers:
-// - port:
-// number: 27018
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// The following is an example of TLS configuration for port 443
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tls-ingress
-// spec:
-// selector:
-// app: my-tls-ingressgateway
-// servers:
-// - port:
-// number: 443
-// name: https
-// protocol: HTTPS
-// hosts:
-// - "*"
-// tls:
-// mode: SIMPLE
-// credentialName: tls-cert
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: my-tls-ingress
-// spec:
-// selector:
-// app: my-tls-ingressgateway
-// servers:
-// - port:
-// number: 443
-// name: https
-// protocol: HTTPS
-// hosts:
-// - "*"
-// tls:
-// mode: SIMPLE
-// credentialName: tls-cert
-// ```
-// {{}}
-// {{}}
-//
-message Server {
- // The Port on which the proxy should listen for incoming
- // connections.
- Port port = 1 [(google.api.field_behavior) = REQUIRED];
-
- // The ip or the Unix domain socket to which the listener should be bound
- // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar`
- // (Linux abstract namespace). When using Unix domain sockets, the port
- // number should be 0.
- // This can be used to restrict the reachability of this server to be gateway internal only.
- // This is typically used when a gateway needs to communicate to another mesh service
- // e.g. publishing metrics. In such case, the server created with the
- // specified bind will not be available to external gateway clients.
- string bind = 4;
-
- // One or more hosts exposed by this gateway.
- // While typically applicable to
- // HTTP services, it can also be used for TCP services using TLS with SNI.
- // A host is specified as a `dnsName` with an optional `namespace/` prefix.
- // The `dnsName` should be specified using FQDN format, optionally including
- // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
- // Set the `dnsName` to `*` to select all `VirtualService` hosts from the
- // specified namespace (e.g.,`prod/*`).
- //
- // The `namespace` can be set to `*` or `.`, representing any or the current
- // namespace, respectively. For example, `*/foo.example.com` selects the
- // service from any available namespace while `./foo.example.com` only selects
- // the service from the namespace of the sidecar. The default, if no `namespace/`
- // is specified, is `*/`, that is, select services from any namespace.
- // Any associated `DestinationRule` in the selected namespace will also be used.
- //
- // A `VirtualService` must be bound to the gateway and must have one or
- // more hosts that match the hosts specified in a server. The match
- // could be an exact match or a suffix match with the server's hosts. For
- // example, if the server's hosts specifies `*.example.com`, a
- // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will
- // match. However, a `VirtualService` with host `example.com` or
- // `newexample.com` will not match.
- //
- // NOTE: Only virtual services exported to the gateway's namespace
- // (e.g., `exportTo` value of `*`) can be referenced.
- // Private configurations (e.g., `exportTo` set to `.`) will not be
- // available. Refer to the `exportTo` setting in `VirtualService`,
- // `DestinationRule`, and `ServiceEntry` configurations for details.
- repeated string hosts = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Set of TLS related options that govern the server's behavior. Use
- // these options to control if all http requests should be redirected to
- // https, and the TLS modes to use.
- ServerTLSSettings tls = 3;
-
- // The loopback IP endpoint or Unix domain socket to which traffic should
- // be forwarded to by default. Format should be `127.0.0.1:PORT` or
- // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace).
- // NOT IMPLEMENTED.
- // $hide_from_docs
- string default_endpoint = 5;
-
- // An optional name of the server, when set must be unique across all servers.
- // This will be used for variety of purposes like prefixing stats generated with
- // this name etc.
- string name = 6;
-}
-
-// Port describes the properties of a specific port of a service.
-message Port {
- // A valid non-negative integer port number.
- uint32 number = 1 [(google.api.field_behavior) = REQUIRED];
-
- // The protocol exposed on the port.
- // MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS.
- // TLS implies the connection will be routed based on the SNI header to
- // the destination without terminating the TLS connection.
- string protocol = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Label assigned to the port.
- string name = 3 [(google.api.field_behavior) = REQUIRED];
-
- // The port number on the endpoint where the traffic will be
- // received. Applicable only when used with ServiceEntries.
- uint32 target_port = 4;
-}
-
-message ServerTLSSettings {
- // If set to true, the load balancer will send a 301 redirect for
- // all http connections, asking the clients to use HTTPS.
- bool https_redirect = 1;
-
- // TLS modes enforced by the proxy
- enum TLSmode {
- // The SNI string presented by the client will be used as the
- // match criterion in a VirtualService TLS route to determine
- // the destination service from the service registry.
- PASSTHROUGH = 0;
-
- // Secure connections with standard TLS semantics.
- SIMPLE = 1;
-
- // Secure connections to the downstream using mutual TLS by
- // presenting server certificates for authentication.
- MUTUAL = 2;
-
- // Similar to the passthrough mode, except servers with this TLS
- // mode do not require an associated VirtualService to map from
- // the SNI value to service in the registry. The destination
- // details such as the service/subset/port are encoded in the
- // SNI value. The proxy will forward to the upstream (Envoy)
- // cluster (a group of endpoints) specified by the SNI
- // value. This server is typically used to provide connectivity
- // between services in disparate L3 networks that otherwise do
- // not have direct connectivity between their respective
- // endpoints. Use of this mode assumes that both the source and
- // the destination are using Istio mTLS to secure traffic.
- AUTO_PASSTHROUGH = 3;
-
- // Secure connections from the downstream using mutual TLS by
- // presenting server certificates for authentication. Compared
- // to Mutual mode, this mode uses certificates, representing
- // gateway workload identity, generated automatically by Istio
- // for mTLS authentication. When this mode is used, all other
- // fields in `TLSOptions` should be empty.
- ISTIO_MUTUAL = 4;
- };
-
- // Optional: Indicates whether connections to this port should be
- // secured using TLS. The value of this field determines how TLS is
- // enforced.
- TLSmode mode = 2;
-
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server-side TLS certificate to use.
- string server_certificate = 3;
-
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server's private key.
- string private_key = 4;
-
- // REQUIRED if mode is `MUTUAL`. The path to a file containing
- // certificate authority certificates to use in verifying a presented
- // client side certificate.
- string ca_certificates = 5;
-
- // For gateways running on Kubernetes, the name of the secret that
- // holds the TLS certs including the CA certificates. Applicable
- // only on Kubernetes. The secret (of type `generic`) should
- // contain the following keys and values: `key:
- // ` and `cert: `. For mutual TLS,
- // `cacert: ` can be provided in the same secret or
- // a separate secret named `-cacert`.
- // Secret of type tls for server certificates along with
- // ca.crt key for CA certificates is also supported.
- // Only one of server certificates and CA certificate
- // or credentialName can be specified.
- string credential_name = 10;
-
- // A list of alternate names to verify the subject identity in the
- // certificate presented by the client.
- repeated string subject_alt_names = 6;
-
- // An optional list of base64-encoded SHA-256 hashes of the SKPIs of
- // authorized client certificates.
- // Note: When both verify_certificate_hash and verify_certificate_spki
- // are specified, a hash matching either value will result in the
- // certificate being accepted.
- repeated string verify_certificate_spki = 11;
-
- // An optional list of hex-encoded SHA-256 hashes of the
- // authorized client certificates. Both simple and colon separated
- // formats are acceptable.
- // Note: When both verify_certificate_hash and verify_certificate_spki
- // are specified, a hash matching either value will result in the
- // certificate being accepted.
- repeated string verify_certificate_hash = 12;
-
- // TLS protocol versions.
- enum TLSProtocol {
- // Automatically choose the optimal TLS version.
- TLS_AUTO = 0;
-
- // TLS version 1.0
- TLSV1_0 = 1;
-
- // TLS version 1.1
- TLSV1_1 = 2;
-
- // TLS version 1.2
- TLSV1_2 = 3;
-
- // TLS version 1.3
- TLSV1_3 = 4;
- }
-
- // Optional: Minimum TLS protocol version.
- TLSProtocol min_protocol_version = 7;
-
- // Optional: Maximum TLS protocol version.
- TLSProtocol max_protocol_version = 8;
-
- // Optional: If specified, only support the specified cipher list.
- // Otherwise default to the default cipher list supported by Envoy.
- repeated string cipher_suites = 9;
-}
diff --git a/proto/networking/v1beta1/proxy_config.proto b/proto/networking/v1beta1/proxy_config.proto
deleted file mode 100644
index 28fa4ca..0000000
--- a/proto/networking/v1beta1/proxy_config.proto
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2021 Istio 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";
-
-import "google/protobuf/wrappers.proto";
-import "type/v1beta1/selector.proto";
-
-// $schema: istio.networking.v1beta1.ProxyConfig
-// $title: ProxyConfig
-// $description: Provides configuration for individual workloads.
-// $location: https://istio.io/docs/reference/config/networking/proxy-config.html
-// $aliases: [/docs/reference/config/networking/v1beta1/proxy-config]
-// $mode: file
-
-// `ProxyConfig` exposes proxy level configuration options. `ProxyConfig` can be configured on a per-workload basis,
-// a per-namespace basis, or mesh-wide. `ProxyConfig` is not a required resource; there are default values in place, which are documented
-// inline with each field.
-//
-// **NOTE**: fields in ProxyConfig are not dynamically configured - changes will require restart of workloads to take effect.
-//
-// For any namespace, including the root configuration namespace, it is only valid
-// to have a single workload selector-less `ProxyConfig` resource.
-//
-// For resources with a workload selector, it is only valid to have one resource selecting
-// any given workload.
-//
-// For mesh level configuration, put the resource in the root configuration namespace for
-// your Istio installation *without* a workload selector:
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ProxyConfig
-// metadata:
-// name: my-proxyconfig
-// namespace: istio-system
-// spec:
-// concurrency: 0
-// image:
-// type: distroless
-// ```
-//
-// For namespace level configuration, put the resource in the desired namespace without a workload selector:
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ProxyConfig
-// metadata:
-// name: my-ns-proxyconfig
-// namespace: user-namespace
-// spec:
-// concurrency: 0
-// ```
-//
-// For workload level configuration, set the `selector` field on the `ProxyConfig` resource:
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ProxyConfig
-// metadata:
-// name: per-workload-proxyconfig
-// namespace: example
-// spec:
-// selector:
-// labels:
-// app: ratings
-// concurrency: 0
-// image:
-// type: debug
-// ```
-//
-// If a `ProxyConfig` CR is defined that matches a workload it will merge with its `proxy.istio.io/config` annotation if present,
-// with the CR taking precedence over the annotation for overlapping fields. Similarly, if a mesh wide `ProxyConfig` CR is defined and
-// `meshConfig.DefaultConfig` is set, the two resources will be merged with the CR taking precedence for overlapping fields.
-//
-package istio.networking.v1beta1;
-
-option go_package= "istio.io/api/networking/v1beta1";
-
-// `ProxyConfig` exposes proxy level configuration options.
-//
-//
-//
-//
-message ProxyConfig {
- // Optional. Selectors specify the set of pods/VMs on which this `ProxyConfig` resource should be applied.
- // If not set, the `ProxyConfig` resource will be applied to all workloads in the namespace where this resource is defined.
- istio.type.v1beta1.WorkloadSelector selector = 1;
-
- // The number of worker threads to run.
- // If unset, defaults to 2. If set to 0, this will be configured to use all cores on the machine using
- // CPU requests and limits to choose a value, with limits taking precedence over requests.
- google.protobuf.Int32Value concurrency = 2;
-
- // Additional environment variables for the proxy.
- // Names starting with `ISTIO_META_` will be included in the generated bootstrap configuration and sent to the XDS server.
- map environment_variables = 3;
-
- // Specifies the details of the proxy image.
- ProxyImage image = 4;
-}
-
-// The following values are used to construct proxy image url.
-// $hub/$image_name/$tag-$image_type
-// example: docker.io/istio/proxyv2:1.11.1 or docker.io/istio/proxyv2:1.11.1-distroless
-// This information was previously part of the Values API.
-message ProxyImage {
- // The image type of the image.
- // Istio publishes default, debug, and distroless images.
- // Other values are allowed if those image types (example: centos) are published to the specified hub.
- // supported values: default, debug, distroless.
- string image_type = 1;
-}
diff --git a/proto/networking/v1beta1/service_entry.proto b/proto/networking/v1beta1/service_entry.proto
deleted file mode 100644
index 32482a7..0000000
--- a/proto/networking/v1beta1/service_entry.proto
+++ /dev/null
@@ -1,969 +0,0 @@
-// Copyright 2020 Istio 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";
-
-import "google/api/field_behavior.proto";
-import "networking/v1beta1/gateway.proto";
-import "networking/v1beta1/sidecar.proto";
-import "networking/v1beta1/workload_entry.proto";
-
-// $schema: istio.networking.v1beta1.ServiceEntry
-// $title: Service Entry
-// $description: Configuration affecting service registry.
-// $location: https://istio.io/docs/reference/config/networking/service-entry.html
-// $aliases: [/docs/reference/config/networking/v1beta1/service-entry]
-// $mode: none
-
-// `ServiceEntry` enables adding additional entries into Istio's
-// internal service registry, so that auto-discovered services in the
-// mesh can access/route to these manually specified services. A
-// service entry describes the properties of a service (DNS name,
-// VIPs, ports, protocols, endpoints). These services could be
-// external to the mesh (e.g., web APIs) or mesh-internal services
-// that are not part of the platform's service registry (e.g., a set
-// of VMs talking to services in Kubernetes). In addition, the
-// endpoints of a service entry can also be dynamically selected by
-// using the `workloadSelector` field. These endpoints can be VM
-// workloads declared using the `WorkloadEntry` object or Kubernetes
-// pods. The ability to select both pods and VMs under a single
-// service allows for migration of services from VMs to Kubernetes
-// without having to change the existing DNS names associated with the
-// services.
-//
-// The following example declares a few external APIs accessed by internal
-// applications over HTTPS. The sidecar inspects the SNI value in the
-// ClientHello message to route to the appropriate external service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-https
-// spec:
-// hosts:
-// - api.dropboxapi.com
-// - www.googleapis.com
-// - api.facebook.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: DNS
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-https
-// spec:
-// hosts:
-// - api.dropboxapi.com
-// - www.googleapis.com
-// - api.facebook.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: DNS
-// ```
-// {{}}
-// {{}}
-//
-// The following configuration adds a set of MongoDB instances running on
-// unmanaged VMs to Istio's registry, so that these services can be treated
-// as any other service in the mesh. The associated DestinationRule is used
-// to initiate mTLS connections to the database instances.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mongocluster
-// spec:
-// hosts:
-// - mymongodb.somedomain # not used
-// addresses:
-// - 192.192.192.192/24 # VIPs
-// ports:
-// - number: 27018
-// name: mongodb
-// protocol: MONGO
-// location: MESH_INTERNAL
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mongocluster
-// spec:
-// hosts:
-// - mymongodb.somedomain # not used
-// addresses:
-// - 192.192.192.192/24 # VIPs
-// ports:
-// - number: 27018
-// name: mongodb
-// protocol: MONGO
-// location: MESH_INTERNAL
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// ```
-// {{}}
-// {{}}
-//
-// and the associated DestinationRule
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: mtls-mongocluster
-// spec:
-// host: mymongodb.somedomain
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: mtls-mongocluster
-// spec:
-// host: mymongodb.somedomain
-// trafficPolicy:
-// tls:
-// mode: MUTUAL
-// clientCertificate: /etc/certs/myclientcert.pem
-// privateKey: /etc/certs/client_private_key.pem
-// caCertificates: /etc/certs/rootcacerts.pem
-// ```
-// {{}}
-// {{}}
-//
-// The following example uses a combination of service entry and TLS
-// routing in a virtual service to steer traffic based on the SNI value to
-// an internal egress firewall.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-redirect
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: NONE
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-redirect
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 443
-// name: https
-// protocol: TLS
-// resolution: NONE
-// ```
-// {{}}
-// {{}}
-//
-// And the associated VirtualService to route based on the SNI value.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: tls-routing
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// tls:
-// - match:
-// - sniHosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// route:
-// - destination:
-// host: internal-egress-firewall.ns1.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: tls-routing
-// spec:
-// hosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// tls:
-// - match:
-// - sniHosts:
-// - wikipedia.org
-// - "*.wikipedia.org"
-// route:
-// - destination:
-// host: internal-egress-firewall.ns1.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-//
-// The virtual service with TLS match serves to override the default SNI
-// match. In the absence of a virtual service, traffic will be forwarded to
-// the wikipedia domains.
-//
-// The following example demonstrates the use of a dedicated egress gateway
-// through which all external service traffic is forwarded.
-// The 'exportTo' field allows for control over the visibility of a service
-// declaration to other namespaces in the mesh. By default, a service is exported
-// to all namespaces. The following example restricts the visibility to the
-// current namespace, represented by ".", so that it cannot be used by other
-// namespaces.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-httpbin
-// namespace : egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "."
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-httpbin
-// namespace : egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "."
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// ```
-// {{}}
-// {{}}
-//
-// Define a gateway to handle all egress traffic.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: istio-egressgateway
-// namespace: istio-system
-// spec:
-// selector:
-// istio: egressgateway
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Gateway
-// metadata:
-// name: istio-egressgateway
-// namespace: istio-system
-// spec:
-// selector:
-// istio: egressgateway
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "*"
-// ```
-// {{}}
-// {{}}
-//
-// And the associated `VirtualService` to route from the sidecar to the
-// gateway service (`istio-egressgateway.istio-system.svc.cluster.local`), as
-// well as route from the gateway to the external service. Note that the
-// virtual service is exported to all namespaces enabling them to route traffic
-// through the gateway to the external service. Forcing traffic to go through
-// a managed middle proxy like this is a common practice.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: gateway-routing
-// namespace: egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "*"
-// gateways:
-// - mesh
-// - istio-egressgateway
-// http:
-// - match:
-// - port: 80
-// gateways:
-// - mesh
-// route:
-// - destination:
-// host: istio-egressgateway.istio-system.svc.cluster.local
-// - match:
-// - port: 80
-// gateways:
-// - istio-egressgateway
-// route:
-// - destination:
-// host: example.com
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: gateway-routing
-// namespace: egress
-// spec:
-// hosts:
-// - example.com
-// exportTo:
-// - "*"
-// gateways:
-// - mesh
-// - istio-egressgateway
-// http:
-// - match:
-// - port: 80
-// gateways:
-// - mesh
-// route:
-// - destination:
-// host: istio-egressgateway.istio-system.svc.cluster.local
-// - match:
-// - port: 80
-// gateways:
-// - istio-egressgateway
-// route:
-// - destination:
-// host: example.com
-// ```
-// {{}}
-// {{}}
-//
-// The following example demonstrates the use of wildcards in the hosts for
-// external services. If the connection has to be routed to the IP address
-// requested by the application (i.e. application resolves DNS and attempts
-// to connect to a specific IP), the discovery mode must be set to `NONE`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wildcard-example
-// spec:
-// hosts:
-// - "*.bar.com"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: NONE
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wildcard-example
-// spec:
-// hosts:
-// - "*.bar.com"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: NONE
-// ```
-// {{}}
-// {{}}
-//
-// The following example demonstrates a service that is available via a
-// Unix Domain Socket on the host of the client. The resolution must be
-// set to STATIC to use Unix address endpoints.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: unix-domain-socket-example
-// spec:
-// hosts:
-// - "example.unix.local"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: unix:///var/run/example/socket
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: unix-domain-socket-example
-// spec:
-// hosts:
-// - "example.unix.local"
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: unix:///var/run/example/socket
-// ```
-// {{}}
-// {{}}
-//
-// For HTTP-based services, it is possible to create a `VirtualService`
-// backed by multiple DNS addressable endpoints. In such a scenario, the
-// application can use the `HTTP_PROXY` environment variable to transparently
-// reroute API calls for the `VirtualService` to a chosen backend. For
-// example, the following configuration creates a non-existent external
-// service called foo.bar.com backed by three domains: us.foo.bar.com:8080,
-// uk.foo.bar.com:9080, and in.foo.bar.com:7080
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-dns
-// spec:
-// hosts:
-// - foo.bar.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// endpoints:
-// - address: us.foo.bar.com
-// ports:
-// http: 8080
-// - address: uk.foo.bar.com
-// ports:
-// http: 9080
-// - address: in.foo.bar.com
-// ports:
-// http: 7080
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-dns
-// spec:
-// hosts:
-// - foo.bar.com
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: DNS
-// endpoints:
-// - address: us.foo.bar.com
-// ports:
-// http: 8080
-// - address: uk.foo.bar.com
-// ports:
-// http: 9080
-// - address: in.foo.bar.com
-// ports:
-// http: 7080
-// ```
-// {{}}
-// {{}}
-//
-// With `HTTP_PROXY=http://localhost/`, calls from the application to
-// `http://foo.bar.com` will be load balanced across the three domains
-// specified above. In other words, a call to `http://foo.bar.com/baz` would
-// be translated to `http://uk.foo.bar.com/baz`.
-//
-// The following example illustrates the usage of a `ServiceEntry`
-// containing a subject alternate name
-// whose format conforms to the [SPIFFE standard](https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md):
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: httpbin
-// namespace : httpbin-ns
-// spec:
-// hosts:
-// - example.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// subjectAltNames:
-// - "spiffe://cluster.local/ns/httpbin-ns/sa/httpbin-service-account"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: httpbin
-// namespace : httpbin-ns
-// spec:
-// hosts:
-// - example.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// endpoints:
-// - address: 2.2.2.2
-// - address: 3.3.3.3
-// subjectAltNames:
-// - "spiffe://cluster.local/ns/httpbin-ns/sa/httpbin-service-account"
-// ```
-// {{}}
-// {{}}
-//
-// The following example demonstrates the use of `ServiceEntry` with a
-// `workloadSelector` to handle the migration of a service
-// `details.bookinfo.com` from VMs to Kubernetes. The service has two
-// VM-based instances with sidecars as well as a set of Kubernetes
-// pods managed by a standard deployment object. Consumers of this
-// service in the mesh will be automatically load balanced across the
-// VMs and Kubernetes. VM for the `details.bookinfo.com`
-// service. This VM has sidecar installed and bootstrapped using the
-// `details-legacy` service account. The sidecar receives HTTP traffic
-// on port 80 (wrapped in istio mutual TLS) and forwards it to the
-// application on the localhost on the same port.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-1
-// spec:
-// serviceAccount: details
-// address: 2.2.2.2
-// labels:
-// app: details
-// instance-id: vm1
-// ---
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-2
-// spec:
-// serviceAccount: details
-// address: 3.3.3.3
-// labels:
-// app: details
-// instance-id: vm2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-1
-// spec:
-// serviceAccount: details
-// address: 2.2.2.2
-// labels:
-// app: details
-// instance-id: vm1
-// ---
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-vm-2
-// spec:
-// serviceAccount: details
-// address: 3.3.3.3
-// labels:
-// app: details
-// instance-id: vm2
-// ```
-// {{}}
-// {{}}
-//
-// Assuming there is also a Kubernetes deployment with pod labels
-// `app: details` using the same service account `details`, the
-// following service entry declares a service spanning both VMs and
-// Kubernetes:
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details
-// ```
-// {{}}
-// {{}}
-package istio.networking.v1beta1;
-
-option go_package = "istio.io/api/networking/v1beta1";
-
-// ServiceEntry enables adding additional entries into Istio's internal
-// service registry.
-//
-//
-//
-//
-//
-message ServiceEntry {
- // The hosts associated with the ServiceEntry. Could be a DNS
- // name with wildcard prefix.
- //
- // 1. The hosts field is used to select matching hosts in VirtualServices and DestinationRules.
- // 2. For HTTP traffic the HTTP Host/Authority header will be matched against the hosts field.
- // 3. For HTTPs or TLS traffic containing Server Name Indication (SNI), the SNI value
- // will be matched against the hosts field.
- //
- // **NOTE 1:** When resolution is set to type DNS and no endpoints
- // are specified, the host field will be used as the DNS name of the
- // endpoint to route traffic to.
- //
- // **NOTE 2:** If the hostname matches with the name of a service
- // from another service registry such as Kubernetes that also
- // supplies its own set of endpoints, the ServiceEntry will be
- // treated as a decorator of the existing Kubernetes
- // service. Properties in the service entry will be added to the
- // Kubernetes service if applicable. Currently, the only the
- // following additional properties will be considered by `istiod`:
- //
- // 1. subjectAltNames: In addition to verifying the SANs of the
- // service accounts associated with the pods of the service, the
- // SANs specified here will also be verified.
- //
- repeated string hosts = 1 [(google.api.field_behavior) = REQUIRED];
-
- // The virtual IP addresses associated with the service. Could be CIDR
- // prefix. For HTTP traffic, generated route configurations will include http route
- // domains for both the `addresses` and `hosts` field values and the destination will
- // be identified based on the HTTP Host/Authority header.
- // If one or more IP addresses are specified,
- // the incoming traffic will be identified as belonging to this service
- // if the destination IP matches the IP/CIDRs specified in the addresses
- // field. If the Addresses field is empty, traffic will be identified
- // solely based on the destination port. In such scenarios, the port on
- // which the service is being accessed must not be shared by any other
- // service in the mesh. In other words, the sidecar will behave as a
- // simple TCP proxy, forwarding incoming traffic on a specified port to
- // the specified destination endpoint IP/host. Unix domain socket
- // addresses are not supported in this field.
- repeated string addresses = 2;
-
- // The ports associated with the external service. If the
- // Endpoints are Unix domain socket addresses, there must be exactly one
- // port.
- repeated Port ports = 3 [(google.api.field_behavior) = REQUIRED];
-
- // Location specifies whether the service is part of Istio mesh or
- // outside the mesh. Location determines the behavior of several
- // features, such as service-to-service mTLS authentication, policy
- // enforcement, etc. When communicating with services outside the mesh,
- // Istio's mTLS authentication is disabled, and policy enforcement is
- // performed on the client-side as opposed to server-side.
- enum Location {
- // Signifies that the service is external to the mesh. Typically used
- // to indicate external services consumed through APIs.
- MESH_EXTERNAL = 0;
-
- // Signifies that the service is part of the mesh. Typically used to
- // indicate services added explicitly as part of expanding the service
- // mesh to include unmanaged infrastructure (e.g., VMs added to a
- // Kubernetes based service mesh).
- MESH_INTERNAL = 1;
- };
-
- // Specify whether the service should be considered external to the mesh
- // or part of the mesh.
- Location location = 4;
-
- // Resolution determines how the proxy will resolve the IP addresses of
- // the network endpoints associated with the service, so that it can
- // route to one of them. The resolution mode specified here has no impact
- // on how the application resolves the IP address associated with the
- // service. The application may still have to use DNS to resolve the
- // service to an IP so that the outbound traffic can be captured by the
- // Proxy. Alternatively, for HTTP services, the application could
- // directly communicate with the proxy (e.g., by setting HTTP_PROXY) to
- // talk to these services.
- enum Resolution {
- // Assume that incoming connections have already been resolved (to a
- // specific destination IP address). Such connections are typically
- // routed via the proxy using mechanisms such as IP table REDIRECT/
- // eBPF. After performing any routing related transformations, the
- // proxy will forward the connection to the IP address to which the
- // connection was bound.
- NONE = 0;
-
- // Use the static IP addresses specified in endpoints (see below) as the
- // backing instances associated with the service.
- STATIC = 1;
-
- // Attempt to resolve the IP address by querying the ambient DNS,
- // asynchronously. If no endpoints are specified, the proxy
- // will resolve the DNS address specified in the hosts field, if
- // wildcards are not used. If endpoints are specified, the DNS
- // addresses specified in the endpoints will be resolved to determine
- // the destination IP address. DNS resolution cannot be used with Unix
- // domain socket endpoints.
- DNS = 2;
-
- // Attempt to resolve the IP address by querying the ambient DNS,
- // asynchronously. Unlike DNS, DNS_ROUND_ROBIN only uses the
- // first IP address returned when a new connection needs to be initiated
- // without relying on complete results of DNS resolution and connections
- // made to hosts will be retained even if DNS records change frequently
- // eliminating draining connection pools and connection cycling.
- // This is best suited for large web scale services that
- // must be accessed via DNS. The proxy will resolve the DNS address
- // specified in the hosts field, if wildcards are not used. DNS resolution
- // cannot be used with Unix domain socket endpoints.
- DNS_ROUND_ROBIN = 3;
- };
-
- // Service discovery mode for the hosts. Care must be taken
- // when setting the resolution mode to NONE for a TCP port without
- // accompanying IP addresses. In such cases, traffic to any IP on
- // said port will be allowed (i.e. `0.0.0.0:`).
- Resolution resolution = 5 [(google.api.field_behavior) = REQUIRED];
-
- // One or more endpoints associated with the service. Only one of
- // `endpoints` or `workloadSelector` can be specified.
- repeated WorkloadEntry endpoints = 6;
-
- // Applicable only for MESH_INTERNAL services. Only one of
- // `endpoints` or `workloadSelector` can be specified. Selects one
- // or more Kubernetes pods or VM workloads (specified using
- // `WorkloadEntry`) based on their labels. The `WorkloadEntry` object
- // representing the VMs should be defined in the same namespace as
- // the ServiceEntry.
- WorkloadSelector workload_selector = 9;
-
- // A list of namespaces to which this service is exported. Exporting a service
- // allows it to be used by sidecars, gateways and virtual services defined in
- // other namespaces. This feature provides a mechanism for service owners
- // and mesh administrators to control the visibility of services across
- // namespace boundaries.
- //
- // If no namespaces are specified then the service is exported to all
- // namespaces by default.
- //
- // The value "." is reserved and defines an export to the same namespace that
- // the service is declared in. Similarly the value "*" is reserved and
- // defines an export to all namespaces.
- //
- // For a Kubernetes Service, the equivalent effect can be achieved by setting
- // the annotation "networking.istio.io/exportTo" to a comma-separated list
- // of namespace names.
- repeated string export_to = 7;
-
- // If specified, the proxy will verify that the server certificate's
- // subject alternate name matches one of the specified values.
- //
- // NOTE: When using the workloadEntry with workloadSelectors, the
- // service account specified in the workloadEntry will also be used
- // to derive the additional subject alternate names that should be
- // verified.
- repeated string subject_alt_names = 8;
-}
diff --git a/proto/networking/v1beta1/sidecar.proto b/proto/networking/v1beta1/sidecar.proto
deleted file mode 100644
index 06aa109..0000000
--- a/proto/networking/v1beta1/sidecar.proto
+++ /dev/null
@@ -1,638 +0,0 @@
-// Copyright 2020 Istio 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";
-
-import "google/api/field_behavior.proto";
-import "networking/v1beta1/gateway.proto";
-import "networking/v1beta1/virtual_service.proto";
-
-// $schema: istio.networking.v1beta1.Sidecar
-// $title: Sidecar
-// $description: Configuration affecting network reachability of a sidecar.
-// $location: https://istio.io/docs/reference/config/networking/sidecar.html
-// $aliases: [/docs/reference/config/networking/v1beta1/sidecar]
-// $mode: none
-
-// `Sidecar` describes the configuration of the sidecar proxy that mediates
-// inbound and outbound communication to the workload instance it is attached to. By
-// default, Istio will program all sidecar proxies in the mesh with the
-// necessary configuration required to reach every workload instance in the mesh, as
-// well as accept traffic on all the ports associated with the
-// workload. The `Sidecar` configuration provides a way to fine tune the set of
-// ports, protocols that the proxy will accept when forwarding traffic to
-// and from the workload. In addition, it is possible to restrict the set
-// of services that the proxy can reach when forwarding outbound traffic
-// from workload instances.
-//
-// Services and configuration in a mesh are organized into one or more
-// namespaces (e.g., a Kubernetes namespace or a CF org/space). A `Sidecar`
-// configuration in a namespace will apply to one or more workload instances in the same
-// namespace, selected using the `workloadSelector` field. In the absence of a
-// `workloadSelector`, it will apply to all workload instances in the same
-// namespace. When determining the `Sidecar` configuration to be applied to a
-// workload instance, preference will be given to the resource with a
-// `workloadSelector` that selects this workload instance, over a `Sidecar` configuration
-// without any `workloadSelector`.
-//
-// **NOTE 1**: *_Each namespace can have only one `Sidecar`
-// configuration without any `workloadSelector`_ that specifies the
-// default for all pods in that namespace*. It is recommended to use
-// the name `default` for the namespace-wide sidecar. The behavior of
-// the system is undefined if more than one selector-less `Sidecar`
-// configurations exist in a given namespace. The behavior of the
-// system is undefined if two or more `Sidecar` configurations with a
-// `workloadSelector` select the same workload instance.
-//
-// **NOTE 2**: *_A `Sidecar` configuration in the `MeshConfig`
-// [root namespace](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig)
-// will be applied by default to all namespaces without a `Sidecar`
-// configuration_*. This global default `Sidecar` configuration should not have
-// any `workloadSelector`.
-//
-// The example below declares a global default `Sidecar` configuration
-// in the root namespace called `istio-config`, that configures
-// sidecars in all namespaces to allow egress traffic only to other
-// workloads in the same namespace as well as to services in the
-// `istio-system` namespace.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: istio-config
-// spec:
-// egress:
-// - hosts:
-// - "./*"
-// - "istio-system/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: istio-config
-// spec:
-// egress:
-// - hosts:
-// - "./*"
-// - "istio-system/*"
-// ```
-// {{}}
-// {{}}
-//
-// The example below declares a `Sidecar` configuration in the
-// `prod-us1` namespace that overrides the global default defined
-// above, and configures the sidecars in the namespace to allow egress
-// traffic to public services in the `prod-us1`, `prod-apis`, and the
-// `istio-system` namespaces.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: prod-us1
-// spec:
-// egress:
-// - hosts:
-// - "prod-us1/*"
-// - "prod-apis/*"
-// - "istio-system/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: default
-// namespace: prod-us1
-// spec:
-// egress:
-// - hosts:
-// - "prod-us1/*"
-// - "prod-apis/*"
-// - "istio-system/*"
-// ```
-// {{}}
-// {{}}
-//
-// The following example declares a `Sidecar` configuration in the
-// `prod-us1` namespace for all pods with labels `app: ratings`
-// belonging to the `ratings.prod-us1` service. The workload accepts
-// inbound HTTP traffic on port 9080. The traffic is then forwarded to
-// the attached workload instance listening on a Unix domain
-// socket. In the egress direction, in addition to the `istio-system`
-// namespace, the sidecar proxies only HTTP traffic bound for port
-// 9080 for services in the `prod-us1` namespace.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: ratings
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: ratings
-// ingress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: unix:///var/run/someuds.sock
-// egress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: egresshttp
-// hosts:
-// - "prod-us1/*"
-// - hosts:
-// - "istio-system/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: ratings
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: ratings
-// ingress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: unix:///var/run/someuds.sock
-// egress:
-// - port:
-// number: 9080
-// protocol: HTTP
-// name: egresshttp
-// hosts:
-// - "prod-us1/*"
-// - hosts:
-// - "istio-system/*"
-// ```
-// {{}}
-// {{}}
-//
-// If the workload is deployed without IPTables-based traffic capture,
-// the `Sidecar` configuration is the only way to configure the ports
-// on the proxy attached to the workload instance. The following
-// example declares a `Sidecar` configuration in the `prod-us1`
-// namespace for all pods with labels `app: productpage` belonging to
-// the `productpage.prod-us1` service. Assuming that these pods are
-// deployed without IPtable rules (i.e. the `istio-init` container)
-// and the proxy metadata `ISTIO_META_INTERCEPTION_MODE` is set to
-// `NONE`, the specification, below, allows such pods to receive HTTP
-// traffic on port 9080 (wrapped inside Istio mutual TLS) and forward
-// it to the application listening on `127.0.0.1:8080`. It also allows
-// the application to communicate with a backing MySQL database on
-// `127.0.0.1:3306`, that then gets proxied to the externally hosted
-// MySQL service at `mysql.foo.com:3306`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: no-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - port:
-// number: 9080 # binds to proxy_instance_ip:9080 (0.0.0.0:9080, if no unicast IP is available for the instance)
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// egress:
-// - port:
-// number: 3306
-// protocol: MYSQL
-// name: egressmysql
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// bind: 127.0.0.1
-// hosts:
-// - "*/mysql.foo.com"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: no-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - port:
-// number: 9080 # binds to proxy_instance_ip:9080 (0.0.0.0:9080, if no unicast IP is available for the instance)
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// egress:
-// - port:
-// number: 3306
-// protocol: MYSQL
-// name: egressmysql
-// captureMode: NONE # not needed if metadata is set for entire proxy
-// bind: 127.0.0.1
-// hosts:
-// - "*/mysql.foo.com"
-// ```
-// {{}}
-// {{}}
-//
-// And the associated service entry for routing to `mysql.foo.com:3306`
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mysql
-// namespace: ns1
-// spec:
-// hosts:
-// - mysql.foo.com
-// ports:
-// - number: 3306
-// name: mysql
-// protocol: MYSQL
-// location: MESH_EXTERNAL
-// resolution: DNS
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-mysql
-// namespace: ns1
-// spec:
-// hosts:
-// - mysql.foo.com
-// ports:
-// - number: 3306
-// name: mysql
-// protocol: MYSQL
-// location: MESH_EXTERNAL
-// resolution: DNS
-// ```
-// {{}}
-// {{}}
-//
-// It is also possible to mix and match traffic capture modes in a single
-// proxy. For example, consider a setup where internal services are on the
-// `192.168.0.0/16` subnet. So, IP tables are setup on the VM to capture all
-// outbound traffic on `192.168.0.0/16` subnet. Assume that the VM has an
-// additional network interface on `172.16.0.0/16` subnet for inbound
-// traffic. The following `Sidecar` configuration allows the VM to expose a
-// listener on `172.16.1.32:80` (the VM's IP) for traffic arriving from the
-// `172.16.0.0/16` subnet.
-//
-// **NOTE**: The `ISTIO_META_INTERCEPTION_MODE` metadata on the
-// proxy in the VM should contain `REDIRECT` or `TPROXY` as its value,
-// implying that IP tables based traffic capture is active.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Sidecar
-// metadata:
-// name: partial-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - bind: 172.16.1.32
-// port:
-// number: 80 # binds to 172.16.1.32:80
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE
-// egress:
-// # use the system detected defaults
-// # sets up configuration to handle outbound traffic to services
-// # in 192.168.0.0/16 subnet, based on information provided by the
-// # service registry
-// - captureMode: IPTABLES
-// hosts:
-// - "*/*"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: Sidecar
-// metadata:
-// name: partial-ip-tables
-// namespace: prod-us1
-// spec:
-// workloadSelector:
-// labels:
-// app: productpage
-// ingress:
-// - bind: 172.16.1.32
-// port:
-// number: 80 # binds to 172.16.1.32:80
-// protocol: HTTP
-// name: somename
-// defaultEndpoint: 127.0.0.1:8080
-// captureMode: NONE
-// egress:
-// # use the system detected defaults
-// # sets up configuration to handle outbound traffic to services
-// # in 192.168.0.0/16 subnet, based on information provided by the
-// # service registry
-// - captureMode: IPTABLES
-// hosts:
-// - "*/*"
-// ```
-// {{}}
-// {{}}
-//
-package istio.networking.v1beta1;
-
-option go_package = "istio.io/api/networking/v1beta1";
-
-// `Sidecar` describes the configuration of the sidecar proxy that mediates
-// inbound and outbound communication of the workload instance to which it is
-// attached.
-//
-//
-//
-//
-//
-message Sidecar {
- // Criteria used to select the specific set of pods/VMs on which this
- // `Sidecar` configuration should be applied. If omitted, the `Sidecar`
- // configuration will be applied to all workload instances in the same namespace.
- WorkloadSelector workload_selector = 1;
-
- // Ingress specifies the configuration of the sidecar for processing
- // inbound traffic to the attached workload instance. If omitted, Istio will
- // automatically configure the sidecar based on the information about the workload
- // obtained from the orchestration platform (e.g., exposed ports, services,
- // etc.). If specified, inbound ports are configured if and only if the
- // workload instance is associated with a service.
- repeated IstioIngressListener ingress = 2;
-
- // Egress specifies the configuration of the sidecar for processing
- // outbound traffic from the attached workload instance to other
- // services in the mesh. If not specified, inherits the system
- // detected defaults from the namespace-wide or the global default Sidecar.
- repeated IstioEgressListener egress = 3;
-
- // Configuration for the outbound traffic policy. If your
- // application uses one or more external services that are not known
- // apriori, setting the policy to `ALLOW_ANY` will cause the
- // sidecars to route any unknown traffic originating from the
- // application to its requested destination. If not specified,
- // inherits the system detected defaults from the namespace-wide or
- // the global default Sidecar.
- OutboundTrafficPolicy outbound_traffic_policy = 4;
-
- reserved "localhost";
- reserved 5, 6;
-}
-
-// `IstioIngressListener` specifies the properties of an inbound
-// traffic listener on the sidecar proxy attached to a workload instance.
-message IstioIngressListener {
- // The port associated with the listener.
- Port port = 1 [(google.api.field_behavior) = REQUIRED];
-
- // The IP to which the listener should be bound. Must be in the
- // format `x.x.x.x`. Unix domain socket addresses are not allowed in
- // the bind field for ingress listeners. If omitted, Istio will
- // automatically configure the defaults based on imported services
- // and the workload instances to which this configuration is applied
- // to.
- string bind = 2;
-
- // The captureMode option dictates how traffic to the listener is
- // expected to be captured (or not).
- CaptureMode capture_mode = 3;
-
- // The IP endpoint or Unix domain socket to which
- // traffic should be forwarded to. This configuration can be used to
- // redirect traffic arriving at the bind `IP:Port` on the sidecar to a `localhost:port`
- // or Unix domain socket where the application workload instance is listening for
- // connections. Arbitrary IPs are not supported. Format should be one of `127.0.0.1:PORT`, `0.0.0.0:PORT`
- // (which will forward to the instance IP), or `unix:///path/to/socket`
- string default_endpoint = 4 [(google.api.field_behavior) = REQUIRED];
-
- reserved "localhost_client_tls";
- reserved 5, 6;
-
- // Set of TLS related options that will enable TLS termination on the
- // sidecar for requests originating from outside the mesh.
- // Currently supports only SIMPLE and MUTUAL TLS modes.
- // $hide_from_docs
- ServerTLSSettings tls = 7;
-}
-
-// `IstioEgressListener` specifies the properties of an outbound traffic
-// listener on the sidecar proxy attached to a workload instance.
-message IstioEgressListener {
- // The port associated with the listener. If using Unix domain socket,
- // use 0 as the port number, with a valid protocol. The port if
- // specified, will be used as the default destination port associated
- // with the imported hosts. If the port is omitted, Istio will infer the
- // listener ports based on the imported hosts. Note that when multiple
- // egress listeners are specified, where one or more listeners have
- // specific ports while others have no port, the hosts exposed on a
- // listener port will be based on the listener with the most specific
- // port.
- Port port = 1;
-
- // The IP or the Unix domain socket to which the listener should be bound
- // to. Port MUST be specified if bind is not empty. Format: `x.x.x.x` or
- // `unix:///path/to/uds` or `unix://@foobar` (Linux abstract namespace). If
- // omitted, Istio will automatically configure the defaults based on imported
- // services, the workload instances to which this configuration is applied to and
- // the captureMode. If captureMode is `NONE`, bind will default to
- // 127.0.0.1.
- string bind = 2;
-
- // When the bind address is an IP, the captureMode option dictates
- // how traffic to the listener is expected to be captured (or not).
- // captureMode must be DEFAULT or `NONE` for Unix domain socket binds.
- CaptureMode capture_mode = 3;
-
- // One or more service hosts exposed by the listener
- // in `namespace/dnsName` format. Services in the specified namespace
- // matching `dnsName` will be exposed.
- // The corresponding service can be a service in the service registry
- // (e.g., a Kubernetes or cloud foundry service) or a service specified
- // using a `ServiceEntry` or `VirtualService` configuration. Any
- // associated `DestinationRule` in the same namespace will also be used.
- //
- // The `dnsName` should be specified using FQDN format, optionally including
- // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
- // Set the `dnsName` to `*` to select all services from the specified namespace
- // (e.g., `prod/*`).
- //
- // The `namespace` can be set to `*`, `.`, or `~`, representing any, the current,
- // or no namespace, respectively. For example, `*/foo.example.com` selects the
- // service from any available namespace while `./foo.example.com` only selects
- // the service from the namespace of the sidecar. If a host is set to `*/*`,
- // Istio will configure the sidecar to be able to reach every service in the
- // mesh that is exported to the sidecar's namespace. The value `~/*` can be used
- // to completely trim the configuration for sidecars that simply receive traffic
- // and respond, but make no outbound connections of their own.
- //
- // NOTE: Only services and configuration artifacts exported to the sidecar's
- // namespace (e.g., `exportTo` value of `*`) can be referenced.
- // Private configurations (e.g., `exportTo` set to `.`) will
- // not be available. Refer to the `exportTo` setting in `VirtualService`,
- // `DestinationRule`, and `ServiceEntry` configurations for details.
- repeated string hosts = 4 [(google.api.field_behavior) = REQUIRED];
-
- reserved "localhost_server_tls";
- reserved 5, 6;
-}
-
-// `WorkloadSelector` specifies the criteria used to determine if the
-// `Gateway`, `Sidecar`, `EnvoyFilter`, or `ServiceEntry`
-// configuration can be applied to a proxy. The matching criteria
-// includes the metadata associated with a proxy, workload instance
-// info such as labels attached to the pod/VM, or any other info that
-// the proxy provides to Istio during the initial handshake. If
-// multiple conditions are specified, all conditions need to match in
-// order for the workload instance to be selected. Currently, only
-// label based selection mechanism is supported.
-message WorkloadSelector {
- // One or more labels that indicate a specific set of pods/VMs
- // on which the configuration should be applied. The scope of
- // label search is restricted to the configuration namespace in which the
- // the resource is present.
- map labels = 1 [(google.api.field_behavior) = REQUIRED];
-
- // $hide_from_docs
- // other forms of identification supplied by the proxy
- // when connecting to Pilot, such as X509 fields, tenant IDs, JWT,
- // etc. This has nothing to do with the request level authN etc.
-}
-
-// `OutboundTrafficPolicy` sets the default behavior of the sidecar for
-// handling outbound traffic from the application.
-// If your application uses one or more external
-// services that are not known apriori, setting the policy to `ALLOW_ANY`
-// will cause the sidecars to route any unknown traffic originating from
-// the application to its requested destination. Users are strongly
-// encouraged to use `ServiceEntry` configurations to explicitly declare any external
-// dependencies, instead of using `ALLOW_ANY`, so that traffic to these
-// services can be monitored.
-message OutboundTrafficPolicy {
- enum Mode {
- // Outbound traffic will be restricted to services defined in the
- // service registry as well as those defined through `ServiceEntry` configurations.
- REGISTRY_ONLY = 0;
- // Outbound traffic to unknown destinations will be allowed, in case
- // there are no services or `ServiceEntry` configurations for the destination port.
- ALLOW_ANY = 1;
- }
- Mode mode = 1;
-
- // Specifies the details of the egress proxy to which unknown
- // traffic should be forwarded to from the sidecar. Valid only if
- // the mode is set to ALLOW_ANY. If not specified when the mode is
- // ALLOW_ANY, the sidecar will send the unknown traffic directly to
- // the IP requested by the application.
- //
- // ** NOTE 1**: The specified egress host must be imported in the
- // egress section for the traffic forwarding to work.
- //
- // ** NOTE 2**: An Envoy based egress gateway is unlikely to be able
- // to handle plain text TCP connections forwarded from the sidecar.
- // Envoy's dynamic forward proxy can handle only HTTP and TLS
- // connections.
- // $hide_from_docs
- Destination egress_proxy = 2;
-}
-
-
-// `CaptureMode` describes how traffic to a listener is expected to be
-// captured. Applicable only when the listener is bound to an IP.
-enum CaptureMode {
- // The default capture mode defined by the environment.
- DEFAULT = 0;
-
- // Capture traffic using IPtables redirection.
- IPTABLES = 1;
-
- // No traffic capture. When used in an egress listener, the application is
- // expected to explicitly communicate with the listener port or Unix
- // domain socket. When used in an ingress listener, care needs to be taken
- // to ensure that the listener port is not in use by other processes on
- // the host.
- NONE = 2;
-}
diff --git a/proto/networking/v1beta1/virtual_service.proto b/proto/networking/v1beta1/virtual_service.proto
deleted file mode 100644
index 6d7e6ea..0000000
--- a/proto/networking/v1beta1/virtual_service.proto
+++ /dev/null
@@ -1,1874 +0,0 @@
-// Copyright 2020 Istio 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";
-
-import "google/api/field_behavior.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/wrappers.proto";
-
-// $schema: istio.networking.v1beta1.VirtualService
-// $title: Virtual Service
-// $description: Configuration affecting label/content routing, sni routing, etc.
-// $location: https://istio.io/docs/reference/config/networking/virtual-service.html
-// $aliases: [/docs/reference/config/networking/v1beta1/virtual-service]
-// $mode: none
-
-// Configuration affecting traffic routing. Here are a few terms useful to define
-// in the context of traffic routing.
-//
-// `Service` a unit of application behavior bound to a unique name in a
-// service registry. Services consist of multiple network *endpoints*
-// implemented by workload instances running on pods, containers, VMs etc.
-//
-// `Service versions (a.k.a. subsets)` - In a continuous deployment
-// scenario, for a given service, there can be distinct subsets of
-// instances running different variants of the application binary. These
-// variants are not necessarily different API versions. They could be
-// iterative changes to the same service, deployed in different
-// environments (prod, staging, dev, etc.). Common scenarios where this
-// occurs include A/B testing, canary rollouts, etc. The choice of a
-// particular version can be decided based on various criterion (headers,
-// url, etc.) and/or by weights assigned to each version. Each service has
-// a default version consisting of all its instances.
-//
-// `Source` - A downstream client calling a service.
-//
-// `Host` - The address used by a client when attempting to connect to a
-// service.
-//
-// `Access model` - Applications address only the destination service
-// (Host) without knowledge of individual service versions (subsets). The
-// actual choice of the version is determined by the proxy/sidecar, enabling the
-// application code to decouple itself from the evolution of dependent
-// services.
-//
-// A `VirtualService` defines a set of traffic routing rules to apply when a host is
-// addressed. Each routing rule defines matching criteria for traffic of a specific
-// protocol. If the traffic is matched, then it is sent to a named destination service
-// (or subset/version of it) defined in the registry.
-//
-// The source of traffic can also be matched in a routing rule. This allows routing
-// to be customized for specific client contexts.
-//
-// The following example on Kubernetes, routes all HTTP traffic by default to
-// pods of the reviews service with label "version: v1". In addition,
-// HTTP requests with path starting with /wpcatalog/ or /consumercatalog/ will
-// be rewritten to /newcatalog and sent to pods with label "version: v2".
-//
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - name: "reviews-v2-routes"
-// match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// - name: "reviews-v1-route"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - name: "reviews-v2-routes"
-// match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// - name: "reviews-v1-route"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-// {{}}
-//
-// A subset/version of a route destination is identified with a reference
-// to a named service subset which must be declared in a corresponding
-// `DestinationRule`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-// {{}}
-//
-package istio.networking.v1beta1;
-
-option go_package = "istio.io/api/networking/v1beta1";
-
-// Configuration affecting traffic routing.
-//
-//
-//
-//
-//
-message VirtualService {
- // The destination hosts to which traffic is being sent. Could
- // be a DNS name with wildcard prefix or an IP address. Depending on the
- // platform, short-names can also be used instead of a FQDN (i.e. has no
- // dots in the name). In such a scenario, the FQDN of the host would be
- // derived based on the underlying platform.
- //
- // A single VirtualService can be used to describe all the traffic
- // properties of the corresponding hosts, including those for multiple
- // HTTP and TCP ports. Alternatively, the traffic properties of a host
- // can be defined using more than one VirtualService, with certain
- // caveats. Refer to the
- // [Operations Guide](https://istio.io/docs/ops/best-practices/traffic-management/#split-virtual-services)
- // for details.
- //
- // *Note for Kubernetes users*: When short names are used (e.g. "reviews"
- // instead of "reviews.default.svc.cluster.local"), Istio will interpret
- // the short name based on the namespace of the rule, not the service. A
- // rule in the "default" namespace containing a host "reviews" will be
- // interpreted as "reviews.default.svc.cluster.local", irrespective of
- // the actual namespace associated with the reviews service. _To avoid
- // potential misconfigurations, it is recommended to always use fully
- // qualified domain names over short names._
- //
- // The hosts field applies to both HTTP and TCP services. Service inside
- // the mesh, i.e., those found in the service registry, must always be
- // referred to using their alphanumeric names. IP addresses are allowed
- // only for services defined via the Gateway.
- //
- // *Note*: It must be empty for a delegate VirtualService.
- repeated string hosts = 1;
-
- // The names of gateways and sidecars that should apply these routes.
- // Gateways in other namespaces may be referred to by
- // `/`; specifying a gateway with no
- // namespace qualifier is the same as specifying the VirtualService's
- // namespace. A single VirtualService is used for sidecars inside the mesh as
- // well as for one or more gateways. The selection condition imposed by this
- // field can be overridden using the source field in the match conditions
- // of protocol-specific routes. The reserved word `mesh` is used to imply
- // all the sidecars in the mesh. When this field is omitted, the default
- // gateway (`mesh`) will be used, which would apply the rule to all
- // sidecars in the mesh. If a list of gateway names is provided, the
- // rules will apply only to the gateways. To apply the rules to both
- // gateways and sidecars, specify `mesh` as one of the gateway names.
- repeated string gateways = 2;
-
- // An ordered list of route rules for HTTP traffic. HTTP routes will be
- // applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway
- // ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service
- // entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching
- // an incoming request is used.
- repeated HTTPRoute http = 3;
-
- // An ordered list of route rule for non-terminated TLS & HTTPS
- // traffic. Routing is typically performed using the SNI value presented
- // by the ClientHello message. TLS routes will be applied to platform
- // service ports named 'https-*', 'tls-*', unterminated gateway ports using
- // HTTPS/TLS protocols (i.e. with "passthrough" TLS mode) and service
- // entry ports using HTTPS/TLS protocols. The first rule matching an
- // incoming request is used. NOTE: Traffic 'https-*' or 'tls-*' ports
- // without associated virtual service will be treated as opaque TCP
- // traffic.
- repeated TLSRoute tls = 5;
-
- // An ordered list of route rules for opaque TCP traffic. TCP routes will
- // be applied to any port that is not a HTTP or TLS port. The first rule
- // matching an incoming request is used.
- repeated TCPRoute tcp = 4;
-
- // A list of namespaces to which this virtual service is exported. Exporting a
- // virtual service allows it to be used by sidecars and gateways defined in
- // other namespaces. This feature provides a mechanism for service owners
- // and mesh administrators to control the visibility of virtual services
- // across namespace boundaries.
- //
- // If no namespaces are specified then the virtual service is exported to all
- // namespaces by default.
- //
- // The value "." is reserved and defines an export to the same namespace that
- // the virtual service is declared in. Similarly the value "*" is reserved and
- // defines an export to all namespaces.
- repeated string export_to = 6;
-}
-
-// Destination indicates the network addressable service to which the
-// request/connection will be sent after processing a routing rule. The
-// destination.host should unambiguously refer to a service in the service
-// registry. Istio's service registry is composed of all the services found
-// in the platform's service registry (e.g., Kubernetes services, Consul
-// services), as well as services declared through the
-// [ServiceEntry](https://istio.io/docs/reference/config/networking/service-entry/#ServiceEntry) resource.
-//
-// *Note for Kubernetes users*: When short names are used (e.g. "reviews"
-// instead of "reviews.default.svc.cluster.local"), Istio will interpret
-// the short name based on the namespace of the rule, not the service. A
-// rule in the "default" namespace containing a host "reviews will be
-// interpreted as "reviews.default.svc.cluster.local", irrespective of the
-// actual namespace associated with the reviews service. _To avoid potential
-// misconfigurations, it is recommended to always use fully qualified
-// domain names over short names._
-//
-// The following Kubernetes example routes all traffic by default to pods
-// of the reviews service with label "version: v1" (i.e., subset v1), and
-// some to subset v2, in a Kubernetes environment.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// namespace: foo
-// spec:
-// hosts:
-// - reviews # interpreted as reviews.foo.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v2
-// - route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// namespace: foo
-// spec:
-// hosts:
-// - reviews # interpreted as reviews.foo.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: "/wpcatalog"
-// - uri:
-// prefix: "/consumercatalog"
-// rewrite:
-// uri: "/newcatalog"
-// route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v2
-// - route:
-// - destination:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-// {{}}
-//
-// And the associated DestinationRule
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// namespace: foo
-// spec:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// namespace: foo
-// spec:
-// host: reviews # interpreted as reviews.foo.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-// {{}}
-//
-// The following VirtualService sets a timeout of 5s for all calls to
-// productpage.prod.svc.cluster.local service in Kubernetes. Notice that
-// there are no subsets defined in this rule. Istio will fetch all
-// instances of productpage.prod.svc.cluster.local service from the service
-// registry and populate the sidecar's load balancing pool. Also, notice
-// that this rule is set in the istio-system namespace but uses the fully
-// qualified domain name of the productpage service,
-// productpage.prod.svc.cluster.local. Therefore the rule's namespace does
-// not have an impact in resolving the name of the productpage service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: my-productpage-rule
-// namespace: istio-system
-// spec:
-// hosts:
-// - productpage.prod.svc.cluster.local # ignores rule namespace
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: productpage.prod.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: my-productpage-rule
-// namespace: istio-system
-// spec:
-// hosts:
-// - productpage.prod.svc.cluster.local # ignores rule namespace
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: productpage.prod.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-//
-// To control routing for traffic bound to services outside the mesh, external
-// services must first be added to Istio's internal service registry using the
-// ServiceEntry resource. VirtualServices can then be defined to control traffic
-// bound to these external services. For example, the following rules define a
-// Service for wikipedia.org and set a timeout of 5s for HTTP requests.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wikipedia
-// spec:
-// hosts:
-// - wikipedia.org
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: example-http
-// protocol: HTTP
-// resolution: DNS
-// ---
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: my-wiki-rule
-// spec:
-// hosts:
-// - wikipedia.org
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: wikipedia.org
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: external-svc-wikipedia
-// spec:
-// hosts:
-// - wikipedia.org
-// location: MESH_EXTERNAL
-// ports:
-// - number: 80
-// name: example-http
-// protocol: HTTP
-// resolution: DNS
-// ---
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: my-wiki-rule
-// spec:
-// hosts:
-// - wikipedia.org
-// http:
-// - timeout: 5s
-// route:
-// - destination:
-// host: wikipedia.org
-// ```
-// {{}}
-// {{}}
-//
-message Destination {
- // The name of a service from the service registry. Service
- // names are looked up from the platform's service registry (e.g.,
- // Kubernetes services, Consul services, etc.) and from the hosts
- // declared by [ServiceEntry](https://istio.io/docs/reference/config/networking/service-entry/#ServiceEntry). Traffic forwarded to
- // destinations that are not found in either of the two, will be dropped.
- //
- // *Note for Kubernetes users*: When short names are used (e.g. "reviews"
- // instead of "reviews.default.svc.cluster.local"), Istio will interpret
- // the short name based on the namespace of the rule, not the service. A
- // rule in the "default" namespace containing a host "reviews will be
- // interpreted as "reviews.default.svc.cluster.local", irrespective of
- // the actual namespace associated with the reviews service. To avoid
- // potential misconfiguration, it is recommended to always use fully
- // qualified domain names over short names.
- string host = 1 [(google.api.field_behavior) = REQUIRED];
-
- // The name of a subset within the service. Applicable only to services
- // within the mesh. The subset must be defined in a corresponding
- // DestinationRule.
- string subset = 2;
-
- // Specifies the port on the host that is being addressed. If a service
- // exposes only a single port it is not required to explicitly select the
- // port.
- PortSelector port = 3;
-}
-
-// Describes match conditions and actions for routing HTTP/1.1, HTTP2, and
-// gRPC traffic. See VirtualService for usage examples.
-message HTTPRoute {
- // The name assigned to the route for debugging purposes. The
- // route's name will be concatenated with the match's name and will
- // be logged in the access logs for requests matching this
- // route/match.
- string name = 17;
-
- // Match conditions to be satisfied for the rule to be
- // activated. All conditions inside a single match block have AND
- // semantics, while the list of match blocks have OR semantics. The rule
- // is matched if any one of the match blocks succeed.
- repeated HTTPMatchRequest match = 1;
-
- // A HTTP rule can either redirect or forward (default) traffic. The
- // forwarding target can be one of several versions of a service (see
- // glossary in beginning of document). Weights associated with the
- // service version determine the proportion of traffic it receives.
- repeated HTTPRouteDestination route = 2;
-
- // A HTTP rule can either redirect or forward (default) traffic. If
- // traffic passthrough option is specified in the rule,
- // route/redirect will be ignored. The redirect primitive can be used to
- // send a HTTP 301 redirect to a different URI or Authority.
- HTTPRedirect redirect = 3;
-
- // Delegate is used to specify the particular VirtualService which
- // can be used to define delegate HTTPRoute.
- //
- // It can be set only when `Route` and `Redirect` are empty, and the route
- // rules of the delegate VirtualService will be merged with that in the
- // current one.
- //
- // **NOTE**:
- //
- // 1. Only one level delegation is supported.
- // 2. The delegate's HTTPMatchRequest must be a strict subset of the root's,
- // otherwise there is a conflict and the HTTPRoute will not take effect.
- Delegate delegate = 20;
-
- // Rewrite HTTP URIs and Authority headers. Rewrite cannot be used with
- // Redirect primitive. Rewrite will be performed before forwarding.
- HTTPRewrite rewrite = 4;
-
- reserved 5;
- reserved "websocket_upgrade";
-
- // Timeout for HTTP requests, default is disabled.
- google.protobuf.Duration timeout = 6;
-
- // Retry policy for HTTP requests.
- HTTPRetry retries = 7;
-
- // Fault injection policy to apply on HTTP traffic at the client side.
- // Note that timeouts or retries will not be enabled when faults are
- // enabled on the client side.
- HTTPFaultInjection fault = 8;
-
- // Mirror HTTP traffic to a another destination in addition to forwarding
- // the requests to the intended destination. Mirrored traffic is on a
- // best effort basis where the sidecar/gateway will not wait for the
- // mirrored cluster to respond before returning the response from the
- // original destination. Statistics will be generated for the mirrored
- // destination.
- Destination mirror = 9;
-
- // Percentage of the traffic to be mirrored by the `mirror` field.
- // Use of integer `mirror_percent` value is deprecated. Use the
- // double `mirror_percentage` field instead
- // $hide_from_docs
- google.protobuf.UInt32Value mirror_percent = 18 [deprecated=true];
-
- // Percentage of the traffic to be mirrored by the `mirror` field.
- // If this field is absent, all the traffic (100%) will be mirrored.
- // Max value is 100.
- Percent mirror_percentage = 19;
-
- // Cross-Origin Resource Sharing policy (CORS). Refer to
- // [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)
- // for further details about cross origin resource sharing.
- CorsPolicy cors_policy = 10;
-
- reserved 11 to 15;
- reserved "append_headers", "remove_response_headers", "append_response_headers","remove_request_headers", "append_request_headers";
-
- // Header manipulation rules
- Headers headers = 16;
-
- // $hide_from_docs
- // Next available field number: 21
-}
-
-
-// Describes the delegate VirtualService.
-// The following routing rules forward the traffic to `/productpage` by a delegate VirtualService named `productpage`,
-// forward the traffic to `/reviews` by a delegate VirtualService named `reviews`.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo
-// spec:
-// hosts:
-// - "bookinfo.com"
-// gateways:
-// - mygateway
-// http:
-// - match:
-// - uri:
-// prefix: "/productpage"
-// delegate:
-// name: productpage
-// namespace: nsA
-// - match:
-// - uri:
-// prefix: "/reviews"
-// delegate:
-// name: reviews
-// namespace: nsB
-// ```
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: productpage
-// namespace: nsA
-// spec:
-// http:
-// - match:
-// - uri:
-// prefix: "/productpage/v1/"
-// route:
-// - destination:
-// host: productpage-v1.nsA.svc.cluster.local
-// - route:
-// - destination:
-// host: productpage.nsA.svc.cluster.local
-// ```
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews
-// namespace: nsB
-// spec:
-// http:
-// - route:
-// - destination:
-// host: reviews.nsB.svc.cluster.local
-// ```
-message Delegate {
- // Name specifies the name of the delegate VirtualService.
- string name = 1;
- // Namespace specifies the namespace where the delegate VirtualService resides.
- // By default, it is same to the root's.
- string namespace = 2;
-}
-
-
-// Message headers can be manipulated when Envoy forwards requests to,
-// or responses from, a destination service. Header manipulation rules can
-// be specified for a specific route destination or for all destinations.
-// The following VirtualService adds a `test` header with the value `true`
-// to requests that are routed to any `reviews` service destination.
-// It also removes the `foo` response header, but only from responses
-// coming from the `v1` subset (version) of the `reviews` service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - headers:
-// request:
-// set:
-// test: "true"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// headers:
-// response:
-// remove:
-// - foo
-// weight: 75
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - headers:
-// request:
-// set:
-// test: "true"
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// headers:
-// response:
-// remove:
-// - foo
-// weight: 75
-// ```
-// {{}}
-// {{}}
-message Headers {
- // Header manipulation rules to apply before forwarding a request
- // to the destination service
- HeaderOperations request = 1;
- // Header manipulation rules to apply before returning a response
- // to the caller
- HeaderOperations response = 2;
-
- // HeaderOperations Describes the header manipulations to apply
- message HeaderOperations {
- // Overwrite the headers specified by key with the given values
- map set = 1;
- // Append the given values to the headers specified by keys
- // (will create a comma-separated list of values)
- map add = 2;
- // Remove the specified headers
- repeated string remove = 3;
- }
-}
-
-// Describes match conditions and actions for routing unterminated TLS
-// traffic (TLS/HTTPS) The following routing rule forwards unterminated TLS
-// traffic arriving at port 443 of gateway called "mygateway" to internal
-// services in the mesh based on the SNI value.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-sni
-// spec:
-// hosts:
-// - "*.bookinfo.com"
-// gateways:
-// - mygateway
-// tls:
-// - match:
-// - port: 443
-// sniHosts:
-// - login.bookinfo.com
-// route:
-// - destination:
-// host: login.prod.svc.cluster.local
-// - match:
-// - port: 443
-// sniHosts:
-// - reviews.bookinfo.com
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-sni
-// spec:
-// hosts:
-// - "*.bookinfo.com"
-// gateways:
-// - mygateway
-// tls:
-// - match:
-// - port: 443
-// sniHosts:
-// - login.bookinfo.com
-// route:
-// - destination:
-// host: login.prod.svc.cluster.local
-// - match:
-// - port: 443
-// sniHosts:
-// - reviews.bookinfo.com
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-message TLSRoute {
- // Match conditions to be satisfied for the rule to be
- // activated. All conditions inside a single match block have AND
- // semantics, while the list of match blocks have OR semantics. The rule
- // is matched if any one of the match blocks succeed.
- repeated TLSMatchAttributes match = 1 [(google.api.field_behavior) = REQUIRED];
-
- // The destination to which the connection should be forwarded to.
- repeated RouteDestination route = 2;
-}
-
-// Describes match conditions and actions for routing TCP traffic. The
-// following routing rule forwards traffic arriving at port 27017 for
-// mongo.prod.svc.cluster.local to another Mongo server on port 5555.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// spec:
-// hosts:
-// - mongo.prod.svc.cluster.local
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.backup.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: bookinfo-mongo
-// spec:
-// hosts:
-// - mongo.prod.svc.cluster.local
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.backup.svc.cluster.local
-// port:
-// number: 5555
-// ```
-// {{}}
-// {{}}
-message TCPRoute {
- // Match conditions to be satisfied for the rule to be
- // activated. All conditions inside a single match block have AND
- // semantics, while the list of match blocks have OR semantics. The rule
- // is matched if any one of the match blocks succeed.
- repeated L4MatchAttributes match = 1;
-
- // The destination to which the connection should be forwarded to.
- repeated RouteDestination route = 2;
-}
-
-// HttpMatchRequest specifies a set of criterion to be met in order for the
-// rule to be applied to the HTTP request. For example, the following
-// restricts the rule to match only requests where the URL path
-// starts with /ratings/v2/ and the request contains a custom `end-user` header
-// with value `jason`.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - headers:
-// end-user:
-// exact: jason
-// uri:
-// prefix: "/ratings/v2/"
-// ignoreUriCase: true
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - headers:
-// end-user:
-// exact: jason
-// uri:
-// prefix: "/ratings/v2/"
-// ignoreUriCase: true
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// ```
-// {{}}
-// {{}}
-//
-// HTTPMatchRequest CANNOT be empty.
-// **Note:** No regex string match can be set when delegate VirtualService is specified.
-message HTTPMatchRequest {
- // The name assigned to a match. The match's name will be
- // concatenated with the parent route's name and will be logged in
- // the access logs for requests matching this route.
- string name = 11;
-
- // URI to match
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- // **Note:** Case-insensitive matching could be enabled via the
- // `ignore_uri_case` flag.
- StringMatch uri = 1;
-
- // URI Scheme
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- StringMatch scheme = 2;
-
- // HTTP Method
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- StringMatch method = 3;
-
- // HTTP Authority
- // values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- StringMatch authority = 4;
-
- // The header keys must be lowercase and use hyphen as the separator,
- // e.g. _x-request-id_.
- //
- // Header values are case-sensitive and formatted as follows:
- //
- // - `exact: "value"` for exact string match
- //
- // - `prefix: "value"` for prefix-based match
- //
- // - `regex: "value"` for RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- //
- // If the value is empty and only the name of header is specfied, presence of the header is checked.
- // **Note:** The keys `uri`, `scheme`, `method`, and `authority` will be ignored.
- map headers = 5;
-
- // Specifies the ports on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they support,
- // in these cases it is not required to explicitly select the port.
- uint32 port = 6;
-
- // One or more labels that constrain the applicability of a rule to source (client) workloads
- // with the given labels. If the VirtualService has a list of gateways specified
- // in the top-level `gateways` field, it must include the reserved gateway
- // `mesh` for this field to be applicable.
- map source_labels = 7;
-
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- repeated string gateways = 8;
-
- // Query parameters for matching.
- //
- // Ex:
- //
- // - For a query parameter like "?key=true", the map key would be "key" and
- // the string match could be defined as `exact: "true"`.
- //
- // - For a query parameter like "?key", the map key would be "key" and the
- // string match could be defined as `exact: ""`.
- //
- // - For a query parameter like "?key=123", the map key would be "key" and the
- // string match could be defined as `regex: "\d+$"`. Note that this
- // configuration will only match values like "123" but not "a123" or "123a".
- //
- // **Note:** `prefix` matching is currently not supported.
- map query_params = 9;
-
- // Flag to specify whether the URI matching should be case-insensitive.
- //
- // **Note:** The case will be ignored only in the case of `exact` and `prefix`
- // URI matches.
- bool ignore_uri_case = 10;
-
- // withoutHeader has the same syntax with the header, but has opposite meaning.
- // If a header is matched with a matching rule among withoutHeader, the traffic becomes not matched one.
- map without_headers = 12;
-
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- string source_namespace = 13;
-}
-
-// Each routing rule is associated with one or more service versions (see
-// glossary in beginning of document). Weights associated with the version
-// determine the proportion of traffic it receives. For example, the
-// following rule will route 25% of traffic for the "reviews" service to
-// instances with the "v2" tag and the remaining traffic (i.e., 75%) to
-// "v1".
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// weight: 75
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v2
-// weight: 25
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// weight: 75
-// ```
-// {{}}
-// {{}}
-//
-// And the associated DestinationRule
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: DestinationRule
-// metadata:
-// name: reviews-destination
-// spec:
-// host: reviews.prod.svc.cluster.local
-// subsets:
-// - name: v1
-// labels:
-// version: v1
-// - name: v2
-// labels:
-// version: v2
-// ```
-// {{}}
-// {{}}
-//
-// Traffic can also be split across two entirely different services without
-// having to define new subsets. For example, the following rule forwards 25% of
-// traffic to reviews.com to dev.reviews.com
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route-two-domains
-// spec:
-// hosts:
-// - reviews.com
-// http:
-// - route:
-// - destination:
-// host: dev.reviews.com
-// weight: 25
-// - destination:
-// host: reviews.com
-// weight: 75
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route-two-domains
-// spec:
-// hosts:
-// - reviews.com
-// http:
-// - route:
-// - destination:
-// host: dev.reviews.com
-// weight: 25
-// - destination:
-// host: reviews.com
-// weight: 75
-// ```
-// {{}}
-// {{}}
-//
-message HTTPRouteDestination {
- // Destination uniquely identifies the instances of a service
- // to which the request/connection should be forwarded to.
- Destination destination = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Weight specifies the relative proportion of traffic to be forwarded to the destination. A destination will receive `weight/(sum of all weights)` requests.
- // If there is only one destination in a rule, it will receive all traffic.
- // Otherwise, if weight is `0`, the destination will not receive any traffic.
- int32 weight = 2;
-
- reserved 3 to 6;
- reserved "remove_response_headers", "append_response_headers", "remove_request_headers", "append_request_headers";
-
- // Header manipulation rules
- Headers headers = 7;
-}
-
-// L4 routing rule weighted destination.
-message RouteDestination {
- // Destination uniquely identifies the instances of a service
- // to which the request/connection should be forwarded to.
- Destination destination = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Weight specifies the relative proportion of traffic to be forwarded to the destination. A destination will receive `weight/(sum of all weights)` requests.
- // If there is only one destination in a rule, it will receive all traffic.
- // Otherwise, if weight is `0`, the destination will not receive any traffic.
- int32 weight = 2;
-}
-
-// L4 connection match attributes. Note that L4 connection matching support
-// is incomplete.
-message L4MatchAttributes {
- // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
- // a.b.c.d/xx form or just a.b.c.d.
- repeated string destination_subnets = 1;
-
- // Specifies the port on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they support,
- // in these cases it is not required to explicitly select the port.
- uint32 port = 2;
-
- // IPv4 or IPv6 ip address of source with optional subnet. E.g., a.b.c.d/xx
- // form or just a.b.c.d
- // $hide_from_docs
- string source_subnet = 3;
-
- // One or more labels that constrain the applicability of a rule to
- // workloads with the given labels. If the VirtualService has a list of
- // gateways specified in the top-level `gateways` field, it should include the reserved gateway
- // `mesh` in order for this field to be applicable.
- map source_labels = 4;
-
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- repeated string gateways = 5;
-
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- string source_namespace = 6;
-}
-
-// TLS connection match attributes.
-message TLSMatchAttributes {
- // SNI (server name indicator) to match on. Wildcard prefixes
- // can be used in the SNI value, e.g., *.com will match foo.example.com
- // as well as example.com. An SNI value must be a subset (i.e., fall
- // within the domain) of the corresponding virtual serivce's hosts.
- repeated string sni_hosts = 1 [(google.api.field_behavior) = REQUIRED];
-
- // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
- // a.b.c.d/xx form or just a.b.c.d.
- repeated string destination_subnets = 2;
-
- // Specifies the port on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they
- // support, in these cases it is not required to explicitly select the
- // port.
- uint32 port = 3;
-
- reserved 4;
- reserved "source_subnet";
-
- // One or more labels that constrain the applicability of a rule to
- // workloads with the given labels. If the VirtualService has a list of
- // gateways specified in the top-level `gateways` field, it should include the reserved gateway
- // `mesh` in order for this field to be applicable.
- map source_labels = 5;
-
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- repeated string gateways = 6;
-
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- string source_namespace = 7;
-}
-
-// HTTPRedirect can be used to send a 301 redirect response to the caller,
-// where the Authority/Host and the URI in the response can be swapped with
-// the specified values. For example, the following rule redirects
-// requests for /v1/getProductRatings API on the ratings service to
-// /v1/bookRatings provided by the bookratings service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// exact: /v1/getProductRatings
-// redirect:
-// uri: /v1/bookRatings
-// authority: newratings.default.svc.cluster.local
-// ...
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// exact: /v1/getProductRatings
-// redirect:
-// uri: /v1/bookRatings
-// authority: newratings.default.svc.cluster.local
-// ...
-// ```
-// {{}}
-// {{}}
-//
-message HTTPRedirect {
- // On a redirect, overwrite the Path portion of the URL with this
- // value. Note that the entire path will be replaced, irrespective of the
- // request URI being matched as an exact path or prefix.
- string uri = 1;
-
- // On a redirect, overwrite the Authority/Host portion of the URL with
- // this value.
- string authority = 2;
-
- enum RedirectPortSelection {
- FROM_PROTOCOL_DEFAULT = 0;
- FROM_REQUEST_PORT = 1;
- }
- oneof redirect_port {
- // On a redirect, overwrite the port portion of the URL with this value.
- uint32 port = 4;
- // On a redirect, dynamically set the port:
- // * FROM_PROTOCOL_DEFAULT: automatically set to 80 for HTTP and 443 for HTTPS.
- // * FROM_REQUEST_PORT: automatically use the port of the request.
- RedirectPortSelection derive_port = 5;
- }
-
- // On a redirect, overwrite the scheme portion of the URL with this value.
- // For example, `http` or `https`.
- // If unset, the original scheme will be used.
- // If `derivePort` is set to `FROM_PROTOCOL_DEFAULT`, this will impact the port used as well
- string scheme = 6;
-
- // On a redirect, Specifies the HTTP status code to use in the redirect
- // response. The default response code is MOVED_PERMANENTLY (301).
- uint32 redirect_code = 3;
-}
-
-// HTTPRewrite can be used to rewrite specific parts of a HTTP request
-// before forwarding the request to the destination. Rewrite primitive can
-// be used only with HTTPRouteDestination. The following example
-// demonstrates how to rewrite the URL prefix for api call (/ratings) to
-// ratings service before making the actual API call.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: /ratings
-// rewrite:
-// uri: /v1/bookRatings
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: /ratings
-// rewrite:
-// uri: /v1/bookRatings
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-// {{}}
-//
-message HTTPRewrite {
- // rewrite the path (or the prefix) portion of the URI with this
- // value. If the original URI was matched based on prefix, the value
- // provided in this field will replace the corresponding matched prefix.
- string uri = 1;
-
- // rewrite the Authority/Host header with this value.
- string authority = 2;
-}
-
-// Describes how to match a given string in HTTP headers. Match is
-// case-sensitive.
-message StringMatch {
- oneof match_type {
-
- // exact string match
- string exact = 1;
-
- // prefix-based match
- string prefix = 2;
-
- // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
- string regex = 3;
- }
-}
-
-// Describes the retry policy to use when a HTTP request fails. For
-// example, the following rule sets the maximum number of retries to 3 when
-// calling ratings:v1 service, with a 2s timeout per retry attempt.
-// A retry will be attempted if there is a connect-failure, refused_stream
-// or when the upstream server responds with Service Unavailable(503).
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// retries:
-// attempts: 3
-// perTryTimeout: 2s
-// retryOn: connect-failure,refused-stream,503
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// retries:
-// attempts: 3
-// perTryTimeout: 2s
-// retryOn: gateway-error,connect-failure,refused-stream
-// ```
-// {{}}
-// {{}}
-//
-message HTTPRetry {
- // Number of retries to be allowed for a given request. The interval
- // between retries will be determined automatically (25ms+). When request
- // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute)
- // or `per_try_timeout` is configured, the actual number of retries attempted also depends on
- // the specified request `timeout` and `per_try_timeout` values.
- int32 attempts = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Timeout per attempt for a given request, including the initial call and any retries. Format: 1h/1m/1s/1ms. MUST BE >=1ms.
- // Default is same value as request
- // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute),
- // which means no timeout.
- google.protobuf.Duration per_try_timeout = 2;
-
- // Specifies the conditions under which retry takes place.
- // One or more policies can be specified using a ‘,’ delimited list.
- // If `retry_on` specifies a valid HTTP status, it will be added to retriable_status_codes retry policy.
- // See the [retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on)
- // and [gRPC retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on) for more details.
- string retry_on = 3;
-
- // Flag to specify whether the retries should retry to other localities.
- // See the [retry plugin configuration](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/http/http_connection_management#retry-plugin-configuration) for more details.
- google.protobuf.BoolValue retry_remote_localities = 4;
-}
-
-// Describes the Cross-Origin Resource Sharing (CORS) policy, for a given
-// service. Refer to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)
-// for further details about cross origin resource sharing. For example,
-// the following rule restricts cross origin requests to those originating
-// from example.com domain using HTTP POST/GET, and sets the
-// `Access-Control-Allow-Credentials` header to false. In addition, it only
-// exposes `X-Foo-bar` header and sets an expiry period of 1 day.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// corsPolicy:
-// allowOrigins:
-// - exact: https://example.com
-// allowMethods:
-// - POST
-// - GET
-// allowCredentials: false
-// allowHeaders:
-// - X-Foo-Bar
-// maxAge: "24h"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// corsPolicy:
-// allowOrigins:
-// - exact: https://example.com
-// allowMethods:
-// - POST
-// - GET
-// allowCredentials: false
-// allowHeaders:
-// - X-Foo-Bar
-// maxAge: "24h"
-// ```
-// {{}}
-// {{}}
-//
-message CorsPolicy {
- // The list of origins that are allowed to perform CORS requests. The
- // content will be serialized into the Access-Control-Allow-Origin
- // header. Wildcard * will allow all origins.
- // $hide_from_docs
- repeated string allow_origin = 1 [deprecated=true];
-
- // String patterns that match allowed origins.
- // An origin is allowed if any of the string matchers match.
- // If a match is found, then the outgoing Access-Control-Allow-Origin would be set to the origin as provided by the client.
- repeated StringMatch allow_origins = 7;
-
- // List of HTTP methods allowed to access the resource. The content will
- // be serialized into the Access-Control-Allow-Methods header.
- repeated string allow_methods = 2;
-
- // List of HTTP headers that can be used when requesting the
- // resource. Serialized to Access-Control-Allow-Headers header.
- repeated string allow_headers = 3;
-
- // A list of HTTP headers that the browsers are allowed to
- // access. Serialized into Access-Control-Expose-Headers header.
- repeated string expose_headers = 4;
-
- // Specifies how long the results of a preflight request can be
- // cached. Translates to the `Access-Control-Max-Age` header.
- google.protobuf.Duration max_age = 5;
-
- // Indicates whether the caller is allowed to send the actual request
- // (not the preflight) using credentials. Translates to
- // `Access-Control-Allow-Credentials` header.
- google.protobuf.BoolValue allow_credentials = 6;
-}
-
-// HTTPFaultInjection can be used to specify one or more faults to inject
-// while forwarding HTTP requests to the destination specified in a route.
-// Fault specification is part of a VirtualService rule. Faults include
-// aborting the Http request from downstream service, and/or delaying
-// proxying of requests. A fault rule MUST HAVE delay or abort or both.
-//
-// *Note:* Delay and abort faults are independent of one another, even if
-// both are specified simultaneously.
-message HTTPFaultInjection {
- // Delay requests before forwarding, emulating various failures such as
- // network issues, overloaded upstream service, etc.
- Delay delay = 1;
-
- // Abort Http request attempts and return error codes back to downstream
- // service, giving the impression that the upstream service is faulty.
- Abort abort = 2;
-
- // Delay specification is used to inject latency into the request
- // forwarding path. The following example will introduce a 5 second delay
- // in 1 out of every 1000 requests to the "v1" version of the "reviews"
- // service from all pods with label env: prod
- //
- // {{}}
- // {{}}
- // ```yaml
- // apiVersion: networking.istio.io/v1alpha3
- // kind: VirtualService
- // metadata:
- // name: reviews-route
- // spec:
- // hosts:
- // - reviews.prod.svc.cluster.local
- // http:
- // - match:
- // - sourceLabels:
- // env: prod
- // route:
- // - destination:
- // host: reviews.prod.svc.cluster.local
- // subset: v1
- // fault:
- // delay:
- // percentage:
- // value: 0.1
- // fixedDelay: 5s
- // ```
- // {{}}
- //
- // {{}}
- // ```yaml
- // apiVersion: networking.istio.io/v1beta1
- // kind: VirtualService
- // metadata:
- // name: reviews-route
- // spec:
- // hosts:
- // - reviews.prod.svc.cluster.local
- // http:
- // - match:
- // - sourceLabels:
- // env: prod
- // route:
- // - destination:
- // host: reviews.prod.svc.cluster.local
- // subset: v1
- // fault:
- // delay:
- // percentage:
- // value: 0.1
- // fixedDelay: 5s
- // ```
- // {{}}
- // {{}}
- //
- // The _fixedDelay_ field is used to indicate the amount of delay in seconds.
- // The optional _percentage_ field can be used to only delay a certain
- // percentage of requests. If left unspecified, all request will be delayed.
- message Delay {
- // Percentage of requests on which the delay will be injected (0-100).
- // Use of integer `percent` value is deprecated. Use the double `percentage`
- // field instead.
- int32 percent = 1 [deprecated=true];
-
- oneof http_delay_type {
- // Add a fixed delay before forwarding the request. Format:
- // 1h/1m/1s/1ms. MUST be >=1ms.
- google.protobuf.Duration fixed_delay = 2 [(google.api.field_behavior) = REQUIRED];
-
- // $hide_from_docs
- google.protobuf.Duration exponential_delay = 3 ;
- }
-
- // Percentage of requests on which the delay will be injected.
- Percent percentage = 5;
- }
-
- // Abort specification is used to prematurely abort a request with a
- // pre-specified error code. The following example will return an HTTP 400
- // error code for 1 out of every 1000 requests to the "ratings" service "v1".
- //
- // {{}}
- // {{}}
- // ```yaml
- // apiVersion: networking.istio.io/v1alpha3
- // kind: VirtualService
- // metadata:
- // name: ratings-route
- // spec:
- // hosts:
- // - ratings.prod.svc.cluster.local
- // http:
- // - route:
- // - destination:
- // host: ratings.prod.svc.cluster.local
- // subset: v1
- // fault:
- // abort:
- // percentage:
- // value: 0.1
- // httpStatus: 400
- // ```
- // {{}}
- //
- // {{}}
- // ```yaml
- // apiVersion: networking.istio.io/v1beta1
- // kind: VirtualService
- // metadata:
- // name: ratings-route
- // spec:
- // hosts:
- // - ratings.prod.svc.cluster.local
- // http:
- // - route:
- // - destination:
- // host: ratings.prod.svc.cluster.local
- // subset: v1
- // fault:
- // abort:
- // percentage:
- // value: 0.1
- // httpStatus: 400
- // ```
- // {{}}
- // {{}}
- //
- // The _httpStatus_ field is used to indicate the HTTP status code to
- // return to the caller. The optional _percentage_ field can be used to only
- // abort a certain percentage of requests. If not specified, all requests are
- // aborted.
- message Abort {
- reserved 1;
- reserved "percent";
-
- oneof error_type {
- // HTTP status code to use to abort the Http request.
- int32 http_status = 2 [(google.api.field_behavior) = REQUIRED];
-
- // $hide_from_docs
- string grpc_status = 3;
-
- // $hide_from_docs
- string http2_error = 4;
- }
-
- // Percentage of requests to be aborted with the error code provided.
- Percent percentage = 5;
- }
-}
-
-// PortSelector specifies the number of a port to be used for
-// matching or selection for final routing.
-message PortSelector {
- // Valid port number
- uint32 number = 1;
-
- reserved 2;
- reserved "name";
-}
-
-// Percent specifies a percentage in the range of [0.0, 100.0].
-message Percent {
- double value = 1;
-}
diff --git a/proto/networking/v1beta1/workload_entry.proto b/proto/networking/v1beta1/workload_entry.proto
deleted file mode 100644
index f3b0810..0000000
--- a/proto/networking/v1beta1/workload_entry.proto
+++ /dev/null
@@ -1,327 +0,0 @@
-// Copyright 2020 Istio 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";
-
-import "google/api/field_behavior.proto";
-
-// $schema: istio.networking.v1beta1.WorkloadEntry
-// $title: Workload Entry
-// $description: Configuration affecting VMs onboarded into the mesh.
-// $location: https://istio.io/docs/reference/config/networking/workload-entry.html
-// $aliases: [/docs/reference/config/networking/v1beta1/workload-entry]
-// $mode: none
-
-// `WorkloadEntry` enables operators to describe the properties of a
-// single non-Kubernetes workload such as a VM or a bare metal server
-// as it is onboarded into the mesh. A `WorkloadEntry` must be
-// accompanied by an Istio `ServiceEntry` that selects the workload
-// through the appropriate labels and provides the service definition
-// for a `MESH_INTERNAL` service (hostnames, port properties, etc.). A
-// `ServiceEntry` object can select multiple workload entries as well
-// as Kubernetes pods based on the label selector specified in the
-// service entry.
-//
-// When a workload connects to `istiod`, the status field in the
-// custom resource will be updated to indicate the health of the
-// workload along with other details, similar to how Kubernetes
-// updates the status of a pod.
-//
-// The following example declares a workload entry representing a VM
-// for the `details.bookinfo.com` service. This VM has sidecar
-// installed and bootstrapped using the `details-legacy` service
-// account. The service is exposed on port 80 to applications in the
-// mesh. The HTTP traffic to this service is wrapped in Istio mutual
-// TLS and sent to sidecars on VMs on target port 8080, that in turn
-// forward it to the application on localhost on the same port.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: 2.2.2.2
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: 2.2.2.2
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-// {{}}
-//
-// and the associated service entry
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: STATIC
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-// {{}}
-//
-//
-// The following example declares the same VM workload using
-// its fully qualified DNS name. The service entry's resolution
-// mode should be changed to DNS to indicate that the client-side
-// sidecars should dynamically resolve the DNS name at runtime before
-// forwarding the request.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: vm1.vpc01.corp.net
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: WorkloadEntry
-// metadata:
-// name: details-svc
-// spec:
-// # use of the service account indicates that the workload has a
-// # sidecar proxy bootstrapped with this service account. Pods with
-// # sidecars will automatically communicate with the workload using
-// # istio mutual TLS.
-// serviceAccount: details-legacy
-// address: vm1.vpc01.corp.net
-// labels:
-// app: details-legacy
-// instance-id: vm1
-// ```
-// {{}}
-// {{}}
-//
-// and the associated service entry
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: DNS
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: ServiceEntry
-// metadata:
-// name: details-svc
-// spec:
-// hosts:
-// - details.bookinfo.com
-// location: MESH_INTERNAL
-// ports:
-// - number: 80
-// name: http
-// protocol: HTTP
-// targetPort: 8080
-// resolution: DNS
-// workloadSelector:
-// labels:
-// app: details-legacy
-// ```
-// {{}}
-// {{}}
-//
-package istio.networking.v1beta1;
-
-option go_package = "istio.io/api/networking/v1beta1";
-
-// WorkloadEntry enables specifying the properties of a single non-Kubernetes workload such a VM or a bare metal services that can be referred to by service entries.
-//
-//
-//
-//
-//
-message WorkloadEntry {
- // Address associated with the network endpoint without the
- // port. Domain names can be used if and only if the resolution is set
- // to DNS, and must be fully-qualified without wildcards. Use the form
- // unix:///absolute/path/to/socket for Unix domain socket endpoints.
- string address = 1 [(google.api.field_behavior) = REQUIRED];
-
- // Set of ports associated with the endpoint. If the port map is
- // specified, it must be a map of servicePortName to this endpoint's
- // port, such that traffic to the service port will be forwarded to
- // the endpoint port that maps to the service's portName. If
- // omitted, and the targetPort is specified as part of the service's
- // port specification, traffic to the service port will be forwarded
- // to one of the endpoints on the specified `targetPort`. If both
- // the targetPort and endpoint's port map are not specified, traffic
- // to a service port will be forwarded to one of the endpoints on
- // the same port.
- //
- // **NOTE 1:** Do not use for `unix://` addresses.
- //
- // **NOTE 2:** endpoint port map takes precedence over targetPort.
- map ports = 2;
-
- // One or more labels associated with the endpoint.
- map labels = 3;
-
- // Network enables Istio to group endpoints resident in the same L3
- // domain/network. All endpoints in the same network are assumed to be
- // directly reachable from one another. When endpoints in different
- // networks cannot reach each other directly, an Istio Gateway can be
- // used to establish connectivity (usually using the
- // `AUTO_PASSTHROUGH` mode in a Gateway Server). This is
- // an advanced configuration used typically for spanning an Istio mesh
- // over multiple clusters.
- string network = 4;
-
- // The locality associated with the endpoint. A locality corresponds
- // to a failure domain (e.g., country/region/zone). Arbitrary failure
- // domain hierarchies can be represented by separating each
- // encapsulating failure domain by /. For example, the locality of an
- // an endpoint in US, in US-East-1 region, within availability zone
- // az-1, in data center rack r11 can be represented as
- // us/us-east-1/az-1/r11. Istio will configure the sidecar to route to
- // endpoints within the same locality as the sidecar. If none of the
- // endpoints in the locality are available, endpoints parent locality
- // (but within the same network ID) will be chosen. For example, if
- // there are two endpoints in same network (networkID "n1"), say e1
- // with locality us/us-east-1/az-1/r11 and e2 with locality
- // us/us-east-1/az-2/r12, a sidecar from us/us-east-1/az-1/r11 locality
- // will prefer e1 from the same locality over e2 from a different
- // locality. Endpoint e2 could be the IP associated with a gateway
- // (that bridges networks n1 and n2), or the IP associated with a
- // standard service endpoint.
- string locality = 5;
-
- // The load balancing weight associated with the endpoint. Endpoints
- // with higher weights will receive proportionally higher traffic.
- uint32 weight = 6;
-
- // The service account associated with the workload if a sidecar
- // is present in the workload. The service account must be present
- // in the same namespace as the configuration ( WorkloadEntry or a
- // ServiceEntry)
- string service_account = 7;
-};
diff --git a/proto/networking/v1beta1/workload_group.proto b/proto/networking/v1beta1/workload_group.proto
deleted file mode 100644
index a7d28ae..0000000
--- a/proto/networking/v1beta1/workload_group.proto
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright 2020 Istio 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";
-
-import "google/api/field_behavior.proto";
-import "networking/v1beta1/workload_entry.proto";
-
-// $schema: istio.networking.v1alpha3.WorkloadGroup
-// $title: Workload Group
-// $description: Describes a collection of workload instances.
-// $location: https://istio.io/docs/reference/config/networking/workload-group.html
-// $aliases: [/docs/reference/config/networking/v1alpha3/workload-group]
-
-// `WorkloadGroup` describes a collection of workload instances.
-// It provides a specification that the workload instances can use to bootstrap
-// their proxies, including the metadata and identity. It is only intended to
-// be used with non-k8s workloads like Virtual Machines, and is meant to mimic
-// the existing sidecar injection and deployment specification model used for
-// Kubernetes workloads to bootstrap Istio proxies.
-//
-// The following example declares a workload group representing a collection
-// of workloads that will be registered under `reviews` in namespace
-// `bookinfo`. The set of labels will be associated with each workload
-// instance during the bootstrap process, and the ports 3550 and 8080
-// will be associated with the workload group and use service account `default`.
-// `app.kubernetes.io/version` is just an arbitrary example of a label.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: WorkloadGroup
-// metadata:
-// name: reviews
-// namespace: bookinfo
-// spec:
-// metadata:
-// labels:
-// app.kubernetes.io/name: reviews
-// app.kubernetes.io/version: "1.3.4"
-// template:
-// ports:
-// grpc: 3550
-// http: 8080
-// serviceAccount: default
-// probe:
-// initialDelaySeconds: 5
-// timeoutSeconds: 3
-// periodSeconds: 4
-// successThreshold: 3
-// failureThreshold: 3
-// httpGet:
-// path: /foo/bar
-// host: 127.0.0.1
-// port: 3100
-// scheme: HTTPS
-// httpHeaders:
-// - name: Lit-Header
-// value: Im-The-Best
-// ```
-// {{}}
-// {{}}
-//
-package istio.networking.v1beta1;
-
-option go_package = "istio.io/api/networking/v1beta1";
-
-// `WorkloadGroup` enables specifying the properties of a single workload for bootstrap and
-// provides a template for `WorkloadEntry`, similar to how `Deployment` specifies properties
-// of workloads via `Pod` templates. A `WorkloadGroup` can have more than one `WorkloadEntry`.
-// `WorkloadGroup` has no relationship to resources which control service registry like `ServiceEntry`
-// and as such doesn't configure host name for these workloads.
-//
-//
-//
-//
-//
-message WorkloadGroup {
- // Metadata that will be used for all corresponding `WorkloadEntries`.
- // User labels for a workload group should be set here in `metadata` rather than in `template`.
- ObjectMeta metadata = 1;
-
- // Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.
- // Please note that `address` and `labels` fields should not be set in the template, and an empty `serviceAccount`
- // should default to `default`. The workload identities (mTLS certificates) will be bootstrapped using the
- // specified service account's token. Workload entries in this group will be in the same namespace as the
- // workload group, and inherit the labels and annotations from the above `metadata` field.
- WorkloadEntry template = 2 [(google.api.field_behavior) = REQUIRED];
-
- // `ObjectMeta` describes metadata that will be attached to a `WorkloadEntry`.
- // It is a subset of the supported Kubernetes metadata.
- message ObjectMeta {
- // Labels to attach
- map labels = 1;
-
- // Annotations to attach
- map annotations = 2;
- }
-
- // `ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.
- // This configuration mirrors K8S in both syntax and logic for the most part.
- ReadinessProbe probe = 3;
-}
-
-message ReadinessProbe {
-
- // Number of seconds after the container has started before readiness probes are initiated.
- int32 initial_delay_seconds = 2;
-
- // Number of seconds after which the probe times out.
- // Defaults to 1 second. Minimum value is 1 second.
- int32 timeout_seconds = 3;
-
- // How often (in seconds) to perform the probe.
- // Default to 10 seconds. Minimum value is 1 second.
- int32 period_seconds = 4;
-
- // Minimum consecutive successes for the probe to be considered successful after having failed.
- // Defaults to 1 second.
- int32 success_threshold = 5;
-
- // Minimum consecutive failures for the probe to be considered failed after having succeeded.
- // Defaults to 3 seconds.
- int32 failure_threshold = 6;
-
- // Users can only provide one configuration for healthchecks (tcp, http, exec),
- // and this is expressed as a oneof. All of the other configuration values
- // hold true for any of the healthcheck methods.
- oneof health_check_method {
- // `httpGet` is performed to a given endpoint
- // and the status/able to connect determines health.
- HTTPHealthCheckConfig http_get = 7;
- // Health is determined by if the proxy is able to connect.
- TCPHealthCheckConfig tcp_socket = 8;
- // Health is determined by how the command that is executed exited.
- ExecHealthCheckConfig exec = 9;
- }
-}
-
-message HTTPHealthCheckConfig {
- // Path to access on the HTTP server.
- string path = 1;
-
- // Port on which the endpoint lives.
- uint32 port = 2 [(google.api.field_behavior) = REQUIRED];
-
- // Host name to connect to, defaults to the pod IP. You probably want to set
- // "Host" in httpHeaders instead.
- string host = 3;
-
- // HTTP or HTTPS, defaults to HTTP
- string scheme = 4;
-
- // Headers the proxy will pass on to make the request.
- // Allows repeated headers.
- repeated HTTPHeader http_headers = 5;
-}
-
-message HTTPHeader {
- // The header field name
- string name = 1;
-
- // The header field value
- string value = 2;
-}
-
-message TCPHealthCheckConfig {
- // Host to connect to, defaults to localhost
- string host = 1;
- // Port of host
- uint32 port = 2 [(google.api.field_behavior) = REQUIRED];
-}
-
-message ExecHealthCheckConfig {
- // Command to run. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
- repeated string command = 1;
-}
diff --git a/proto/openmetrics/prometheus.proto b/proto/openmetrics/prometheus.proto
deleted file mode 100644
index a222650..0000000
--- a/proto/openmetrics/prometheus.proto
+++ /dev/null
@@ -1,218 +0,0 @@
-syntax = "proto3";
-
-// The OpenMetrics protobuf schema which defines the protobuf wire
-// format.
-// Ensure to interpret "required" as semantically required for a valid
-// message.
-// All string fields MUST be UTF-8 encoded strings.
-package openmetrics;
-
-import "google/protobuf/timestamp.proto";
-option go_package = "github.com/costinm/ugate/gen/proto/openmetrics";
-
-// The top-level container type that is encoded and sent over the wire.
-message MetricSet {
- // Each MetricFamily has one or more MetricPoints for a single Metric.
- repeated MetricFamily metric_families = 1;
-}
-
-// One or more Metrics for a single MetricFamily, where each Metric
-// has one or more MetricPoints.
-message MetricFamily {
- // Required.
- string name = 1;
-
- // Optional.
- MetricType type = 2;
-
- // Optional.
- string unit = 3;
-
- // Optional.
- string help = 4;
-
- // Optional.
- repeated Metric metrics = 5;
-}
-
-// The type of a Metric.
-enum MetricType {
- // Unknown must use unknown MetricPoint values.
- UNKNOWN = 0;
- // Gauge must use gauge MetricPoint values.
- GAUGE = 1;
- // Counter must use counter MetricPoint values.
- COUNTER = 2;
- // State set must use state set MetricPoint values.
- STATE_SET = 3;
- // Info must use info MetricPoint values.
- INFO = 4;
- // Histogram must use histogram value MetricPoint values.
- HISTOGRAM = 5;
- // Gauge histogram must use histogram value MetricPoint values.
- GAUGE_HISTOGRAM = 6;
- // Summary quantiles must use summary value MetricPoint values.
- SUMMARY = 7;
-}
-
-// A single metric with a unique set of labels within a metric family.
-message Metric {
- // Optional.
- repeated Label labels = 1;
-
- // Optional.
- repeated MetricPoint metric_points = 2;
-}
-
-// A name-value pair. These are used in multiple places: identifying
-// timeseries, value of INFO metrics, and exemplars in Histograms.
-message Label {
- // Required.
- string name = 1;
-
- // Required.
- string value = 2;
-}
-
-// A MetricPoint in a Metric.
-message MetricPoint {
- // Required.
- oneof value {
- UnknownValue unknown_value = 1;
- GaugeValue gauge_value = 2;
- CounterValue counter_value = 3;
- HistogramValue histogram_value = 4;
- StateSetValue state_set_value = 5;
- InfoValue info_value = 6;
- SummaryValue summary_value = 7;
- }
-
- // Optional.
- google.protobuf.Timestamp timestamp = 8;
-}
-
-// Value for UNKNOWN MetricPoint.
-message UnknownValue {
- // Required.
- oneof value {
- double double_value = 1;
- int64 int_value = 2;
- }
-}
-
-// Value for GAUGE MetricPoint.
-message GaugeValue {
- // Required.
- oneof value {
- double double_value = 1;
- int64 int_value = 2;
- }
-}
-
-// Value for COUNTER MetricPoint.
-message CounterValue {
- // Required.
- oneof total {
- double double_value = 1;
- uint64 int_value = 2;
- }
-
- // The time values began being collected for this counter.
- // Optional.
- google.protobuf.Timestamp created = 3;
-
- // Optional.
- Exemplar exemplar = 4;
-}
-
-// Value for HISTOGRAM or GAUGE_HISTOGRAM MetricPoint.
-message HistogramValue {
- // Optional.
- oneof sum {
- double double_value = 1;
- int64 int_value = 2;
- }
-
- // Optional.
- uint64 count = 3;
-
- // The time values began being collected for this histogram.
- // Optional.
- google.protobuf.Timestamp created = 4;
-
- // Optional.
- repeated Bucket buckets = 5;
-
- // Bucket is the number of values for a bucket in the histogram
- // with an optional exemplar.
- message Bucket {
- // Required.
- uint64 count = 1;
-
- // Optional.
- double upper_bound = 2;
-
- // Optional.
- Exemplar exemplar = 3;
- }
-}
-
-message Exemplar {
- // Required.
- double value = 1;
-
- // Optional.
- google.protobuf.Timestamp timestamp = 2;
-
- // Labels are additional information about the exemplar value
- // (e.g. trace id).
- // Optional.
- repeated Label label = 3;
-}
-
-// Value for STATE_SET MetricPoint.
-message StateSetValue {
- // Optional.
- repeated State states = 1;
-
- message State {
- // Required.
- bool enabled = 1;
-
- // Required.
- string name = 2;
- }
-}
-
-// Value for INFO MetricPoint.
-message InfoValue {
- // Optional.
- repeated Label info = 1;
-}
-
-// Value for SUMMARY MetricPoint.
-message SummaryValue {
- // Optional.
- oneof sum {
- double double_value = 1;
- int64 int_value = 2;
- }
-
- // Optional.
- uint64 count = 3;
-
- // The time sum and count values began being collected for this summary.
- // Optional.
- google.protobuf.Timestamp created = 4;
-
- // Optional.
- repeated Quantile quantile = 5;
-
- message Quantile {
- // Required.
- double quantile = 1;
-
- // Required.
- double value = 2;
- }
-}
diff --git a/proto/proto/echo.proto b/proto/proto/echo.proto
deleted file mode 100644
index 6dacc3c..0000000
--- a/proto/proto/echo.proto
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright Istio 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";
-
-import "google/protobuf/wrappers.proto";
-
-// Generate with protoc --go_out=. echo.proto -I /work/common-protos/ -I.
-package proto;
-option go_package="../proto";
-
-service EchoTestService {
- rpc Echo (EchoRequest) returns (EchoResponse);
- rpc ForwardEcho (ForwardEchoRequest) returns (ForwardEchoResponse);
-}
-
-message EchoRequest {
- string message = 1;
-}
-
-message EchoResponse {
- string message = 1;
-}
-
-message Header {
- string key = 1;
- string value = 2;
-}
-
-message ForwardEchoRequest {
- int32 count = 1;
- int32 qps = 2;
- int64 timeout_micros = 3;
- string url = 4;
- repeated Header headers = 5;
- string message = 6;
- // Method for the request. Valid only for HTTP
- string method = 9;
- // If true, requests will be sent using h2c prior knowledge
- bool http2 = 7;
- // If true, requests will be sent using http3
- bool http3 = 15;
- // If true, requests will not be sent until magic string is received
- bool serverFirst = 8;
- // If true, 301 redirects will be followed
- bool followRedirects = 14;
- // If non-empty, make the request with the corresponding cert and key.
- string cert = 10;
- string key = 11;
- // If non-empty, verify the server CA
- string caCert = 12;
- // If non-empty, make the request with the corresponding cert and key file.
- string certFile = 16;
- string keyFile = 17;
- // If non-empty, verify the server CA with the ca cert file.
- string caCertFile = 18;
- // Skip verifying peer's certificate.
- bool insecureSkipVerify = 19;
- // List of ALPNs to present. If not set, this will be automatically be set based on the protocol
- Alpn alpn = 13;
- // Server name (SNI) to present in TLS connections. If not set, Host will be used for http requests.
- string serverName = 20;
- // Expected response determines what string to look for in the response to validate TCP requests succeeded.
- // If not set, defaults to "StatusCode=200"
- google.protobuf.StringValue expectedResponse = 21;
-}
-
-message Alpn {
- repeated string value = 1;
-}
-
-message ForwardEchoResponse {
- repeated string output = 1;
-}
diff --git a/proto/type/v1beta1/selector.proto b/proto/type/v1beta1/selector.proto
deleted file mode 100644
index ec18899..0000000
--- a/proto/type/v1beta1/selector.proto
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2019 Istio 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";
-
-import "google/api/field_behavior.proto";
-
-// $title: Workload Selector
-// $description: Definition of a workload selector.
-// $location: https://istio.io/docs/reference/config/type/workload-selector.html
-
-package istio.type.v1beta1;
-
-option go_package="istio.io/api/type/v1beta1";
-
-// WorkloadSelector specifies the criteria used to determine if a policy can be applied
-// to a proxy. The matching criteria includes the metadata associated with a proxy,
-// workload instance info such as labels attached to the pod/VM, or any other info
-// that the proxy provides to Istio during the initial handshake. If multiple conditions are
-// specified, all conditions need to match in order for the workload instance to be
-// selected. Currently, only label based selection mechanism is supported.
-message WorkloadSelector {
- // One or more labels that indicate a specific set of pods/VMs
- // on which a policy should be applied. The scope of label search is restricted to
- // the configuration namespace in which the resource is present.
- map match_labels = 1 [(google.api.field_behavior) = REQUIRED];
-}
diff --git a/proto/webpush/webpush.proto b/proto/webpush/webpush.proto
deleted file mode 100644
index 6d2ef70..0000000
--- a/proto/webpush/webpush.proto
+++ /dev/null
@@ -1,211 +0,0 @@
-syntax = "proto3";
-package webpush;
-
-option go_package = "github.com/costinm/wpgate/pkg/msgs";
-
-// Experimental - proto representation for 'webpush' messages, using XDS as transport.
-
-// Common fields to be encoded in the 'data' proto
-message MessageData {
-
- // Time when the message was sent, according to the sender clock.
- int64 time = 1;
-
- // Original ID. If missing, the envelope ID will be used.
- string id = 2;
-
- // Original destination
- string to = 3;
-
- string from = 4;
-
- string topic = 5;
-
- map meta = 6;
- bytes data = 7;
-}
-
-// Message is returned as PUSH PROMISE frames in the spec. The alternative protocol wraps it in
-// Any field or other framing.
-message WebpushMessage {
-
- // Unique in context of the origin
- // For webpush, generated by the original server (from subscription), as Location:
- // Example: https://push.example.net/message/qDIYHNcfAIPP_5ITvURr-d6BGt
- string id = 1;
-
- // Plaintext = 0
- // aes128gcm = 1
- int32 content_encoding = 7;
-
- // If encoding is "1" - aes128gcm
- // Otherwise it is a plaintext message.
- bytes data = 3;
-
- // Visible metadata, used for routing
- //map meta = 8;
-
- // Message path
- repeated Via path = 6;
-
- int32 ttl = 9;
-
- // Maps to the SubscribeResponse push parameter, returned as Link rel="urn:ietf:params:push"
- // in the push promise.
- string push = 2;
-
- // Identifies the sender - compact form.
- Vapid sender = 4;
-
- // URL or IPv6, extracted from the VAPID of the sender or other
- // form of authentication.
- string from = 5;
-}
-
-message Via {
- int64 time = 1;
-
- string vip = 2;
-
- // bytes sig = 3;
-}
-
-// Vapid is the proto variant of a Webpush JWT.
-// This is a more compact representation, without base64 overhead
-//
-// For HTTP, included in Authorization header:
-// Authorization: vapid t=B64url k=B64url
-//
-// Decoded t is of form: { "typ": "JWT", "alg": "ES256" }.JWT.SIG
-//
-// { "crv":"P-256",
-// "kty":"EC",
-// "x":"DUfHPKLVFQzVvnCPGyfucbECzPDa7rWbXriLcysAjEc",
-// "y":"F6YK5h4SDYic-dRuU_RCPCfA5aq9ojSwk5Y2EmClBPs" }
-message Vapid {
- // json payload of VAPID ( without base64 encoding)
- // Can also be a proto message when used over other transports.
- // Verification requires converting back to base64 !
- // Decoded to reduce the binary size
- bytes data = 7;
-
- // Public key of the signer, 64 bytes, EC256, decoded.
- // Included in 'k' parameter for HTTP.
- bytes k = 4;
-
- // If empty, it is assumed to be the constant value {typ=JWT,alg=ES256}
- bytes t_type = 32;
-
- // Decoded
- bytes t_signature = 33;
-}
-
-////
-//message SubscribeRequest {
-//
-// // A UA should group subscriptions in a set. First request from a
-// // UA will not include a set - it is typically a subscription associated with
-// // the UA itself.
-// string push_set = 1;
-//
-// // Included as Crypto-Key: p256ecdsa parameter.
-// // Corresponds to the applicationServerKey parameter in the PushSubscriptionOptions in
-// // the W3C API
-// string sender_vapid = 2;
-//}
-//
-//// Subscribe response includes the elements in the spec.
-//message SubscribeResponse {
-// // Returned as Link: rel="urn:ietf:params:push"
-// // Spec examples use a full path ( /push/xxxx1 )
-// // TODO: clarify if it can be a full URL
-// string push = 1;
-//
-// // Optional response: it
-// // returned as Link: rel=urn:ietf:params:push:set
-// // Spec examples use a full path ( /subscription-set/xxxx2 ).
-// // TODO: clarify it can be a full URL, like subscription
-// string push_set = 2;
-//
-// // Push subscription resource. This is the full URL where the UA will use to
-// // receive the messages, using the PUSH promise http2 frame.
-// //
-// //
-// // Returned as Location header in the spec
-// string location = 3;
-//}
-
-message PushRequest {
- // The value returned in the SubscribeResponse push, without the hostname.
- string push = 1;
-
- int32 ttl = 2;
-
- // aes128gcm encrypted
- bytes data = 3;
-
- string urgency = 4;
-
- // Prefer header indicating delivery receipt request.
- bool respond_async = 5;
-
- string topic = 6;
-}
-
-message PushResponse {
- string message_id = 1;
-
- // If request includes the respond_async parameter.
- //
- string push_receipt = 2;
-}
-
-//message MonitorRequest {
-// // This is the push or push_set in the subscribe response.
-// string push_set = 1;
-//
-// // JWT token, signed with key
-// string authorization = 2;
-//
-// // Public key used for signing, identifies sender/receiver
-// string key = 3;
-//}
-
-//message AckRequest {
-// string message_id = 1;
-//
-// // Optional, not part of the spec: if the subscribe request was authenticated with VAPID,
-// // the delete should also be authenticated with same VAPID key
-//}
-
-//message AckResponse {
-//}
-
-//message ReceiptRequest {
-// string receipt_subscription = 1;
-//}
-
-//message Receipt {
-// string message_id = 1;
-//}
-
-// Not implemented - alternative interface with explicit methos for each operation.
-//service Webpush {
-// // Subscribe maps the the webpush subscribe request
-// rpc Subscribe (SubscribeRequest) returns (SubscribeResponse) {
-// }
-//
-// // Monitor allows a UA to receive push messages from the push service
-// // Replaced push promises with a stream of Message objects.
-// rpc Monitor(MonitorRequest) returns (stream Message) {}
-//
-// rpc Ack(AckRequest) returns (AckResponse) {}
-//
-// // Push allows an application server to send messages to UA, using the push service.
-// rpc Push(PushRequest) returns (PushResponse) {}
-//
-// // Monitor allows an AS to receive push messages receipts from the push service
-// // Replaced push promises with a stream of Message objects.
-// rpc Receipts(ReceiptRequest) returns (stream Receipt) {}
-//}
-
diff --git a/proto/xds/base.proto b/proto/xds/base.proto
deleted file mode 100644
index dd1092f..0000000
--- a/proto/xds/base.proto
+++ /dev/null
@@ -1,330 +0,0 @@
-syntax = "proto3";
-
-package xds;
-option go_package="github.com/costinm/grpc-mesh/gen/proto/go/xds";
-option java_generic_services = true;
-
-// Base protos - to avoid deps and to have an easy to find reference.
-
-
-// `Struct` represents a structured data value, consisting of fields
-// which map to dynamically typed values. In some languages, `Struct`
-// might be supported by a native representation. For example, in
-// scripting languages like JS a struct is represented as an
-// object. The details of that representation are described together
-// with the proto support for the language.
-//
-// The JSON representation for `Struct` is JSON object.
-message Struct {
- // Unordered map of dynamically typed values.
- map fields = 1;
-}
-
-// `Value` represents a dynamically typed value which can be either
-// null, a number, a string, a boolean, a recursive struct value, or a
-// list of values. A producer of value is expected to set one of that
-// variants, absence of any variant indicates an error.
-//
-// The JSON representation for `Value` is JSON value.
-message Value {
- // The kind of value.
- oneof kind {
- // Represents a null value.
- NullValue null_value = 1;
- // Represents a double value.
- double number_value = 2;
- // Represents a string value.
- string string_value = 3;
- // Represents a boolean value.
- bool bool_value = 4;
- // Represents a structured value.
- Struct struct_value = 5;
- // Represents a repeated `Value`.
- ListValue list_value = 6;
- }
-}
-// `NullValue` is a singleton enumeration to represent the null value for the
-// `Value` type union.
-//
-// The JSON representation for `NullValue` is JSON `null`.
-enum NullValue {
- // Null value.
- NULL_VALUE = 0;
-}
-
-// `ListValue` is a wrapper around a repeated field of values.
-//
-// The JSON representation for `ListValue` is JSON array.
-message ListValue {
- // Repeated field of dynamically typed values.
- repeated Value values = 1;
-}
-
-// A Duration represents a signed, fixed-length span of time represented
-// as a count of seconds and fractions of seconds at nanosecond
-// resolution. It is independent of any calendar and concepts like "day"
-// or "month". It is related to Timestamp in that the difference between
-// two Timestamp values is a Duration and it can be added or subtracted
-// from a Timestamp. Range is approximately +-10,000 years.
-//
-// # Examples
-//
-// Example 1: Compute Duration from two Timestamps in pseudo code.
-//
-// Timestamp start = ...;
-// Timestamp end = ...;
-// Duration duration = ...;
-//
-// duration.seconds = end.seconds - start.seconds;
-// duration.nanos = end.nanos - start.nanos;
-//
-// if (duration.seconds < 0 && duration.nanos > 0) {
-// duration.seconds += 1;
-// duration.nanos -= 1000000000;
-// } else if (durations.seconds > 0 && duration.nanos < 0) {
-// duration.seconds -= 1;
-// duration.nanos += 1000000000;
-// }
-//
-// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
-//
-// Timestamp start = ...;
-// Duration duration = ...;
-// Timestamp end = ...;
-//
-// end.seconds = start.seconds + duration.seconds;
-// end.nanos = start.nanos + duration.nanos;
-//
-// if (end.nanos < 0) {
-// end.seconds -= 1;
-// end.nanos += 1000000000;
-// } else if (end.nanos >= 1000000000) {
-// end.seconds += 1;
-// end.nanos -= 1000000000;
-// }
-//
-// Example 3: Compute Duration from datetime.timedelta in Python.
-//
-// td = datetime.timedelta(days=3, minutes=10)
-// duration = Duration()
-// duration.FromTimedelta(td)
-//
-// # JSON Mapping
-//
-// In JSON format, the Duration type is encoded as a string rather than an
-// object, where the string ends in the suffix "s" (indicating seconds) and
-// is preceded by the number of seconds, with nanoseconds expressed as
-// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
-// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
-// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
-// microsecond should be expressed in JSON format as "3.000001s".
-//
-//
-message Duration {
-
- // Signed seconds of the span of time. Must be from -315,576,000,000
- // to +315,576,000,000 inclusive. Note: these bounds are computed from:
- // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
- int64 seconds = 1;
-
- // Signed fractions of a second at nanosecond resolution of the span
- // of time. Durations less than one second are represented with a 0
- // `seconds` field and a positive or negative `nanos` field. For durations
- // of one second or more, a non-zero value for the `nanos` field must be
- // of the same sign as the `seconds` field. Must be from -999,999,999
- // to +999,999,999 inclusive.
- int32 nanos = 2;
-}
-
-// The `Status` type defines a logical error model that is suitable for different
-// programming environments, including REST APIs and RPC APIs. It is used by
-// [gRPC](https://github.com/grpc). The error model is designed to be:
-//
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code, error message,
-// and error details. The error code should be an enum value of
-// [google.rpc.Code][google.rpc.Code], but it may accept additional error codes if needed. The
-// error message should be a developer-facing English message that helps
-// developers *understand* and *resolve* the error. If a localized user-facing
-// error message is needed, put the localized message in the error details or
-// localize it in the client. The optional error details may contain arbitrary
-// information about the error. There is a predefined set of error detail types
-// in the package `google.rpc` that can be used for common error conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error model, but it
-// is not necessarily the actual wire format. When the `Status` message is
-// exposed in different client libraries and different wire protocols, it can be
-// mapped differently. For example, it will likely be mapped to some exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the client,
-// it may embed the `Status` in the normal response to indicate the partial
-// errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step may
-// have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch response, the
-// `Status` message should be used directly inside batch response, one for
-// each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous operation
-// results in its response, the status of those operations should be
-// represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message `Status` could
-// be used directly after any stripping needed for security/privacy reasons.
-message Status {
- // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
- int32 code = 1;
-
- // A developer-facing error message, which should be in English. Any
- // user-facing error message should be localized and sent in the
- // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
- string message = 2;
-
- // A list of messages that carry the error details. There is a common set of
- // message types for APIs to use.
- // google.protobuf.Any
- repeated Any details = 3;
-}
-
-// `Any` contains an arbitrary serialized protocol buffer message along with a
-// URL that describes the type of the serialized message.
-//
-// Protobuf library provides support to pack/unpack Any values in the form
-// of utility functions or additional generated methods of the Any type.
-//
-// Example 1: Pack and unpack a message in C++.
-//
-// Foo foo = ...;
-// Any any;
-// any.PackFrom(foo);
-// ...
-// if (any.UnpackTo(&foo)) {
-// ...
-// }
-//
-// Example 2: Pack and unpack a message in Java.
-//
-// Foo foo = ...;
-// Any any = Any.pack(foo);
-// ...
-// if (any.is(Foo.class)) {
-// foo = any.unpack(Foo.class);
-// }
-//
-// Example 3: Pack and unpack a message in Python.
-//
-// foo = Foo(...)
-// any = Any()
-// any.Pack(foo)
-// ...
-// if any.Is(Foo.DESCRIPTOR):
-// any.Unpack(foo)
-// ...
-//
-// Example 4: Pack and unpack a message in Go
-//
-// foo := &pb.Foo{...}
-// any, err := ptypes.MarshalAny(foo)
-// ...
-// foo := &pb.Foo{}
-// if err := ptypes.UnmarshalAny(any, foo); err != nil {
-// ...
-// }
-//
-// The pack methods provided by protobuf library will by default use
-// 'type.googleapis.com/full.type.name' as the type URL and the unpack
-// methods only use the fully qualified type name after the last '/'
-// in the type URL, for example "foo.bar.com/x/y.z" will yield type
-// name "y.z".
-//
-//
-// JSON
-// ====
-// The JSON representation of an `Any` value uses the regular
-// representation of the deserialized, embedded message, with an
-// additional field `@type` which contains the type URL. Example:
-//
-// package google.profile;
-// message Person {
-// string first_name = 1;
-// string last_name = 2;
-// }
-//
-// {
-// "@type": "type.googleapis.com/google.profile.Person",
-// "firstName": ,
-// "lastName":
-// }
-//
-// If the embedded message type is well-known and has a custom JSON
-// representation, that representation will be embedded adding a field
-// `value` which holds the custom JSON in addition to the `@type`
-// field. Example (for message [google.protobuf.Duration][]):
-//
-// {
-// "@type": "type.googleapis.com/google.protobuf.Duration",
-// "value": "1.212s"
-// }
-//
-message Any {
- // A URL/resource name whose content describes the type of the
- // serialized protocol buffer message.
- //
- // For URLs which use the scheme `http`, `https`, or no scheme, the
- // following restrictions and interpretations apply:
- //
- // * If no scheme is provided, `https` is assumed.
- // * The last segment of the URL's path must represent the fully
- // qualified name of the type (as in `path/google.protobuf.Duration`).
- // The name should be in a canonical form (e.g., leading "." is
- // not accepted).
- // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
- // value in binary format, or produce an error.
- // * Applications are allowed to cache lookup results based on the
- // URL, or have them precompiled into a binary to avoid any
- // lookup. Therefore, binary compatibility needs to be preserved
- // on changes to types. (Use versioned type names to manage
- // breaking changes.)
- //
- // Schemes other than `http`, `https` (or the empty scheme) might be
- // used with implementation specific semantics.
- //
- string type_url = 1;
-
- // Must be a valid serialized protocol buffer of the above specified type.
- bytes value = 2;
-}
-
-// Wrapper message for `bool`.
-//
-// The JSON representation for `BoolValue` is JSON `true` and `false`.
-message BoolValue {
- // The bool value.
- bool value = 1;
-}
-
-// Wrapper message for `uint32`.
-//
-// The JSON representation for `UInt32Value` is JSON number.
-message UInt32Value {
- // The uint32 value.
- uint32 value = 1;
-}
-
diff --git a/proto/xds/cds.proto b/proto/xds/cds.proto
deleted file mode 100644
index 19712a0..0000000
--- a/proto/xds/cds.proto
+++ /dev/null
@@ -1,420 +0,0 @@
-syntax = "proto3";
-
-package xds;
-option go_package="github.com/costinm/grpc-mesh/gen/proto/go/xds";
-option java_generic_services = true;
-
-
-import "xds/base.proto";
-import "xds/envoy_base.proto";
-
-// Configuration for a single upstream cluster.
-// [#comment:next free field: 30]
-message Cluster {
- // Supplies the name of the cluster which must be unique across all clusters.
- // The cluster name is used when emitting
- // :ref:`statistics ` if :ref:`alt_stat_name
- // ` is not provided.
- // Any ``:`` in the cluster name will be converted to ``_`` when emitting statistics.
- // By default, the maximum length of a cluster name is limited to 60
- // characters. This limit can be increased by setting the
- // :option:`--max-obj-name-len` command line argument to the desired value.
- string name = 1;
-
- // An optional alternative to the cluster name to be used while emitting stats.
- // Any ``:`` in the name will be converted to ``_`` when emitting statistics. This should not be
- // confused with :ref:`Router Filter Header
- // `.
- string alt_stat_name = 28;
-
- // Refer to :ref:`service discovery type `
- // for an explanation on each type.
- enum DiscoveryType {
- // Refer to the :ref:`static discovery type`
- // for an explanation.
- STATIC = 0;
-
- // Refer to the :ref:`strict DNS discovery
- // type`
- // for an explanation.
- STRICT_DNS = 1;
-
- // Refer to the :ref:`logical DNS discovery
- // type`
- // for an explanation.
- LOGICAL_DNS = 2;
-
- // Refer to the :ref:`service discovery type`
- // for an explanation.
- EDS = 3;
-
- // Refer to the :ref:`original destination discovery
- // type`
- // for an explanation.
- ORIGINAL_DST = 4;
- }
- // The :ref:`service discovery type `
- // to use for resolving the cluster.
- DiscoveryType type = 2;
-
- // Only valid when discovery type is EDS.
- message EdsClusterConfig {
- // Configuration for the source of EDS updates for this Cluster.
- ConfigSource eds_config = 1;
-
- // Optional alternative to cluster name to present to EDS. This does not
- // have the same restrictions as cluster name, i.e. it may be arbitrary
- // length.
- string service_name = 2;
- }
- // Configuration to use for EDS updates for the Cluster.
- EdsClusterConfig eds_cluster_config = 3;
-
- // The timeout for new network connections to hosts in the cluster.
- Duration connect_timeout = 4;
-
- // Soft limit on size of the cluster’s connections read and write buffers. If
- // unspecified, an implementation defined default is applied (1MiB).
- UInt32Value per_connection_buffer_limit_bytes = 5;
-
- // Refer to :ref:`load balancer type ` architecture
- // overview section for information on each type.
- enum LbPolicy {
-
- // Refer to the :ref:`round robin load balancing
- // policy`
- // for an explanation.
- ROUND_ROBIN = 0;
-
- // Refer to the :ref:`least request load balancing
- // policy