From b15a9058d69785b0cbf595c7464335310c9000ab Mon Sep 17 00:00:00 2001 From: Derek Su Date: Fri, 23 Feb 2024 04:19:09 +0000 Subject: [PATCH 1/7] vendor: update dependencies Longhorn 7939 Signed-off-by: Derek Su --- go.mod | 8 +- go.sum | 44 +- .../github.com/longhorn/backupstore/config.go | 22 + .../longhorn/backupstore/deltablock.go | 11 + .../longhorn/backupstore/renovate.json | 3 + .../longhorn/go-common-libs/ns/crypto.go | 2 +- .../longhorn/go-common-libs/ns/executor.go | 19 +- .../longhorn/go-common-libs/ns/filelock.go | 2 +- .../longhorn/go-common-libs/sys/sys.go | 10 +- .../go-spdk-helper/pkg/nvme/initiator.go | 2 +- .../go-spdk-helper/pkg/nvme/nvmecli.go | 18 +- .../go-spdk-helper/pkg/spdk/client/basic.go | 129 ++- .../go-spdk-helper/pkg/spdk/types/bdev.go | 2 +- .../go-spdk-helper/pkg/spdk/types/log.go | 26 + .../go-spdk-helper/pkg/spdk/types/lvol.go | 22 +- .../go-spdk-helper/pkg/util/device.go | 8 +- .../go-spdk-helper/pkg/util/dmsetup.go | 12 +- .../longhorn-spdk-engine/pkg/client/client.go | 46 + .../longhorn-spdk-engine/pkg/spdk/engine.go | 2 +- .../longhorn-spdk-engine/pkg/spdk/log.go | 112 ++ .../longhorn-spdk-engine/pkg/spdk/replica.go | 4 +- .../longhorn-spdk-engine/pkg/spdk/server.go | 54 + .../proto/spdkrpc/spdk.pb.go | 976 +++++++++++++----- .../proto/spdkrpc/spdk.proto | 21 + vendor/modules.txt | 8 +- 25 files changed, 1194 insertions(+), 369 deletions(-) create mode 100644 vendor/github.com/longhorn/backupstore/renovate.json create mode 100644 vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/log.go create mode 100644 vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/log.go diff --git a/go.mod b/go.mod index b3dd52025..a5dfabb8b 100644 --- a/go.mod +++ b/go.mod @@ -5,11 +5,11 @@ go 1.21 require ( github.com/RoaringBitmap/roaring v1.9.0 github.com/google/uuid v1.6.0 - github.com/longhorn/backupstore v0.0.0-20240126140439-9c90a8728ca2 - github.com/longhorn/go-common-libs v0.0.0-20240109042507-23627e6416b7 - github.com/longhorn/go-spdk-helper v0.0.0-20240117135122-26f8acb2a13d + github.com/longhorn/backupstore v0.0.0-20240219094812-3a87ee02df77 + github.com/longhorn/go-common-libs v0.0.0-20240219094750-e7176c332156 + github.com/longhorn/go-spdk-helper v0.0.0-20240222125115-a6f538717427 github.com/longhorn/longhorn-engine v1.6.0-dev-20240105.0.20240126141003-067f67803ee8 - github.com/longhorn/longhorn-spdk-engine v0.0.0-20240123044045-c5f14845bd83 + github.com/longhorn/longhorn-spdk-engine v0.0.0-20240222133636-8ded920ee144 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.9.3 github.com/urfave/cli v1.22.12 diff --git a/go.sum b/go.sum index aaacdc4e3..2d78a51a1 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,6 @@ github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSu github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 h1:Px2UA+2RvSSvv+RvJNuUB6n7rs5Wsel4dXLe90Um2n4= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/RoaringBitmap/roaring v1.2.3 h1:yqreLINqIrX22ErkKI0vY47/ivtJr6n+kMhVOVmhWBY= -github.com/RoaringBitmap/roaring v1.2.3/go.mod h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/3y6cubLI4/1yE= github.com/RoaringBitmap/roaring v1.9.0 h1:lwKhr90/j0jVXJyh5X+vQN1VVn77rQFfYnh6RDRGCcE= github.com/RoaringBitmap/roaring v1.9.0/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90= github.com/aws/aws-sdk-go v1.46.1 h1:U26quvBWFZMQuultLw5tloW4GnmWaChEwMZNq8uYatw= @@ -16,8 +14,6 @@ github.com/aws/aws-sdk-go v1.46.1/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Ph 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/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bits-and-blooms/bitset v1.12.0 h1:U/q1fAF7xXRhFCrhROzIfffYnu+dlS38vCZtmFVPHmA= github.com/bits-and-blooms/bitset v1.12.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/c9s/goprocinfo v0.0.0-20210130143923-c95fcf8c64a8 h1:SjZ2GvvOononHOpK84APFuMvxqsk3tEIaKH/z4Rpu3g= @@ -40,9 +36,6 @@ github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0 github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -55,10 +48,9 @@ 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/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= @@ -74,16 +66,16 @@ 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 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/longhorn/backupstore v0.0.0-20240126140439-9c90a8728ca2 h1:z765UgIMoPlgtMg3Jnc6E0ZjZPVQqES2eiFbAE+nORs= -github.com/longhorn/backupstore v0.0.0-20240126140439-9c90a8728ca2/go.mod h1:4cbJWtlrD2cGTQxQLtdlPTYopiJiusXH7CpOBrn/s3k= -github.com/longhorn/go-common-libs v0.0.0-20240109042507-23627e6416b7 h1:t8F+BjCcn0qqHdVlGktqnEH5EOGigFnAFmVbQPe0nnY= -github.com/longhorn/go-common-libs v0.0.0-20240109042507-23627e6416b7/go.mod h1:nIECQARppamt2zwFSdzADRTVKo/7izFwWIS3VWi7D/s= -github.com/longhorn/go-spdk-helper v0.0.0-20240117135122-26f8acb2a13d h1:Yqt7DL478ir9LwHmuRRXWzKKyzKbvPkGadCeRQ3pv1o= -github.com/longhorn/go-spdk-helper v0.0.0-20240117135122-26f8acb2a13d/go.mod h1:9nZ5HbwviggK6l792X4l9fTivEWmiK3sXFaroiRp2yw= +github.com/longhorn/backupstore v0.0.0-20240219094812-3a87ee02df77 h1:iJRq59kA22f9HIjFtY/lz5rKCorZJrrYXju70XoWdmE= +github.com/longhorn/backupstore v0.0.0-20240219094812-3a87ee02df77/go.mod h1:4cbJWtlrD2cGTQxQLtdlPTYopiJiusXH7CpOBrn/s3k= +github.com/longhorn/go-common-libs v0.0.0-20240219094750-e7176c332156 h1:Jv1+UlfrzSodyIobaioQn8Vh4RQ+23FpN2Q60iFdqCU= +github.com/longhorn/go-common-libs v0.0.0-20240219094750-e7176c332156/go.mod h1:nIECQARppamt2zwFSdzADRTVKo/7izFwWIS3VWi7D/s= +github.com/longhorn/go-spdk-helper v0.0.0-20240222125115-a6f538717427 h1:lmjxmG2EMhYZSt5ShbtFl2bzR2GICATdQneSHUf4sjo= +github.com/longhorn/go-spdk-helper v0.0.0-20240222125115-a6f538717427/go.mod h1:GlzdjhUZn8iH/TzCfy8O+WXP4kxxnPvwFAG/uwuKmso= github.com/longhorn/longhorn-engine v1.6.0-dev-20240105.0.20240126141003-067f67803ee8 h1:Oj5bAlKBzS+qPxA8lfpUcbllrVjnHVCuhPcQv/V98xw= github.com/longhorn/longhorn-engine v1.6.0-dev-20240105.0.20240126141003-067f67803ee8/go.mod h1:Snkv3gy4AUOhZSYMI7g7lVX/OOB8DTo28eJwsEfbAwM= -github.com/longhorn/longhorn-spdk-engine v0.0.0-20240123044045-c5f14845bd83 h1:7onMWr23AzUC6C7uSpe0lfi0J2FPhrxtExGlYEyFCxc= -github.com/longhorn/longhorn-spdk-engine v0.0.0-20240123044045-c5f14845bd83/go.mod h1:+qobpc6BOqFxXjyEksxuSjfSI6BEJF7L630GWP9wyOk= +github.com/longhorn/longhorn-spdk-engine v0.0.0-20240222133636-8ded920ee144 h1:B6IuGFiAOq3oBP9pfQqN9gWu5Ahpqo1yEE2kC2GbT30= +github.com/longhorn/longhorn-spdk-engine v0.0.0-20240222133636-8ded920ee144/go.mod h1:YBfCONov4UINPahOKmnuVBRGPhfVHOuEgJnhDtQfYt4= github.com/longhorn/nsfilelock v0.0.0-20200723175406-fa7c83ad0003 h1:Jw9uANsGcHTxp6HcC++/vN17LfeuDmozHI2j6DoZf5E= github.com/longhorn/nsfilelock v0.0.0-20200723175406-fa7c83ad0003/go.mod h1:0CLeXlf59Lg6C0kjLSDf47ft73Dh37CwymYRKWwAn04= github.com/longhorn/sparse-tools v0.0.0-20230408015858-c849def39d3c h1:EAE/cBOWZUL9CDiI4xbOr1IudQUa2e6u/pdScytEcvo= @@ -173,16 +165,12 @@ golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -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/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= 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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= 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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -199,8 +187,6 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.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/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -218,12 +204,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= @@ -243,15 +225,9 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/apimachinery v0.27.1 h1:EGuZiLI95UQQcClhanryclaQE6xjg1Bts6/L3cD7zyc= k8s.io/apimachinery v0.27.1/go.mod h1:5ikh59fK3AJ287GUvpUsryoMFtH9zj/ARfWCo3AyXTM= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/mount-utils v0.27.1 h1:RSd0wslbIuwLRaGGNAGMZ3m9FLcvukxJ3FWlOm76W2A= -k8s.io/mount-utils v0.27.1/go.mod h1:vmcjYdi2Vg1VTWY7KkhvwJVY6WDHxb/QQhiQKkR8iNs= k8s.io/mount-utils v0.29.2 h1:FrUfgvOo63nqJRPXKoqN/DW1lMnR/y0pzpFErKh6p2o= k8s.io/mount-utils v0.29.2/go.mod h1:9IWJTMe8tG0MYMLEp60xK9GYVeCdA3g4LowmnVi+t9Y= -k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= -k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= diff --git a/vendor/github.com/longhorn/backupstore/config.go b/vendor/github.com/longhorn/backupstore/config.go index 35cd5a525..a996ba0db 100644 --- a/vendor/github.com/longhorn/backupstore/config.go +++ b/vendor/github.com/longhorn/backupstore/config.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "path/filepath" + "runtime" "strings" "time" @@ -139,6 +140,27 @@ func volumeExists(driver BackupStoreDriver, volumeName string) bool { return driver.FileExists(getVolumeFilePath(volumeName)) } +// volumeFolderExists checks if volume folder exists on backupstore +// by listing all the backup volume name based on the folders on the backupstore +// since s3 does not support checking folder exist. +func volumeFolderExists(driver BackupStoreDriver, volumeName string) (bool, error) { + jobQueues := workerpool.New(runtime.NumCPU() * 16) + defer jobQueues.StopWait() + + volumeNames, err := getVolumeNames(jobQueues, driver) + if err != nil { + return false, err + } + + for _, name := range volumeNames { + if volumeName == name { + return true, nil + } + } + + return false, nil +} + func getVolumePath(volumeName string) string { checksum := util.GetChecksum([]byte(volumeName)) volumeLayer1 := checksum[0:VOLUME_SEPARATE_LAYER1] diff --git a/vendor/github.com/longhorn/backupstore/deltablock.go b/vendor/github.com/longhorn/backupstore/deltablock.go index d011b3a2a..73851e53b 100644 --- a/vendor/github.com/longhorn/backupstore/deltablock.go +++ b/vendor/github.com/longhorn/backupstore/deltablock.go @@ -1051,6 +1051,17 @@ func DeleteBackupVolume(volumeName string, destURL string) error { if err != nil { return err } + + backupVolumeFolderExists, err := volumeFolderExists(bsDriver, volumeName) + if err != nil { + return err + } + + // No need to lock and remove volume if it does not exist. + if !backupVolumeFolderExists { + return nil + } + lock, err := New(bsDriver, volumeName, DELETION_LOCK) if err != nil { return err diff --git a/vendor/github.com/longhorn/backupstore/renovate.json b/vendor/github.com/longhorn/backupstore/renovate.json new file mode 100644 index 000000000..c297cdcff --- /dev/null +++ b/vendor/github.com/longhorn/backupstore/renovate.json @@ -0,0 +1,3 @@ +{ + "extends": ["github>longhorn/release:renovate-default"] +} diff --git a/vendor/github.com/longhorn/go-common-libs/ns/crypto.go b/vendor/github.com/longhorn/go-common-libs/ns/crypto.go index d8988ddaf..5638b37dd 100644 --- a/vendor/github.com/longhorn/go-common-libs/ns/crypto.go +++ b/vendor/github.com/longhorn/go-common-libs/ns/crypto.go @@ -65,5 +65,5 @@ func (nsexec *Executor) CryptsetupWithPassphrase(passphrase string, args []strin // For Talos Linux, cryptsetup comes pre-installed in the host namespace // (ref: https://github.com/siderolabs/pkgs/blob/release-1.4/reproducibility/pkg.yaml#L10) // for the [Disk Encryption](https://www.talos.dev/v1.4/talos-guides/configuration/disk-encryption/). - return nsexec.ExecuteWithStdin(types.BinaryCryptsetup, args, passphrase, timeout) + return nsexec.ExecuteWithStdin(nil, types.BinaryCryptsetup, args, passphrase, timeout) } diff --git a/vendor/github.com/longhorn/go-common-libs/ns/executor.go b/vendor/github.com/longhorn/go-common-libs/ns/executor.go index 617f21e0a..a850e7710 100644 --- a/vendor/github.com/longhorn/go-common-libs/ns/executor.go +++ b/vendor/github.com/longhorn/go-common-libs/ns/executor.go @@ -46,7 +46,7 @@ func NewNamespaceExecutor(processName, procDirectory string, namespaces []types. } // prepareCommandArgs prepares the nsenter command arguments. -func (nsexec *Executor) prepareCommandArgs(binary string, args []string) []string { +func (nsexec *Executor) prepareCommandArgs(binary string, args, envs []string) []string { cmdArgs := []string{} for _, ns := range nsexec.namespaces { nsPath := filepath.Join(nsexec.nsDirectory, ns.String()) @@ -59,24 +59,29 @@ func (nsexec *Executor) prepareCommandArgs(binary string, args []string) []strin cmdArgs = append(cmdArgs, "--net="+nsPath) } } + if len(envs) > 0 { + cmdArgs = append(cmdArgs, "env", "-i") + cmdArgs = append(cmdArgs, envs...) + } + cmdArgs = append(cmdArgs, binary) return append(cmdArgs, args...) } // Execute executes the command in the namespace. If NsDirectory is empty, // it will execute the command in the current namespace. -func (nsexec *Executor) Execute(binary string, args []string, timeout time.Duration) (string, error) { - return nsexec.executor.Execute(nil, types.NsBinary, nsexec.prepareCommandArgs(binary, args), timeout) +func (nsexec *Executor) Execute(envs []string, binary string, args []string, timeout time.Duration) (string, error) { + return nsexec.executor.Execute(nil, types.NsBinary, nsexec.prepareCommandArgs(binary, args, envs), timeout) } // ExecuteWithStdin executes the command in the namespace with stdin. // If NsDirectory is empty, it will execute the command in the current namespace. -func (nsexec *Executor) ExecuteWithStdin(binary string, args []string, stdinString string, timeout time.Duration) (string, error) { - return nsexec.executor.ExecuteWithStdin(types.NsBinary, nsexec.prepareCommandArgs(binary, args), stdinString, timeout) +func (nsexec *Executor) ExecuteWithStdin(envs []string, binary string, args []string, stdinString string, timeout time.Duration) (string, error) { + return nsexec.executor.ExecuteWithStdin(types.NsBinary, nsexec.prepareCommandArgs(binary, args, envs), stdinString, timeout) } // ExecuteWithStdinPipe executes the command in the namespace with stdin pipe. // If NsDirectory is empty, it will execute the command in the current namespace. -func (nsexec *Executor) ExecuteWithStdinPipe(binary string, args []string, stdinString string, timeout time.Duration) (string, error) { - return nsexec.executor.ExecuteWithStdinPipe(types.NsBinary, nsexec.prepareCommandArgs(binary, args), stdinString, timeout) +func (nsexec *Executor) ExecuteWithStdinPipe(envs []string, binary string, args []string, stdinString string, timeout time.Duration) (string, error) { + return nsexec.executor.ExecuteWithStdinPipe(types.NsBinary, nsexec.prepareCommandArgs(binary, args, envs), stdinString, timeout) } diff --git a/vendor/github.com/longhorn/go-common-libs/ns/filelock.go b/vendor/github.com/longhorn/go-common-libs/ns/filelock.go index 698cca6cc..b0ce92c60 100644 --- a/vendor/github.com/longhorn/go-common-libs/ns/filelock.go +++ b/vendor/github.com/longhorn/go-common-libs/ns/filelock.go @@ -40,7 +40,7 @@ func LockFile(path string) (result *os.File, err error) { // FileLock is a struct responsible for locking a file. type FileLock struct { FilePath string // The path of the file to lock. - File *os.File // The file handle aquired after successful lock. + File *os.File // The file handle acquired after successful lock. Timeout time.Duration // The maximum time to wait for lock acquisition. done chan struct{} // A channel for signaling lock release. diff --git a/vendor/github.com/longhorn/go-common-libs/sys/sys.go b/vendor/github.com/longhorn/go-common-libs/sys/sys.go index ea6f029a7..e4e23a30b 100644 --- a/vendor/github.com/longhorn/go-common-libs/sys/sys.go +++ b/vendor/github.com/longhorn/go-common-libs/sys/sys.go @@ -56,13 +56,13 @@ func GetOSDistro(osReleaseContent string) (string, error) { // GetSystemBlockDeviceInfo returns the block device info for the system. func GetSystemBlockDeviceInfo() (map[string]types.BlockDeviceInfo, error) { - return getSystemBlockDeviceInfo(os.ReadDir, os.ReadFile) + return getSystemBlockDeviceInfo(types.SysClassBlockDirectory, os.ReadDir, os.ReadFile) } // getSystemBlockDeviceInfo returns the block device info for the system. // It injects the readDirFn and readFileFn for testing. -func getSystemBlockDeviceInfo(readDirFn func(string) ([]os.DirEntry, error), readFileFn func(string) ([]byte, error)) (map[string]types.BlockDeviceInfo, error) { - devices, err := readDirFn(types.SysClassBlockDirectory) +func getSystemBlockDeviceInfo(sysClassBlockDirectory string, readDirFn func(string) ([]os.DirEntry, error), readFileFn func(string) ([]byte, error)) (map[string]types.BlockDeviceInfo, error) { + devices, err := readDirFn(sysClassBlockDirectory) if err != nil { return nil, err } @@ -82,12 +82,12 @@ func getSystemBlockDeviceInfo(readDirFn func(string) ([]os.DirEntry, error), rea deviceInfo := make(map[string]types.BlockDeviceInfo, len(devices)) for _, device := range devices { deviceName := device.Name() - devicePath := filepath.Join(types.SysClassBlockDirectory, deviceName, "dev") + devicePath := filepath.Join(sysClassBlockDirectory, deviceName, "dev") if _, err := os.Stat(devicePath); os.IsNotExist(err) { // If the device path does not exist, check if the device path exists in the "device" directory. // Some devices such as "nvme0cn1" created from SPDK do not have "dev" file under their sys/class/block directory. - alternativeDevicePath := filepath.Join(types.SysClassBlockDirectory, deviceName, "device", "dev") + alternativeDevicePath := filepath.Join(sysClassBlockDirectory, deviceName, "device", "dev") if _, altErr := os.Stat(alternativeDevicePath); os.IsNotExist(altErr) { errs := fmt.Errorf("primary error: %w; alternative error: %w", err, altErr) logrus.WithFields(logrus.Fields{ diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/initiator.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/initiator.go index c44c78ed5..f387e93c8 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/initiator.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/initiator.go @@ -485,7 +485,7 @@ func (i *Initiator) reloadLinearDmDevice() error { opts := []string{ "--getsize", devPath, } - output, err := i.executor.Execute(util.BlockdevBinary, opts, types.ExecuteTimeout) + output, err := i.executor.Execute(nil, util.BlockdevBinary, opts, types.ExecuteTimeout) if err != nil { return err } diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/nvmecli.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/nvmecli.go index e82fab100..2477a0d20 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/nvmecli.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/nvme/nvmecli.go @@ -69,7 +69,7 @@ func cliVersion(executor *commonNs.Executor) (major, minor int, err error) { opts := []string{ "--version", } - outputStr, err := executor.Execute(nvmeBinary, opts, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, nvmeBinary, opts, types.ExecuteTimeout) if err != nil { return 0, 0, err } @@ -108,7 +108,7 @@ func showHostNQN(executor *commonNs.Executor) (string, error) { "--show-hostnqn", } - outputStr, err := executor.Execute(nvmeBinary, opts, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, nvmeBinary, opts, types.ExecuteTimeout) if err != nil { return "", err } @@ -137,7 +137,7 @@ func listSubsystems(devicePath string, executor *commonNs.Executor) ([]Subsystem opts = append(opts, devicePath) } - outputStr, err := executor.Execute(nvmeBinary, opts, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, nvmeBinary, opts, types.ExecuteTimeout) if err != nil { return nil, err } @@ -200,7 +200,7 @@ func listControllers(executor *commonNs.Executor) ([]CliDevice, error) { "list", "-o", "json", } - outputStr, err := executor.Execute(nvmeBinary, opts, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, nvmeBinary, opts, types.ExecuteTimeout) if err != nil { return nil, err } @@ -217,12 +217,12 @@ func listControllers(executor *commonNs.Executor) ([]CliDevice, error) { } func getHostID(executor *commonNs.Executor) (string, error) { - outputStr, err := executor.Execute("cat", []string{"/etc/nvme/hostid"}, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, "cat", []string{"/etc/nvme/hostid"}, types.ExecuteTimeout) if err == nil { return strings.TrimSpace(string(outputStr)), nil } - outputStr, err = executor.Execute("cat", []string{"/sys/class/dmi/id/product_uuid"}, types.ExecuteTimeout) + outputStr, err = executor.Execute(nil, "cat", []string{"/sys/class/dmi/id/product_uuid"}, types.ExecuteTimeout) if err == nil { return strings.TrimSpace(string(outputStr)), nil } @@ -277,7 +277,7 @@ func discovery(hostID, hostNQN, ip, port string, executor *commonNs.Executor) ([ // } // nvme discover does not respect the -s option, so we need to filter the output - outputStr, err := executor.Execute(nvmeBinary, opts, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, nvmeBinary, opts, types.ExecuteTimeout) if err != nil { return nil, err } @@ -327,7 +327,7 @@ func connect(hostID, hostNQN, nqn, transpotType, ip, port string, executor *comm // { // "device" : "nvme0" // } - outputStr, err := executor.Execute(nvmeBinary, opts, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, nvmeBinary, opts, types.ExecuteTimeout) if err != nil { return "", err } @@ -355,7 +355,7 @@ func disconnect(nqn string, executor *commonNs.Executor) error { // NQN:nqn.2023-01.io.spdk:raid01 disconnected 1 controller(s) // // And trying to disconnect a non-existing target would return exit code 0 - _, err := executor.Execute(nvmeBinary, opts, types.ExecuteTimeout) + _, err := executor.Execute(nil, nvmeBinary, opts, types.ExecuteTimeout) return err } diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/client/basic.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/client/basic.go index 36dc9c4fd..e649d4736 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/client/basic.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/client/basic.go @@ -2,10 +2,21 @@ package client import ( "encoding/json" + "strings" spdktypes "github.com/longhorn/go-spdk-helper/pkg/spdk/types" ) +type Xattr struct { + Name string + Value string +} + +const ( + UserCreated = "user_created" + SnapshotTimestamp = "snapshot_timestamp" +) + // BdevGetBdevs get information about block devices (bdevs). // // "name": Optional. If this is not specified, the function will list all block devices. @@ -255,6 +266,17 @@ func (c *Client) BdevLvolGet(name string, timeout uint64) (bdevLvolInfoList []sp if spdktypes.GetBdevType(&b) != spdktypes.BdevTypeLvol { continue } + + b.DriverSpecific.Lvol.Xattrs = make(map[string]string) + user_created, err := c.BdevLvolGetXattr(name, UserCreated) + if err == nil { + b.DriverSpecific.Lvol.Xattrs[UserCreated] = user_created + } + snapshot_timestamp, err := c.BdevLvolGetXattr(name, SnapshotTimestamp) + if err == nil { + b.DriverSpecific.Lvol.Xattrs[SnapshotTimestamp] = snapshot_timestamp + } + bdevLvolInfoList = append(bdevLvolInfoList, b) } @@ -266,12 +288,17 @@ func (c *Client) BdevLvolGet(name string, timeout uint64) (bdevLvolInfoList []sp // "name": Required. UUID or alias of the logical volume to create a snapshot from. The alias of a lvol is /. // // "snapshotName": Required. the logical volume name for the newly created snapshot. -func (c *Client) BdevLvolSnapshot(name, snapshotName string) (uuid string, err error) { +func (c *Client) BdevLvolSnapshot(name, snapshotName string, xattrs []Xattr) (uuid string, err error) { req := spdktypes.BdevLvolSnapshotRequest{ LvolName: name, SnapshotName: snapshotName, } + req.Xattrs = make(map[string]string) + for _, s := range xattrs { + req.Xattrs[s.Name] = s.Value + } + cmdOutput, err := c.jsonCli.SendCommand("bdev_lvol_snapshot", req) if err != nil { return "", err @@ -918,3 +945,103 @@ func (c *Client) NvmfSubsystemGetListeners(nqn, tgtName string) (listenerList [] return listenerList, json.Unmarshal(cmdOutput, &listenerList) } + +// LogSetFlag sets the log flag. +// +// "flag": Required. Log flag to set. +func (c *Client) LogSetFlag(flag string) (result bool, err error) { + req := spdktypes.LogSetFlagRequest{ + Flag: flag, + } + + cmdOutput, err := c.jsonCli.SendCommand("log_set_flag", req) + if err != nil { + return false, err + } + + return result, json.Unmarshal(cmdOutput, &result) +} + +// LogClearFlag clears the log flag. +// +// "flag": Required. Log flag to clear. +func (c *Client) LogClearFlag(flag string) (result bool, err error) { + req := spdktypes.LogClearFlagRequest{ + Flag: flag, + } + + cmdOutput, err := c.jsonCli.SendCommand("log_clear_flag", req) + if err != nil { + return false, err + } + + return result, json.Unmarshal(cmdOutput, &result) +} + +// LogGetFlags gets the log flags. +func (c *Client) LogGetFlags() (flags map[string]bool, err error) { + req := spdktypes.LogGetFlagsRequest{} + + cmdOutput, err := c.jsonCli.SendCommand("log_get_flags", req) + if err != nil { + return nil, err + } + + return flags, json.Unmarshal(cmdOutput, &flags) +} + +// LogSetLevel sets the log level. +// +// "level": Required. Supported values are "disabled", "error", "warn", "notice", "info", "debug". Default is "notice". +func (c *Client) LogSetLevel(level string) (result bool, err error) { + req := spdktypes.LogSetLevelRequest{ + Level: level, + } + + cmdOutput, err := c.jsonCli.SendCommand("log_set_level", req) + if err != nil { + return false, err + } + + return result, json.Unmarshal(cmdOutput, &result) +} + +// LogGetLevel gets the log level. +func (c *Client) LogGetLevel() (string, error) { + req := spdktypes.LogGetLevelRequest{} + + level, err := c.jsonCli.SendCommand("log_get_level", req) + if err != nil { + return "", err + } + + return strings.Trim(string(level), "\"\n"), nil +} + +// LogSetPrintLevel sets the log print level. The log print level is the level at which log messages are printed to the console. +// +// "level": Required. Supported values are "disabled", "error", "warn", "notice", "info", "debug". Default is "notice". +func (c *Client) LogSetPrintLevel(level string) (result bool, err error) { + req := spdktypes.LogSetPrintLevelRequest{ + Level: level, + } + + cmdOutput, err := c.jsonCli.SendCommand("log_set_print_level", req) + if err != nil { + return false, err + } + + return result, json.Unmarshal(cmdOutput, &result) +} + +// LogGetPrintLevel gets the log print level. The log print level is the level at which log messages are printed to the console. +func (c *Client) LogGetPrintLevel() (string, error) { + req := spdktypes.LogGetPrintLevelRequest{} + + level, err := c.jsonCli.SendCommand("log_get_print_level", req) + if err != nil { + return "", err + } + + return strings.Trim(string(level), "\"\n"), nil +} diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/bdev.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/bdev.go index c693cd224..27c40da85 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/bdev.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/bdev.go @@ -19,7 +19,7 @@ const ( ) func GetBdevType(bdev *BdevInfo) BdevType { - if bdev == nil { + if bdev == nil || bdev.DriverSpecific == nil { return "" } if bdev.ProductName == BdevProductNameAio && bdev.DriverSpecific.Aio != nil { diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/log.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/log.go new file mode 100644 index 000000000..c7a039826 --- /dev/null +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/log.go @@ -0,0 +1,26 @@ +package types + +type LogSetFlagRequest struct { + Flag string `json:"flag"` +} + +type LogClearFlagRequest struct { + Flag string `json:"flag"` +} + +type LogGetFlagsRequest struct { +} + +type LogSetLevelRequest struct { + Level string `json:"level"` +} + +type LogGetLevelRequest struct { +} + +type LogSetPrintLevelRequest struct { + Level string `json:"level"` +} + +type LogGetPrintLevelRequest struct { +} diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/lvol.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/lvol.go index 0d7a8dea2..74735a5e0 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/lvol.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/spdk/types/lvol.go @@ -6,14 +6,15 @@ import ( ) type BdevDriverSpecificLvol struct { - LvolStoreUUID string `json:"lvol_store_uuid"` - BaseBdev string `json:"base_bdev"` - BaseSnapshot string `json:"base_snapshot,omitempty"` - ThinProvision bool `json:"thin_provision"` - NumAllocatedClusters uint64 `json:"num_allocated_clusters"` - Snapshot bool `json:"snapshot"` - Clone bool `json:"clone"` - Clones []string `json:"clones,omitempty"` + LvolStoreUUID string `json:"lvol_store_uuid"` + BaseBdev string `json:"base_bdev"` + BaseSnapshot string `json:"base_snapshot,omitempty"` + ThinProvision bool `json:"thin_provision"` + NumAllocatedClusters uint64 `json:"num_allocated_clusters"` + Snapshot bool `json:"snapshot"` + Clone bool `json:"clone"` + Clones []string `json:"clones,omitempty"` + Xattrs map[string]string `json:"xattrs,omitempty"` } type LvstoreInfo struct { @@ -92,8 +93,9 @@ type BdevLvolDeleteRequest struct { } type BdevLvolSnapshotRequest struct { - LvolName string `json:"lvol_name"` - SnapshotName string `json:"snapshot_name"` + LvolName string `json:"lvol_name"` + SnapshotName string `json:"snapshot_name"` + Xattrs map[string]string `json:"xattrs,omitempty"` } type BdevLvolCloneRequest struct { diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/util/device.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/util/device.go index c1af63551..f09bfd4a7 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/util/device.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/util/device.go @@ -69,7 +69,7 @@ func GetKnownDevices(executor *commonNs.Executor) (map[string]*KernelDevice, err "-l", "-n", "-o", "NAME,MAJ:MIN", } - output, err := executor.Execute(lsblkBinary, opts, types.ExecuteTimeout) + output, err := executor.Execute(nil, lsblkBinary, opts, types.ExecuteTimeout) if err != nil { return knownDevices, err } @@ -105,7 +105,7 @@ func DetectDevice(path string, executor *commonNs.Executor) (*KernelDevice, erro "-l", "-n", path, "-o", "NAME,MAJ:MIN", } - output, err := executor.Execute(lsblkBinary, opts, types.ExecuteTimeout) + output, err := executor.Execute(nil, lsblkBinary, opts, types.ExecuteTimeout) if err != nil { return nil, err } @@ -188,7 +188,7 @@ func GetDeviceSectorSize(devPath string, executor *commonNs.Executor) (int64, er "--getsz", devPath, } - output, err := executor.Execute(BlockdevBinary, opts, types.ExecuteTimeout) + output, err := executor.Execute(nil, BlockdevBinary, opts, types.ExecuteTimeout) if err != nil { return -1, err } @@ -201,7 +201,7 @@ func GetDeviceNumbers(devPath string, executor *commonNs.Executor) (int, int, er opts := []string{ "-l", "-J", "-n", "-o", "MAJ:MIN", devPath, } - output, err := executor.Execute(lsblkBinary, opts, types.ExecuteTimeout) + output, err := executor.Execute(nil, lsblkBinary, opts, types.ExecuteTimeout) if err != nil { return -1, -1, err } diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/util/dmsetup.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/util/dmsetup.go index 4fab02167..c761ca0c2 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/util/dmsetup.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/util/dmsetup.go @@ -17,7 +17,7 @@ func DmsetupCreate(dmDeviceName, table string, executor *commonNs.Executor) erro opts := []string{ "create", dmDeviceName, "--table", table, } - _, err := executor.Execute(dmsetupBinary, opts, types.ExecuteTimeout) + _, err := executor.Execute(nil, dmsetupBinary, opts, types.ExecuteTimeout) return err } @@ -35,7 +35,7 @@ func DmsetupSuspend(dmDeviceName string, noflush, nolockfs bool, executor *commo opts = append(opts, "--nolockfs") } - _, err := executor.Execute(dmsetupBinary, opts, types.ExecuteTimeout) + _, err := executor.Execute(nil, dmsetupBinary, opts, types.ExecuteTimeout) return err } @@ -44,7 +44,7 @@ func DmsetupResume(dmDeviceName string, executor *commonNs.Executor) error { opts := []string{ "resume", dmDeviceName, } - _, err := executor.Execute(dmsetupBinary, opts, types.ExecuteTimeout) + _, err := executor.Execute(nil, dmsetupBinary, opts, types.ExecuteTimeout) return err } @@ -53,7 +53,7 @@ func DmsetupReload(dmDeviceName, table string, executor *commonNs.Executor) erro opts := []string{ "reload", dmDeviceName, "--table", table, } - _, err := executor.Execute(dmsetupBinary, opts, types.ExecuteTimeout) + _, err := executor.Execute(nil, dmsetupBinary, opts, types.ExecuteTimeout) return err } @@ -68,7 +68,7 @@ func DmsetupRemove(dmDeviceName string, force, deferred bool, executor *commonNs if deferred { opts = append(opts, "--deferred") } - _, err := executor.Execute(dmsetupBinary, opts, types.ExecuteTimeout) + _, err := executor.Execute(nil, dmsetupBinary, opts, types.ExecuteTimeout) return err } @@ -78,7 +78,7 @@ func DmsetupDeps(dmDeviceName string, executor *commonNs.Executor) ([]string, er "deps", dmDeviceName, "-o", "devname", } - outputStr, err := executor.Execute(dmsetupBinary, opts, types.ExecuteTimeout) + outputStr, err := executor.Execute(nil, dmsetupBinary, opts, types.ExecuteTimeout) if err != nil { return nil, err } diff --git a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/client/client.go b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/client/client.go index 9005e1fa8..214a20f33 100644 --- a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/client/client.go +++ b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/client/client.go @@ -728,3 +728,49 @@ func (c *SPDKClient) DiskDelete(diskName, diskUUID string) error { }) return err } + +func (c *SPDKClient) LogSetLevel(level string) error { + client := c.getSPDKServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), GRPCServiceTimeout) + defer cancel() + + _, err := client.LogSetLevel(ctx, &spdkrpc.LogSetLevelRequest{ + Level: level, + }) + return err +} + +func (c *SPDKClient) LogSetFlags(flags string) error { + client := c.getSPDKServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), GRPCServiceTimeout) + defer cancel() + + _, err := client.LogSetFlags(ctx, &spdkrpc.LogSetFlagsRequest{ + Flags: flags, + }) + return err +} + +func (c *SPDKClient) LogGetLevel() (string, error) { + client := c.getSPDKServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), GRPCServiceTimeout) + defer cancel() + + resp, err := client.LogGetLevel(ctx, &emptypb.Empty{}) + if err != nil { + return "", err + } + return resp.Level, nil +} + +func (c *SPDKClient) LogGetFlags() (string, error) { + client := c.getSPDKServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), GRPCServiceTimeout) + defer cancel() + + resp, err := client.LogGetFlags(ctx, &emptypb.Empty{}) + if err != nil { + return "", err + } + return resp.Flags, nil +} diff --git a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/engine.go b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/engine.go index 2524898d3..c374f0bc6 100644 --- a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/engine.go +++ b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/engine.go @@ -1098,7 +1098,7 @@ func (e *Engine) snapshotOperation(spdkClient *spdkclient.Client, inputSnapshotN } else { e.log.Infof("Requesting system sync %v before snapshot", devicePath) // TODO: only sync the device path rather than all filesystems - if _, err := ne.Execute("sync", []string{}, SyncTimeout); err != nil { + if _, err := ne.Execute(nil, "sync", []string{}, SyncTimeout); err != nil { // sync should never fail though, so it more like due to the nsenter e.log.WithError(err).Errorf("WARNING: failed to sync for snapshot op %v with snapshot %s, will skip the sync and continue", snapshotOp, inputSnapshotName) } diff --git a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/log.go b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/log.go new file mode 100644 index 000000000..620c24ad7 --- /dev/null +++ b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/log.go @@ -0,0 +1,112 @@ +package spdk + +import ( + "strings" + + "github.com/sirupsen/logrus" + + spdkclient "github.com/longhorn/go-spdk-helper/pkg/spdk/client" +) + +func svcLogSetLevel(spdkClient *spdkclient.Client, level string) error { + log := logrus.WithFields(logrus.Fields{ + "level": level, + }) + + log.Trace("Setting log level") + + if _, err := spdkClient.LogSetLevel(level); err != nil { + return err + } + if _, err := spdkClient.LogSetPrintLevel(level); err != nil { + return err + } + return nil + +} + +func svcLogSetFlags(spdkClient *spdkclient.Client, flags string) (err error) { + log := logrus.WithFields(logrus.Fields{ + "flags": flags, + }) + + log.Trace("Setting log flags") + + if flags == "" { + _, err = spdkClient.LogClearFlag("all") + return err + } + + flagMap := commaSeparatedStringToMap(flags) + if _, ok := flagMap["all"]; ok { + _, err = spdkClient.LogSetFlag(flags) + return err + } + + currentFlagMap, err := spdkClient.LogGetFlags() + if err != nil { + return err + } + + for flag, enabled := range currentFlagMap { + targetFlagEnabled := flagMap[flag] + if enabled != targetFlagEnabled { + if targetFlagEnabled { + _, err = spdkClient.LogSetFlag(flag) + } else { + _, err = spdkClient.LogClearFlag(flag) + } + if err != nil { + return err + } + } + } + + return nil +} + +func commaSeparatedStringToMap(flags string) map[string]bool { + flagMap := make(map[string]bool) + if flags == "" { + return flagMap + } + + flagList := strings.Split(flags, ",") + for _, flag := range flagList { + flagMap[flag] = true + } + + return flagMap +} + +func svcLogGetLevel(spdkClient *spdkclient.Client) (level string, err error) { + logrus.Trace("Getting log level") + + return spdkClient.LogGetPrintLevel() +} + +func svcLogGetFlags(spdkClient *spdkclient.Client) (flags string, err error) { + logrus.Trace("Getting log flags") + + var flagsMap map[string]bool + + flagsMap, err = spdkClient.LogGetFlags() + if err != nil { + return "", err + } + return mapToCommaSeparatedString(flagsMap), nil +} + +func mapToCommaSeparatedString(m map[string]bool) string { + if len(m) == 0 { + return "" + } + + var s string + for k, v := range m { + if v { + s += k + "," + } + } + return s[:len(s)-1] +} diff --git a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/replica.go b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/replica.go index 29d792456..8fee259e2 100644 --- a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/replica.go +++ b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/replica.go @@ -822,7 +822,7 @@ func (r *Replica) SnapshotCreate(spdkClient *spdkclient.Client, snapshotName str } headSvcLvol := r.ActiveChain[r.ChainLength-1] - snapUUID, err := spdkClient.BdevLvolSnapshot(headSvcLvol.UUID, snapLvolName) + snapUUID, err := spdkClient.BdevLvolSnapshot(headSvcLvol.UUID, snapLvolName, nil) if err != nil { return nil, err } @@ -1427,7 +1427,7 @@ func (r *Replica) RebuildingDstSnapshotCreate(spdkClient *spdkclient.Client, sna }() snapLvolName := GetReplicaSnapshotLvolName(r.Name, snapshotName) - snapUUID, err := spdkClient.BdevLvolSnapshot(r.rebuildingLvol.UUID, snapLvolName) + snapUUID, err := spdkClient.BdevLvolSnapshot(r.rebuildingLvol.UUID, snapLvolName, nil) if err != nil { return err } diff --git a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/server.go b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/server.go index a459fbff1..d7f098054 100644 --- a/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/server.go +++ b/vendor/github.com/longhorn/longhorn-spdk-engine/pkg/spdk/server.go @@ -1195,6 +1195,60 @@ func (s *Server) DiskGet(ctx context.Context, req *spdkrpc.DiskGetRequest) (ret return svcDiskGet(spdkClient, req.DiskName) } +func (s *Server) LogSetLevel(ctx context.Context, req *spdkrpc.LogSetLevelRequest) (ret *emptypb.Empty, err error) { + s.RLock() + spdkClient := s.spdkClient + s.RUnlock() + + err = svcLogSetLevel(spdkClient, req.Level) + if err != nil { + return nil, err + } + return &emptypb.Empty{}, nil +} + +func (s *Server) LogSetFlags(ctx context.Context, req *spdkrpc.LogSetFlagsRequest) (ret *emptypb.Empty, err error) { + s.RLock() + spdkClient := s.spdkClient + s.RUnlock() + + err = svcLogSetFlags(spdkClient, req.Flags) + if err != nil { + return nil, err + } + return &emptypb.Empty{}, nil +} + +func (s *Server) LogGetLevel(ctx context.Context, req *emptypb.Empty) (ret *spdkrpc.LogGetLevelResponse, err error) { + s.RLock() + spdkClient := s.spdkClient + s.RUnlock() + + level, err := svcLogGetLevel(spdkClient) + if err != nil { + return nil, err + } + + return &spdkrpc.LogGetLevelResponse{ + Level: level, + }, nil +} + +func (s *Server) LogGetFlags(ctx context.Context, req *emptypb.Empty) (ret *spdkrpc.LogGetFlagsResponse, err error) { + s.RLock() + spdkClient := s.spdkClient + s.RUnlock() + + flags, err := svcLogGetFlags(spdkClient) + if err != nil { + return nil, err + } + + return &spdkrpc.LogGetFlagsResponse{ + Flags: flags, + }, nil +} + func (s *Server) VersionDetailGet(context.Context, *emptypb.Empty) (*spdkrpc.VersionDetailGetReply, error) { // TODO: Implement this return &spdkrpc.VersionDetailGetReply{ diff --git a/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.pb.go b/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.pb.go index d7dd87df6..bbae6afad 100644 --- a/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.pb.go +++ b/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.pb.go @@ -3023,6 +3023,194 @@ func (x *DiskDeleteRequest) GetDiskUuid() string { return "" } +type LogSetLevelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level,omitempty"` +} + +func (x *LogSetLevelRequest) Reset() { + *x = LogSetLevelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogSetLevelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogSetLevelRequest) ProtoMessage() {} + +func (x *LogSetLevelRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LogSetLevelRequest.ProtoReflect.Descriptor instead. +func (*LogSetLevelRequest) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawDescGZIP(), []int{43} +} + +func (x *LogSetLevelRequest) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +type LogSetFlagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Flags string `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"` +} + +func (x *LogSetFlagsRequest) Reset() { + *x = LogSetFlagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogSetFlagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogSetFlagsRequest) ProtoMessage() {} + +func (x *LogSetFlagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LogSetFlagsRequest.ProtoReflect.Descriptor instead. +func (*LogSetFlagsRequest) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawDescGZIP(), []int{44} +} + +func (x *LogSetFlagsRequest) GetFlags() string { + if x != nil { + return x.Flags + } + return "" +} + +type LogGetLevelResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level,omitempty"` +} + +func (x *LogGetLevelResponse) Reset() { + *x = LogGetLevelResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogGetLevelResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogGetLevelResponse) ProtoMessage() {} + +func (x *LogGetLevelResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LogGetLevelResponse.ProtoReflect.Descriptor instead. +func (*LogGetLevelResponse) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawDescGZIP(), []int{45} +} + +func (x *LogGetLevelResponse) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +type LogGetFlagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Flags string `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"` +} + +func (x *LogGetFlagsResponse) Reset() { + *x = LogGetFlagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogGetFlagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogGetFlagsResponse) ProtoMessage() {} + +func (x *LogGetFlagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LogGetFlagsResponse.ProtoReflect.Descriptor instead. +func (*LogGetFlagsResponse) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawDescGZIP(), []int{46} +} + +func (x *LogGetFlagsResponse) GetFlags() string { + if x != nil { + return x.Flags + } + return "" +} + var File_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto protoreflect.FileDescriptor var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawDesc = []byte{ @@ -3524,222 +3712,250 @@ var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawDe 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, - 0x55, 0x75, 0x69, 0x64, 0x2a, 0x26, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x57, 0x4f, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x52, - 0x57, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x52, 0x52, 0x10, 0x02, 0x32, 0x87, 0x1a, 0x0a, - 0x0b, 0x53, 0x50, 0x44, 0x4b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0d, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, - 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x73, - 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x46, - 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x55, 0x75, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x22, 0x2a, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x2b, 0x0a, 0x13, + 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x2b, 0x0a, 0x13, 0x4c, 0x6f, 0x67, + 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2a, 0x26, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x57, 0x4f, 0x10, 0x00, 0x12, 0x06, 0x0a, + 0x02, 0x52, 0x57, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x52, 0x52, 0x10, 0x02, 0x32, 0x99, + 0x1c, 0x0a, 0x0b, 0x53, 0x50, 0x44, 0x4b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x40, + 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x12, 0x3a, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x10, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x12, 0x43, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x70, - 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x49, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 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, 0x12, 0x49, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x18, 0x2e, 0x73, 0x70, - 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 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, 0x12, 0x43, 0x0a, - 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, + 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, + 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x12, 0x46, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x12, 0x3a, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, + 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x12, 0x43, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, + 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, + 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x49, 0x0a, 0x15, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 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, 0x1a, 0x1c, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 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, 0x00, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x29, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, - 0x72, 0x63, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x18, 0x2e, + 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 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, 0x12, + 0x43, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, + 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 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, 0x00, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, - 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, - 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, - 0x6e, 0x67, 0x53, 0x72, 0x63, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 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, 0x00, 0x12, 0x62, 0x0a, 0x1a, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, - 0x67, 0x53, 0x72, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, - 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 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, 0x00, - 0x12, 0x62, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x12, 0x2a, - 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x44, 0x65, 0x74, - 0x61, 0x63, 0x68, 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, 0x00, 0x12, 0x60, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x68, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f, - 0x70, 0x79, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x68, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x70, 0x79, 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, 0x12, 0x74, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x29, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, - 0x73, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x1a, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x29, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, - 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 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, 0x00, - 0x12, 0x56, 0x0a, 0x22, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x67, 0x53, 0x72, 0x63, 0x53, 0x74, 0x61, 0x72, 0x74, 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, 0x12, 0x56, 0x0a, 0x22, 0x52, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x18, - 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 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, - 0x12, 0x54, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x2e, - 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, - 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x14, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x12, 0x24, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 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, 0x00, 0x12, 0x65, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, - 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x2e, 0x73, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x1a, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x72, 0x63, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, + 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 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, 0x00, 0x12, 0x62, + 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x45, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x70, - 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x70, 0x64, 0x6b, - 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x45, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x64, - 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 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, - 0x12, 0x37, 0x0a, 0x09, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x12, 0x19, 0x2e, - 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, - 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x45, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x70, - 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x14, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, - 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x22, 0x00, 0x12, 0x62, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, + 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x44, + 0x65, 0x74, 0x61, 0x63, 0x68, 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, 0x00, 0x12, 0x60, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x68, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x43, 0x6f, 0x70, 0x79, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x68, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x70, 0x79, 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, 0x12, 0x74, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x29, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, + 0x67, 0x44, 0x73, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, + 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x2a, 0x2e, 0x73, + 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 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, - 0x12, 0x48, 0x0a, 0x14, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, + 0x22, 0x00, 0x12, 0x56, 0x0a, 0x22, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 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, 0x12, 0x41, 0x0a, 0x0a, 0x45, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x1b, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, - 0x0b, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 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, 0x00, 0x30, 0x01, - 0x12, 0x5c, 0x0a, 0x11, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, - 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, - 0x0a, 0x10, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, - 0x64, 0x64, 0x12, 0x20, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 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, 0x00, 0x12, 0x54, - 0x0a, 0x13, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x22, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x44, + 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, + 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 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, 0x00, 0x12, 0x53, 0x0a, 0x12, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x64, - 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, - 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x12, 0x45, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x74, 0x79, 0x12, 0x54, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x64, 0x6b, + 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, + 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, - 0x0a, 0x13, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x70, 0x64, - 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x60, 0x0a, 0x19, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, - 0x29, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, + 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x24, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, + 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 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, 0x00, 0x12, 0x65, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, + 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, + 0x0c, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, + 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x70, + 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x44, 0x0a, 0x0c, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, + 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 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, 0x12, 0x37, 0x0a, 0x09, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x12, + 0x19, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x70, 0x64, + 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x14, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 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, 0x00, 0x12, 0x56, 0x0a, 0x13, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x70, - 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x70, 0x64, - 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x0a, - 0x44, 0x69, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x70, 0x64, - 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, - 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x40, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, - 0x73, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x12, 0x31, 0x0a, 0x07, 0x44, 0x69, 0x73, 0x6b, 0x47, - 0x65, 0x74, 0x12, 0x17, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x73, - 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x73, 0x70, - 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x4a, 0x0a, 0x10, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x47, 0x65, 0x74, 0x12, 0x16, + 0x74, 0x79, 0x12, 0x48, 0x0a, 0x14, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x64, + 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 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, 0x12, 0x41, 0x0a, 0x0a, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x41, 0x0a, 0x0b, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, - 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2f, 0x6c, 0x6f, - 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2d, 0x73, 0x70, 0x64, 0x6b, 0x2d, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 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, 0x00, + 0x30, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, + 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x64, + 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x4e, 0x0a, 0x10, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x41, 0x64, 0x64, 0x12, 0x20, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 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, 0x00, + 0x12, 0x54, 0x0a, 0x13, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, + 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x00, 0x12, 0x53, 0x0a, 0x12, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x73, + 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x64, + 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x12, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x62, 0x0a, 0x13, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, + 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, + 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x19, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x12, 0x29, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 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, 0x00, 0x12, 0x56, 0x0a, 0x13, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, + 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, + 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, + 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, + 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, + 0x70, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x40, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x6b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, + 0x44, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x12, 0x31, 0x0a, 0x07, 0x44, 0x69, 0x73, + 0x6b, 0x47, 0x65, 0x74, 0x12, 0x17, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x44, + 0x69, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, + 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x42, 0x0a, 0x0b, + 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x2e, 0x73, 0x70, + 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 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, + 0x12, 0x42, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, + 0x1b, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, + 0x46, 0x6c, 0x61, 0x67, 0x73, 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, 0x12, 0x43, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x70, + 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, + 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x1c, 0x2e, 0x73, 0x70, 0x64, 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, + 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, + 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x47, + 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x73, 0x70, 0x64, + 0x6b, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, + 0x6e, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2d, 0x73, 0x70, 0x64, 0x6b, 0x2d, + 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x64, + 0x6b, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3755,7 +3971,7 @@ func file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawD } var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes = make([]protoimpl.MessageInfo, 57) +var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes = make([]protoimpl.MessageInfo, 61) var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_goTypes = []interface{}{ (ReplicaMode)(0), // 0: spdkrpc.ReplicaMode (*Lvol)(nil), // 1: spdkrpc.Lvol @@ -3801,40 +4017,44 @@ var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_goTyp (*DiskCreateRequest)(nil), // 41: spdkrpc.DiskCreateRequest (*DiskGetRequest)(nil), // 42: spdkrpc.DiskGetRequest (*DiskDeleteRequest)(nil), // 43: spdkrpc.DiskDeleteRequest - nil, // 44: spdkrpc.Lvol.ChildrenEntry - nil, // 45: spdkrpc.Replica.SnapshotsEntry - nil, // 46: spdkrpc.ReplicaListResponse.ReplicasEntry - nil, // 47: spdkrpc.Engine.ReplicaAddressMapEntry - nil, // 48: spdkrpc.Engine.ReplicaModeMapEntry - nil, // 49: spdkrpc.Engine.SnapshotsEntry - nil, // 50: spdkrpc.EngineCreateRequest.ReplicaAddressMapEntry - nil, // 51: spdkrpc.EngineListResponse.EnginesEntry - nil, // 52: spdkrpc.EngineReplicaListResponse.ReplicasEntry - nil, // 53: spdkrpc.BackupCreateRequest.CredentialEntry - nil, // 54: spdkrpc.EngineBackupRestoreRequest.CredentialEntry - nil, // 55: spdkrpc.EngineBackupRestoreResponse.ErrorsEntry - nil, // 56: spdkrpc.ReplicaBackupRestoreRequest.CredentialEntry - nil, // 57: spdkrpc.RestoreStatusResponse.StatusEntry - (*emptypb.Empty)(nil), // 58: google.protobuf.Empty + (*LogSetLevelRequest)(nil), // 44: spdkrpc.LogSetLevelRequest + (*LogSetFlagsRequest)(nil), // 45: spdkrpc.LogSetFlagsRequest + (*LogGetLevelResponse)(nil), // 46: spdkrpc.LogGetLevelResponse + (*LogGetFlagsResponse)(nil), // 47: spdkrpc.LogGetFlagsResponse + nil, // 48: spdkrpc.Lvol.ChildrenEntry + nil, // 49: spdkrpc.Replica.SnapshotsEntry + nil, // 50: spdkrpc.ReplicaListResponse.ReplicasEntry + nil, // 51: spdkrpc.Engine.ReplicaAddressMapEntry + nil, // 52: spdkrpc.Engine.ReplicaModeMapEntry + nil, // 53: spdkrpc.Engine.SnapshotsEntry + nil, // 54: spdkrpc.EngineCreateRequest.ReplicaAddressMapEntry + nil, // 55: spdkrpc.EngineListResponse.EnginesEntry + nil, // 56: spdkrpc.EngineReplicaListResponse.ReplicasEntry + nil, // 57: spdkrpc.BackupCreateRequest.CredentialEntry + nil, // 58: spdkrpc.EngineBackupRestoreRequest.CredentialEntry + nil, // 59: spdkrpc.EngineBackupRestoreResponse.ErrorsEntry + nil, // 60: spdkrpc.ReplicaBackupRestoreRequest.CredentialEntry + nil, // 61: spdkrpc.RestoreStatusResponse.StatusEntry + (*emptypb.Empty)(nil), // 62: google.protobuf.Empty } var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_depIdxs = []int32{ - 44, // 0: spdkrpc.Lvol.children:type_name -> spdkrpc.Lvol.ChildrenEntry + 48, // 0: spdkrpc.Lvol.children:type_name -> spdkrpc.Lvol.ChildrenEntry 1, // 1: spdkrpc.Replica.head:type_name -> spdkrpc.Lvol - 45, // 2: spdkrpc.Replica.snapshots:type_name -> spdkrpc.Replica.SnapshotsEntry - 46, // 3: spdkrpc.ReplicaListResponse.replicas:type_name -> spdkrpc.ReplicaListResponse.ReplicasEntry - 47, // 4: spdkrpc.Engine.replica_address_map:type_name -> spdkrpc.Engine.ReplicaAddressMapEntry - 48, // 5: spdkrpc.Engine.replica_mode_map:type_name -> spdkrpc.Engine.ReplicaModeMapEntry + 49, // 2: spdkrpc.Replica.snapshots:type_name -> spdkrpc.Replica.SnapshotsEntry + 50, // 3: spdkrpc.ReplicaListResponse.replicas:type_name -> spdkrpc.ReplicaListResponse.ReplicasEntry + 51, // 4: spdkrpc.Engine.replica_address_map:type_name -> spdkrpc.Engine.ReplicaAddressMapEntry + 52, // 5: spdkrpc.Engine.replica_mode_map:type_name -> spdkrpc.Engine.ReplicaModeMapEntry 1, // 6: spdkrpc.Engine.head:type_name -> spdkrpc.Lvol - 49, // 7: spdkrpc.Engine.snapshots:type_name -> spdkrpc.Engine.SnapshotsEntry - 50, // 8: spdkrpc.EngineCreateRequest.replica_address_map:type_name -> spdkrpc.EngineCreateRequest.ReplicaAddressMapEntry - 51, // 9: spdkrpc.EngineListResponse.engines:type_name -> spdkrpc.EngineListResponse.EnginesEntry - 52, // 10: spdkrpc.EngineReplicaListResponse.replicas:type_name -> spdkrpc.EngineReplicaListResponse.ReplicasEntry + 53, // 7: spdkrpc.Engine.snapshots:type_name -> spdkrpc.Engine.SnapshotsEntry + 54, // 8: spdkrpc.EngineCreateRequest.replica_address_map:type_name -> spdkrpc.EngineCreateRequest.ReplicaAddressMapEntry + 55, // 9: spdkrpc.EngineListResponse.engines:type_name -> spdkrpc.EngineListResponse.EnginesEntry + 56, // 10: spdkrpc.EngineReplicaListResponse.replicas:type_name -> spdkrpc.EngineReplicaListResponse.ReplicasEntry 26, // 11: spdkrpc.VersionDetailGetReply.version:type_name -> spdkrpc.VersionOutput - 53, // 12: spdkrpc.BackupCreateRequest.credential:type_name -> spdkrpc.BackupCreateRequest.CredentialEntry - 54, // 13: spdkrpc.EngineBackupRestoreRequest.credential:type_name -> spdkrpc.EngineBackupRestoreRequest.CredentialEntry - 55, // 14: spdkrpc.EngineBackupRestoreResponse.errors:type_name -> spdkrpc.EngineBackupRestoreResponse.ErrorsEntry - 56, // 15: spdkrpc.ReplicaBackupRestoreRequest.credential:type_name -> spdkrpc.ReplicaBackupRestoreRequest.CredentialEntry - 57, // 16: spdkrpc.RestoreStatusResponse.status:type_name -> spdkrpc.RestoreStatusResponse.StatusEntry + 57, // 12: spdkrpc.BackupCreateRequest.credential:type_name -> spdkrpc.BackupCreateRequest.CredentialEntry + 58, // 13: spdkrpc.EngineBackupRestoreRequest.credential:type_name -> spdkrpc.EngineBackupRestoreRequest.CredentialEntry + 59, // 14: spdkrpc.EngineBackupRestoreResponse.errors:type_name -> spdkrpc.EngineBackupRestoreResponse.ErrorsEntry + 60, // 15: spdkrpc.ReplicaBackupRestoreRequest.credential:type_name -> spdkrpc.ReplicaBackupRestoreRequest.CredentialEntry + 61, // 16: spdkrpc.RestoreStatusResponse.status:type_name -> spdkrpc.RestoreStatusResponse.StatusEntry 1, // 17: spdkrpc.Replica.SnapshotsEntry.value:type_name -> spdkrpc.Lvol 2, // 18: spdkrpc.ReplicaListResponse.ReplicasEntry.value:type_name -> spdkrpc.Replica 0, // 19: spdkrpc.Engine.ReplicaModeMapEntry.value:type_name -> spdkrpc.ReplicaMode @@ -3848,8 +4068,8 @@ var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_depId 24, // 27: spdkrpc.SPDKService.ReplicaSnapshotCreate:input_type -> spdkrpc.SnapshotRequest 24, // 28: spdkrpc.SPDKService.ReplicaSnapshotDelete:input_type -> spdkrpc.SnapshotRequest 24, // 29: spdkrpc.SPDKService.ReplicaSnapshotRevert:input_type -> spdkrpc.SnapshotRequest - 58, // 30: spdkrpc.SPDKService.ReplicaList:input_type -> google.protobuf.Empty - 58, // 31: spdkrpc.SPDKService.ReplicaWatch:input_type -> google.protobuf.Empty + 62, // 30: spdkrpc.SPDKService.ReplicaList:input_type -> google.protobuf.Empty + 62, // 31: spdkrpc.SPDKService.ReplicaWatch:input_type -> google.protobuf.Empty 7, // 32: spdkrpc.SPDKService.ReplicaRebuildingSrcStart:input_type -> spdkrpc.ReplicaRebuildingSrcStartRequest 8, // 33: spdkrpc.SPDKService.ReplicaRebuildingSrcFinish:input_type -> spdkrpc.ReplicaRebuildingSrcFinishRequest 9, // 34: spdkrpc.SPDKService.ReplicaRebuildingSrcAttach:input_type -> spdkrpc.ReplicaRebuildingSrcAttachRequest @@ -3869,8 +4089,8 @@ var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_depId 24, // 48: spdkrpc.SPDKService.EngineSnapshotCreate:input_type -> spdkrpc.SnapshotRequest 24, // 49: spdkrpc.SPDKService.EngineSnapshotDelete:input_type -> spdkrpc.SnapshotRequest 24, // 50: spdkrpc.SPDKService.EngineSnapshotRevert:input_type -> spdkrpc.SnapshotRequest - 58, // 51: spdkrpc.SPDKService.EngineList:input_type -> google.protobuf.Empty - 58, // 52: spdkrpc.SPDKService.EngineWatch:input_type -> google.protobuf.Empty + 62, // 51: spdkrpc.SPDKService.EngineList:input_type -> google.protobuf.Empty + 62, // 52: spdkrpc.SPDKService.EngineWatch:input_type -> google.protobuf.Empty 21, // 53: spdkrpc.SPDKService.EngineReplicaList:input_type -> spdkrpc.EngineReplicaListRequest 20, // 54: spdkrpc.SPDKService.EngineReplicaAdd:input_type -> spdkrpc.EngineReplicaAddRequest 23, // 55: spdkrpc.SPDKService.EngineReplicaDelete:input_type -> spdkrpc.EngineReplicaDeleteRequest @@ -3882,50 +4102,58 @@ var file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_depId 41, // 61: spdkrpc.SPDKService.DiskCreate:input_type -> spdkrpc.DiskCreateRequest 43, // 62: spdkrpc.SPDKService.DiskDelete:input_type -> spdkrpc.DiskDeleteRequest 42, // 63: spdkrpc.SPDKService.DiskGet:input_type -> spdkrpc.DiskGetRequest - 58, // 64: spdkrpc.SPDKService.VersionDetailGet:input_type -> google.protobuf.Empty - 2, // 65: spdkrpc.SPDKService.ReplicaCreate:output_type -> spdkrpc.Replica - 58, // 66: spdkrpc.SPDKService.ReplicaDelete:output_type -> google.protobuf.Empty - 2, // 67: spdkrpc.SPDKService.ReplicaGet:output_type -> spdkrpc.Replica - 2, // 68: spdkrpc.SPDKService.ReplicaSnapshotCreate:output_type -> spdkrpc.Replica - 58, // 69: spdkrpc.SPDKService.ReplicaSnapshotDelete:output_type -> google.protobuf.Empty - 58, // 70: spdkrpc.SPDKService.ReplicaSnapshotRevert:output_type -> google.protobuf.Empty - 6, // 71: spdkrpc.SPDKService.ReplicaList:output_type -> spdkrpc.ReplicaListResponse - 58, // 72: spdkrpc.SPDKService.ReplicaWatch:output_type -> google.protobuf.Empty - 58, // 73: spdkrpc.SPDKService.ReplicaRebuildingSrcStart:output_type -> google.protobuf.Empty - 58, // 74: spdkrpc.SPDKService.ReplicaRebuildingSrcFinish:output_type -> google.protobuf.Empty - 58, // 75: spdkrpc.SPDKService.ReplicaRebuildingSrcAttach:output_type -> google.protobuf.Empty - 58, // 76: spdkrpc.SPDKService.ReplicaRebuildingSrcDetach:output_type -> google.protobuf.Empty - 58, // 77: spdkrpc.SPDKService.ReplicaSnapshotShallowCopy:output_type -> google.protobuf.Empty - 13, // 78: spdkrpc.SPDKService.ReplicaRebuildingDstStart:output_type -> spdkrpc.ReplicaRebuildingDstStartResponse - 58, // 79: spdkrpc.SPDKService.ReplicaRebuildingDstFinish:output_type -> google.protobuf.Empty - 58, // 80: spdkrpc.SPDKService.ReplicaRebuildingDstSnapshotCreate:output_type -> google.protobuf.Empty - 58, // 81: spdkrpc.SPDKService.ReplicaRebuildingDstSnapshotRevert:output_type -> google.protobuf.Empty - 29, // 82: spdkrpc.SPDKService.ReplicaBackupCreate:output_type -> spdkrpc.BackupCreateResponse - 31, // 83: spdkrpc.SPDKService.ReplicaBackupStatus:output_type -> spdkrpc.BackupStatusResponse - 58, // 84: spdkrpc.SPDKService.ReplicaBackupRestore:output_type -> google.protobuf.Empty - 38, // 85: spdkrpc.SPDKService.ReplicaRestoreStatus:output_type -> spdkrpc.ReplicaRestoreStatusResponse - 15, // 86: spdkrpc.SPDKService.EngineCreate:output_type -> spdkrpc.Engine - 58, // 87: spdkrpc.SPDKService.EngineDelete:output_type -> google.protobuf.Empty - 15, // 88: spdkrpc.SPDKService.EngineGet:output_type -> spdkrpc.Engine - 25, // 89: spdkrpc.SPDKService.EngineSnapshotCreate:output_type -> spdkrpc.SnapshotResponse - 58, // 90: spdkrpc.SPDKService.EngineSnapshotDelete:output_type -> google.protobuf.Empty - 58, // 91: spdkrpc.SPDKService.EngineSnapshotRevert:output_type -> google.protobuf.Empty - 19, // 92: spdkrpc.SPDKService.EngineList:output_type -> spdkrpc.EngineListResponse - 58, // 93: spdkrpc.SPDKService.EngineWatch:output_type -> google.protobuf.Empty - 22, // 94: spdkrpc.SPDKService.EngineReplicaList:output_type -> spdkrpc.EngineReplicaListResponse - 58, // 95: spdkrpc.SPDKService.EngineReplicaAdd:output_type -> google.protobuf.Empty - 58, // 96: spdkrpc.SPDKService.EngineReplicaDelete:output_type -> google.protobuf.Empty - 29, // 97: spdkrpc.SPDKService.EngineBackupCreate:output_type -> spdkrpc.BackupCreateResponse - 31, // 98: spdkrpc.SPDKService.EngineBackupStatus:output_type -> spdkrpc.BackupStatusResponse - 33, // 99: spdkrpc.SPDKService.EngineBackupRestore:output_type -> spdkrpc.EngineBackupRestoreResponse - 58, // 100: spdkrpc.SPDKService.EngineBackupRestoreFinish:output_type -> google.protobuf.Empty - 39, // 101: spdkrpc.SPDKService.EngineRestoreStatus:output_type -> spdkrpc.RestoreStatusResponse - 40, // 102: spdkrpc.SPDKService.DiskCreate:output_type -> spdkrpc.Disk - 58, // 103: spdkrpc.SPDKService.DiskDelete:output_type -> google.protobuf.Empty - 40, // 104: spdkrpc.SPDKService.DiskGet:output_type -> spdkrpc.Disk - 27, // 105: spdkrpc.SPDKService.VersionDetailGet:output_type -> spdkrpc.VersionDetailGetReply - 65, // [65:106] is the sub-list for method output_type - 24, // [24:65] is the sub-list for method input_type + 44, // 64: spdkrpc.SPDKService.LogSetLevel:input_type -> spdkrpc.LogSetLevelRequest + 45, // 65: spdkrpc.SPDKService.LogSetFlags:input_type -> spdkrpc.LogSetFlagsRequest + 62, // 66: spdkrpc.SPDKService.LogGetLevel:input_type -> google.protobuf.Empty + 62, // 67: spdkrpc.SPDKService.LogGetFlags:input_type -> google.protobuf.Empty + 62, // 68: spdkrpc.SPDKService.VersionDetailGet:input_type -> google.protobuf.Empty + 2, // 69: spdkrpc.SPDKService.ReplicaCreate:output_type -> spdkrpc.Replica + 62, // 70: spdkrpc.SPDKService.ReplicaDelete:output_type -> google.protobuf.Empty + 2, // 71: spdkrpc.SPDKService.ReplicaGet:output_type -> spdkrpc.Replica + 2, // 72: spdkrpc.SPDKService.ReplicaSnapshotCreate:output_type -> spdkrpc.Replica + 62, // 73: spdkrpc.SPDKService.ReplicaSnapshotDelete:output_type -> google.protobuf.Empty + 62, // 74: spdkrpc.SPDKService.ReplicaSnapshotRevert:output_type -> google.protobuf.Empty + 6, // 75: spdkrpc.SPDKService.ReplicaList:output_type -> spdkrpc.ReplicaListResponse + 62, // 76: spdkrpc.SPDKService.ReplicaWatch:output_type -> google.protobuf.Empty + 62, // 77: spdkrpc.SPDKService.ReplicaRebuildingSrcStart:output_type -> google.protobuf.Empty + 62, // 78: spdkrpc.SPDKService.ReplicaRebuildingSrcFinish:output_type -> google.protobuf.Empty + 62, // 79: spdkrpc.SPDKService.ReplicaRebuildingSrcAttach:output_type -> google.protobuf.Empty + 62, // 80: spdkrpc.SPDKService.ReplicaRebuildingSrcDetach:output_type -> google.protobuf.Empty + 62, // 81: spdkrpc.SPDKService.ReplicaSnapshotShallowCopy:output_type -> google.protobuf.Empty + 13, // 82: spdkrpc.SPDKService.ReplicaRebuildingDstStart:output_type -> spdkrpc.ReplicaRebuildingDstStartResponse + 62, // 83: spdkrpc.SPDKService.ReplicaRebuildingDstFinish:output_type -> google.protobuf.Empty + 62, // 84: spdkrpc.SPDKService.ReplicaRebuildingDstSnapshotCreate:output_type -> google.protobuf.Empty + 62, // 85: spdkrpc.SPDKService.ReplicaRebuildingDstSnapshotRevert:output_type -> google.protobuf.Empty + 29, // 86: spdkrpc.SPDKService.ReplicaBackupCreate:output_type -> spdkrpc.BackupCreateResponse + 31, // 87: spdkrpc.SPDKService.ReplicaBackupStatus:output_type -> spdkrpc.BackupStatusResponse + 62, // 88: spdkrpc.SPDKService.ReplicaBackupRestore:output_type -> google.protobuf.Empty + 38, // 89: spdkrpc.SPDKService.ReplicaRestoreStatus:output_type -> spdkrpc.ReplicaRestoreStatusResponse + 15, // 90: spdkrpc.SPDKService.EngineCreate:output_type -> spdkrpc.Engine + 62, // 91: spdkrpc.SPDKService.EngineDelete:output_type -> google.protobuf.Empty + 15, // 92: spdkrpc.SPDKService.EngineGet:output_type -> spdkrpc.Engine + 25, // 93: spdkrpc.SPDKService.EngineSnapshotCreate:output_type -> spdkrpc.SnapshotResponse + 62, // 94: spdkrpc.SPDKService.EngineSnapshotDelete:output_type -> google.protobuf.Empty + 62, // 95: spdkrpc.SPDKService.EngineSnapshotRevert:output_type -> google.protobuf.Empty + 19, // 96: spdkrpc.SPDKService.EngineList:output_type -> spdkrpc.EngineListResponse + 62, // 97: spdkrpc.SPDKService.EngineWatch:output_type -> google.protobuf.Empty + 22, // 98: spdkrpc.SPDKService.EngineReplicaList:output_type -> spdkrpc.EngineReplicaListResponse + 62, // 99: spdkrpc.SPDKService.EngineReplicaAdd:output_type -> google.protobuf.Empty + 62, // 100: spdkrpc.SPDKService.EngineReplicaDelete:output_type -> google.protobuf.Empty + 29, // 101: spdkrpc.SPDKService.EngineBackupCreate:output_type -> spdkrpc.BackupCreateResponse + 31, // 102: spdkrpc.SPDKService.EngineBackupStatus:output_type -> spdkrpc.BackupStatusResponse + 33, // 103: spdkrpc.SPDKService.EngineBackupRestore:output_type -> spdkrpc.EngineBackupRestoreResponse + 62, // 104: spdkrpc.SPDKService.EngineBackupRestoreFinish:output_type -> google.protobuf.Empty + 39, // 105: spdkrpc.SPDKService.EngineRestoreStatus:output_type -> spdkrpc.RestoreStatusResponse + 40, // 106: spdkrpc.SPDKService.DiskCreate:output_type -> spdkrpc.Disk + 62, // 107: spdkrpc.SPDKService.DiskDelete:output_type -> google.protobuf.Empty + 40, // 108: spdkrpc.SPDKService.DiskGet:output_type -> spdkrpc.Disk + 62, // 109: spdkrpc.SPDKService.LogSetLevel:output_type -> google.protobuf.Empty + 62, // 110: spdkrpc.SPDKService.LogSetFlags:output_type -> google.protobuf.Empty + 46, // 111: spdkrpc.SPDKService.LogGetLevel:output_type -> spdkrpc.LogGetLevelResponse + 47, // 112: spdkrpc.SPDKService.LogGetFlags:output_type -> spdkrpc.LogGetFlagsResponse + 27, // 113: spdkrpc.SPDKService.VersionDetailGet:output_type -> spdkrpc.VersionDetailGetReply + 69, // [69:114] is the sub-list for method output_type + 24, // [24:69] 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 @@ -4453,6 +4681,54 @@ func file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_init return nil } } + file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogSetLevelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogSetFlagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogGetLevelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogGetFlagsResponse); 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{ @@ -4460,7 +4736,7 @@ func file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_init GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_github_com_longhorn_longhorn_spdk_engine_proto_spdkrpc_spdk_proto_rawDesc, NumEnums: 1, - NumMessages: 57, + NumMessages: 61, NumExtensions: 0, NumServices: 1, }, @@ -4527,6 +4803,10 @@ type SPDKServiceClient interface { DiskCreate(ctx context.Context, in *DiskCreateRequest, opts ...grpc.CallOption) (*Disk, error) DiskDelete(ctx context.Context, in *DiskDeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) DiskGet(ctx context.Context, in *DiskGetRequest, opts ...grpc.CallOption) (*Disk, error) + LogSetLevel(ctx context.Context, in *LogSetLevelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + LogSetFlags(ctx context.Context, in *LogSetFlagsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + LogGetLevel(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogGetLevelResponse, error) + LogGetFlags(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogGetFlagsResponse, error) VersionDetailGet(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*VersionDetailGetReply, error) } @@ -4944,6 +5224,42 @@ func (c *sPDKServiceClient) DiskGet(ctx context.Context, in *DiskGetRequest, opt return out, nil } +func (c *sPDKServiceClient) LogSetLevel(ctx context.Context, in *LogSetLevelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/spdkrpc.SPDKService/LogSetLevel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sPDKServiceClient) LogSetFlags(ctx context.Context, in *LogSetFlagsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/spdkrpc.SPDKService/LogSetFlags", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sPDKServiceClient) LogGetLevel(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogGetLevelResponse, error) { + out := new(LogGetLevelResponse) + err := c.cc.Invoke(ctx, "/spdkrpc.SPDKService/LogGetLevel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sPDKServiceClient) LogGetFlags(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogGetFlagsResponse, error) { + out := new(LogGetFlagsResponse) + err := c.cc.Invoke(ctx, "/spdkrpc.SPDKService/LogGetFlags", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *sPDKServiceClient) VersionDetailGet(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*VersionDetailGetReply, error) { out := new(VersionDetailGetReply) err := c.cc.Invoke(ctx, "/spdkrpc.SPDKService/VersionDetailGet", in, out, opts...) @@ -4995,6 +5311,10 @@ type SPDKServiceServer interface { DiskCreate(context.Context, *DiskCreateRequest) (*Disk, error) DiskDelete(context.Context, *DiskDeleteRequest) (*emptypb.Empty, error) DiskGet(context.Context, *DiskGetRequest) (*Disk, error) + LogSetLevel(context.Context, *LogSetLevelRequest) (*emptypb.Empty, error) + LogSetFlags(context.Context, *LogSetFlagsRequest) (*emptypb.Empty, error) + LogGetLevel(context.Context, *emptypb.Empty) (*LogGetLevelResponse, error) + LogGetFlags(context.Context, *emptypb.Empty) (*LogGetFlagsResponse, error) VersionDetailGet(context.Context, *emptypb.Empty) (*VersionDetailGetReply, error) } @@ -5122,6 +5442,18 @@ func (*UnimplementedSPDKServiceServer) DiskDelete(context.Context, *DiskDeleteRe func (*UnimplementedSPDKServiceServer) DiskGet(context.Context, *DiskGetRequest) (*Disk, error) { return nil, status.Errorf(codes.Unimplemented, "method DiskGet not implemented") } +func (*UnimplementedSPDKServiceServer) LogSetLevel(context.Context, *LogSetLevelRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogSetLevel not implemented") +} +func (*UnimplementedSPDKServiceServer) LogSetFlags(context.Context, *LogSetFlagsRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogSetFlags not implemented") +} +func (*UnimplementedSPDKServiceServer) LogGetLevel(context.Context, *emptypb.Empty) (*LogGetLevelResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogGetLevel not implemented") +} +func (*UnimplementedSPDKServiceServer) LogGetFlags(context.Context, *emptypb.Empty) (*LogGetFlagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogGetFlags not implemented") +} func (*UnimplementedSPDKServiceServer) VersionDetailGet(context.Context, *emptypb.Empty) (*VersionDetailGetReply, error) { return nil, status.Errorf(codes.Unimplemented, "method VersionDetailGet not implemented") } @@ -5856,6 +6188,78 @@ func _SPDKService_DiskGet_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _SPDKService_LogSetLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LogSetLevelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SPDKServiceServer).LogSetLevel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/spdkrpc.SPDKService/LogSetLevel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SPDKServiceServer).LogSetLevel(ctx, req.(*LogSetLevelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SPDKService_LogSetFlags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LogSetFlagsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SPDKServiceServer).LogSetFlags(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/spdkrpc.SPDKService/LogSetFlags", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SPDKServiceServer).LogSetFlags(ctx, req.(*LogSetFlagsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SPDKService_LogGetLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SPDKServiceServer).LogGetLevel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/spdkrpc.SPDKService/LogGetLevel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SPDKServiceServer).LogGetLevel(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _SPDKService_LogGetFlags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SPDKServiceServer).LogGetFlags(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/spdkrpc.SPDKService/LogGetFlags", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SPDKServiceServer).LogGetFlags(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + func _SPDKService_VersionDetailGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(emptypb.Empty) if err := dec(in); err != nil { @@ -6030,6 +6434,22 @@ var _SPDKService_serviceDesc = grpc.ServiceDesc{ MethodName: "DiskGet", Handler: _SPDKService_DiskGet_Handler, }, + { + MethodName: "LogSetLevel", + Handler: _SPDKService_LogSetLevel_Handler, + }, + { + MethodName: "LogSetFlags", + Handler: _SPDKService_LogSetFlags_Handler, + }, + { + MethodName: "LogGetLevel", + Handler: _SPDKService_LogGetLevel_Handler, + }, + { + MethodName: "LogGetFlags", + Handler: _SPDKService_LogGetFlags_Handler, + }, { MethodName: "VersionDetailGet", Handler: _SPDKService_VersionDetailGet_Handler, diff --git a/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.proto b/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.proto index ab85af2ca..279f0b1c3 100644 --- a/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.proto +++ b/vendor/github.com/longhorn/longhorn-spdk-engine/proto/spdkrpc/spdk.proto @@ -50,6 +50,11 @@ service SPDKService { rpc DiskDelete(DiskDeleteRequest) returns (google.protobuf.Empty); rpc DiskGet(DiskGetRequest) returns (Disk); + rpc LogSetLevel(LogSetLevelRequest) returns (google.protobuf.Empty); + rpc LogSetFlags(LogSetFlagsRequest) returns (google.protobuf.Empty); + rpc LogGetLevel(google.protobuf.Empty) returns (LogGetLevelResponse); + rpc LogGetFlags(google.protobuf.Empty) returns (LogGetFlagsResponse); + rpc VersionDetailGet(google.protobuf.Empty) returns(VersionDetailGetReply); } @@ -351,3 +356,19 @@ message DiskDeleteRequest { string disk_name = 1; string disk_uuid = 2; } + +message LogSetLevelRequest { + string level = 1; +} + +message LogSetFlagsRequest { + string flags = 1; +} + +message LogGetLevelResponse { + string level = 1; +} + +message LogGetFlagsResponse { + string flags = 1; +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 19d999ba2..9083799f4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -133,7 +133,7 @@ github.com/kr/pretty # github.com/kr/text v0.2.0 ## explicit github.com/kr/text -# github.com/longhorn/backupstore v0.0.0-20240126140439-9c90a8728ca2 +# github.com/longhorn/backupstore v0.0.0-20240219094812-3a87ee02df77 ## explicit; go 1.21 github.com/longhorn/backupstore github.com/longhorn/backupstore/azblob @@ -146,7 +146,7 @@ github.com/longhorn/backupstore/s3 github.com/longhorn/backupstore/types github.com/longhorn/backupstore/util github.com/longhorn/backupstore/vfs -# github.com/longhorn/go-common-libs v0.0.0-20240109042507-23627e6416b7 +# github.com/longhorn/go-common-libs v0.0.0-20240219094750-e7176c332156 ## explicit; go 1.21 github.com/longhorn/go-common-libs/exec github.com/longhorn/go-common-libs/io @@ -157,7 +157,7 @@ github.com/longhorn/go-common-libs/sync github.com/longhorn/go-common-libs/sys github.com/longhorn/go-common-libs/types github.com/longhorn/go-common-libs/utils -# github.com/longhorn/go-spdk-helper v0.0.0-20240117135122-26f8acb2a13d +# github.com/longhorn/go-spdk-helper v0.0.0-20240222125115-a6f538717427 ## explicit; go 1.21 github.com/longhorn/go-spdk-helper/pkg/jsonrpc github.com/longhorn/go-spdk-helper/pkg/nvme @@ -178,7 +178,7 @@ github.com/longhorn/longhorn-engine/pkg/types github.com/longhorn/longhorn-engine/pkg/util github.com/longhorn/longhorn-engine/pkg/util/disk github.com/longhorn/longhorn-engine/proto/ptypes -# github.com/longhorn/longhorn-spdk-engine v0.0.0-20240123044045-c5f14845bd83 +# github.com/longhorn/longhorn-spdk-engine v0.0.0-20240222133636-8ded920ee144 ## explicit; go 1.21 github.com/longhorn/longhorn-spdk-engine/pkg/api github.com/longhorn/longhorn-spdk-engine/pkg/client From f674ea12af87318963bad9caed5b2e8a84616a35 Mon Sep 17 00:00:00 2001 From: Derek Su Date: Fri, 16 Feb 2024 07:26:41 +0000 Subject: [PATCH 2/7] Dockerfile: build spdk with "--enable-debug" option Longhorn 7939 Signed-off-by: Derek Su --- package/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/Dockerfile b/package/Dockerfile index 7a614a49d..035a28d2a 100644 --- a/package/Dockerfile +++ b/package/Dockerfile @@ -51,11 +51,11 @@ RUN git clone https://github.com/longhorn/spdk.git ${SPDK_DIR} --recursive && \ git submodule update --init && \ ./scripts/pkgdep.sh && \ if [ ${ARCH} = "amd64" ]; then \ - ./configure --target-arch=nehalem --disable-tests --disable-unit-tests --disable-examples && \ + ./configure --target-arch=nehalem --disable-tests --disable-unit-tests --disable-examples --enable-debug && \ make -j$(nproc) && \ make install; \ elif [ ${ARCH} = "arm64" ]; then \ - ./configure --target-arch=native --disable-tests --disable-unit-tests --disable-examples && \ + ./configure --target-arch=native --disable-tests --disable-unit-tests --disable-examples --enable-debug && \ DPDKBUILD_FLAGS="-Dplatform=generic" make -j$(nproc) && \ make install; \ else \ From 08e60f3d1c9cad70ec2afebdebe005c0d98f6b2b Mon Sep 17 00:00:00 2001 From: Derek Su Date: Sat, 17 Feb 2024 01:01:46 +0000 Subject: [PATCH 3/7] Dockerfile: update go-spdk-helper Longhorn 7939 Signed-off-by: Derek Su --- package/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/Dockerfile b/package/Dockerfile index 035a28d2a..9a81e2af9 100644 --- a/package/Dockerfile +++ b/package/Dockerfile @@ -18,8 +18,10 @@ RUN wget -O - https://storage.googleapis.com/golang/go1.21.3.linux-${!GOLANG_ARC go install golang.org/x/lint/golint@latest ENV GO_SPDK_HELPER_DIR /usr/src/go-spdk-helper +ENV GO_SPDK_HELPER_COMMIT_ID 5fe20e7f754283634c71d422778773be2d13439c RUN git clone https://github.com/longhorn/go-spdk-helper.git ${GO_SPDK_HELPER_DIR} && \ cd ${GO_SPDK_HELPER_DIR} && \ + git checkout ${GO_SPDK_HELPER_COMMIT_ID} && \ go build && \ install -m 755 go-spdk-helper /usr/local/bin/go-spdk-helper && \ rm -rf ${GO_SPDK_HELPER_DIR} From 6b6c38790bf847d39b44008623fea99ef4764019 Mon Sep 17 00:00:00 2001 From: Derek Su Date: Sat, 17 Feb 2024 15:48:56 +0000 Subject: [PATCH 4/7] proto: add log get and set methods Longhorn 7939 Signed-off-by: Derek Su --- .../pkg/imrpc/instance_pb2.py | 18 +- .../pkg/imrpc/instance_pb2_grpc.py | 132 ++++ pkg/imrpc/common.proto | 2 +- pkg/imrpc/instance.pb.go | 744 ++++++++++++++++-- pkg/imrpc/instance.proto | 31 + 5 files changed, 839 insertions(+), 88 deletions(-) diff --git a/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2.py b/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2.py index 7cd4421e3..bebc536e8 100644 --- a/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2.py +++ b/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2.py @@ -16,7 +16,7 @@ from github.com.longhorn.longhorn_instance_manager.pkg.imrpc import imrpc_pb2 as github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_imrpc__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nFgithub.com/longhorn/longhorn-instance-manager/pkg/imrpc/instance.proto\x12\x05imrpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x44github.com/longhorn/longhorn-instance-manager/pkg/imrpc/common.proto\x1a\x43github.com/longhorn/longhorn-instance-manager/pkg/imrpc/imrpc.proto\"3\n\x13ProcessInstanceSpec\x12\x0e\n\x06\x62inary\x18\x01 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x02 \x03(\t\"\xf8\x01\n\x10SpdkInstanceSpec\x12K\n\x13replica_address_map\x18\x01 \x03(\x0b\x32..imrpc.SpdkInstanceSpec.ReplicaAddressMapEntry\x12\x11\n\tdisk_name\x18\x02 \x01(\t\x12\x11\n\tdisk_uuid\x18\x03 \x01(\t\x12\x0c\n\x04size\x18\x04 \x01(\x04\x12\x17\n\x0f\x65xpose_required\x18\x05 \x01(\x08\x12\x10\n\x08\x66rontend\x18\x06 \x01(\t\x1a\x38\n\x16ReplicaAddressMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbb\x02\n\x0cInstanceSpec\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x13\n\x0bvolume_name\x18\x04 \x01(\t\x12\x12\n\nport_count\x18\x05 \x01(\x05\x12\x11\n\tport_args\x18\x06 \x03(\t\x12\x39\n\x15process_instance_spec\x18\x07 \x01(\x0b\x32\x1a.imrpc.ProcessInstanceSpec\x12\x33\n\x12spdk_instance_spec\x18\x08 \x01(\x0b\x32\x17.imrpc.SpdkInstanceSpec\x12&\n\x0b\x64\x61ta_engine\x18\t \x01(\x0e\x32\x11.imrpc.DataEngine\"\xc6\x01\n\x0eInstanceStatus\x12\r\n\x05state\x18\x01 \x01(\t\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12\x12\n\nport_start\x18\x03 \x01(\x05\x12\x10\n\x08port_end\x18\x04 \x01(\x05\x12\x39\n\nconditions\x18\x05 \x03(\x0b\x32%.imrpc.InstanceStatus.ConditionsEntry\x1a\x31\n\x0f\x43onditionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\":\n\x15InstanceCreateRequest\x12!\n\x04spec\x18\x01 \x01(\x0b\x32\x13.imrpc.InstanceSpec\"\xc5\x01\n\x15InstanceDeleteRequest\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x11\n\tdisk_uuid\x18\x04 \x01(\t\x12\x18\n\x10\x63leanup_required\x18\x05 \x01(\x08\x12&\n\x0b\x64\x61ta_engine\x18\x06 \x01(\x0e\x32\x11.imrpc.DataEngine\"\x95\x01\n\x12InstanceGetRequest\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12&\n\x0b\x64\x61ta_engine\x18\x04 \x01(\x0e\x32\x11.imrpc.DataEngine\"m\n\x10InstanceResponse\x12!\n\x04spec\x18\x01 \x01(\x0b\x32\x13.imrpc.InstanceSpec\x12%\n\x06status\x18\x02 \x01(\x0b\x32\x15.imrpc.InstanceStatus\x12\x0f\n\x07\x64\x65leted\x18\x03 \x01(\x08\"\xa0\x01\n\x14InstanceListResponse\x12=\n\tinstances\x18\x01 \x03(\x0b\x32*.imrpc.InstanceListResponse.InstancesEntry\x1aI\n\x0eInstancesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.imrpc.InstanceResponse:\x02\x38\x01\"\x95\x01\n\x12InstanceLogRequest\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12&\n\x0b\x64\x61ta_engine\x18\x04 \x01(\x0e\x32\x11.imrpc.DataEngine\"U\n\x16InstanceReplaceRequest\x12!\n\x04spec\x18\x01 \x01(\x0b\x32\x13.imrpc.InstanceSpec\x12\x18\n\x10terminate_signal\x18\x02 \x01(\t2\xb9\x04\n\x0fInstanceService\x12I\n\x0eInstanceCreate\x12\x1c.imrpc.InstanceCreateRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12I\n\x0eInstanceDelete\x12\x1c.imrpc.InstanceDeleteRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12\x43\n\x0bInstanceGet\x12\x19.imrpc.InstanceGetRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12\x45\n\x0cInstanceList\x12\x16.google.protobuf.Empty\x1a\x1b.imrpc.InstanceListResponse\"\x00\x12:\n\x0bInstanceLog\x12\x19.imrpc.InstanceLogRequest\x1a\x0c.LogResponse\"\x00\x30\x01\x12\x43\n\rInstanceWatch\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x30\x01\x12K\n\x0fInstanceReplace\x12\x1d.imrpc.InstanceReplaceRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12\x36\n\nVersionGet\x12\x16.google.protobuf.Empty\x1a\x10.VersionResponseB9Z7github.com/longhorn/longhorn-instance-manager/pkg/imrpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nFgithub.com/longhorn/longhorn-instance-manager/pkg/imrpc/instance.proto\x12\x05imrpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x44github.com/longhorn/longhorn-instance-manager/pkg/imrpc/common.proto\x1a\x43github.com/longhorn/longhorn-instance-manager/pkg/imrpc/imrpc.proto\"3\n\x13ProcessInstanceSpec\x12\x0e\n\x06\x62inary\x18\x01 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x02 \x03(\t\"\xf8\x01\n\x10SpdkInstanceSpec\x12K\n\x13replica_address_map\x18\x01 \x03(\x0b\x32..imrpc.SpdkInstanceSpec.ReplicaAddressMapEntry\x12\x11\n\tdisk_name\x18\x02 \x01(\t\x12\x11\n\tdisk_uuid\x18\x03 \x01(\t\x12\x0c\n\x04size\x18\x04 \x01(\x04\x12\x17\n\x0f\x65xpose_required\x18\x05 \x01(\x08\x12\x10\n\x08\x66rontend\x18\x06 \x01(\t\x1a\x38\n\x16ReplicaAddressMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbb\x02\n\x0cInstanceSpec\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x13\n\x0bvolume_name\x18\x04 \x01(\t\x12\x12\n\nport_count\x18\x05 \x01(\x05\x12\x11\n\tport_args\x18\x06 \x03(\t\x12\x39\n\x15process_instance_spec\x18\x07 \x01(\x0b\x32\x1a.imrpc.ProcessInstanceSpec\x12\x33\n\x12spdk_instance_spec\x18\x08 \x01(\x0b\x32\x17.imrpc.SpdkInstanceSpec\x12&\n\x0b\x64\x61ta_engine\x18\t \x01(\x0e\x32\x11.imrpc.DataEngine\"\xc6\x01\n\x0eInstanceStatus\x12\r\n\x05state\x18\x01 \x01(\t\x12\x11\n\terror_msg\x18\x02 \x01(\t\x12\x12\n\nport_start\x18\x03 \x01(\x05\x12\x10\n\x08port_end\x18\x04 \x01(\x05\x12\x39\n\nconditions\x18\x05 \x03(\x0b\x32%.imrpc.InstanceStatus.ConditionsEntry\x1a\x31\n\x0f\x43onditionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\":\n\x15InstanceCreateRequest\x12!\n\x04spec\x18\x01 \x01(\x0b\x32\x13.imrpc.InstanceSpec\"\xc5\x01\n\x15InstanceDeleteRequest\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x11\n\tdisk_uuid\x18\x04 \x01(\t\x12\x18\n\x10\x63leanup_required\x18\x05 \x01(\x08\x12&\n\x0b\x64\x61ta_engine\x18\x06 \x01(\x0e\x32\x11.imrpc.DataEngine\"\x95\x01\n\x12InstanceGetRequest\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12&\n\x0b\x64\x61ta_engine\x18\x04 \x01(\x0e\x32\x11.imrpc.DataEngine\"m\n\x10InstanceResponse\x12!\n\x04spec\x18\x01 \x01(\x0b\x32\x13.imrpc.InstanceSpec\x12%\n\x06status\x18\x02 \x01(\x0b\x32\x15.imrpc.InstanceStatus\x12\x0f\n\x07\x64\x65leted\x18\x03 \x01(\x08\"\xa0\x01\n\x14InstanceListResponse\x12=\n\tinstances\x18\x01 \x03(\x0b\x32*.imrpc.InstanceListResponse.InstancesEntry\x1aI\n\x0eInstancesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.imrpc.InstanceResponse:\x02\x38\x01\"\x95\x01\n\x12InstanceLogRequest\x12;\n\x14\x62\x61\x63kend_store_driver\x18\x01 \x01(\x0e\x32\x19.imrpc.BackendStoreDriverB\x02\x18\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12&\n\x0b\x64\x61ta_engine\x18\x04 \x01(\x0e\x32\x11.imrpc.DataEngine\"U\n\x16InstanceReplaceRequest\x12!\n\x04spec\x18\x01 \x01(\x0b\x32\x13.imrpc.InstanceSpec\x12\x18\n\x10terminate_signal\x18\x02 \x01(\t\"K\n\x12LogSetLevelRequest\x12&\n\x0b\x64\x61ta_engine\x18\x01 \x01(\x0e\x32\x11.imrpc.DataEngine\x12\r\n\x05level\x18\x02 \x01(\t\"K\n\x12LogSetFlagsRequest\x12&\n\x0b\x64\x61ta_engine\x18\x01 \x01(\x0e\x32\x11.imrpc.DataEngine\x12\r\n\x05\x66lags\x18\x02 \x01(\t\"<\n\x12LogGetLevelRequest\x12&\n\x0b\x64\x61ta_engine\x18\x01 \x01(\x0e\x32\x11.imrpc.DataEngine\"$\n\x13LogGetLevelResponse\x12\r\n\x05level\x18\x01 \x01(\t\"<\n\x12LogGetFlagsRequest\x12&\n\x0b\x64\x61ta_engine\x18\x01 \x01(\x0e\x32\x11.imrpc.DataEngine\"$\n\x13LogGetFlagsResponse\x12\r\n\x05\x66lags\x18\x01 \x01(\t2\xc9\x06\n\x0fInstanceService\x12I\n\x0eInstanceCreate\x12\x1c.imrpc.InstanceCreateRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12I\n\x0eInstanceDelete\x12\x1c.imrpc.InstanceDeleteRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12\x43\n\x0bInstanceGet\x12\x19.imrpc.InstanceGetRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12\x45\n\x0cInstanceList\x12\x16.google.protobuf.Empty\x1a\x1b.imrpc.InstanceListResponse\"\x00\x12:\n\x0bInstanceLog\x12\x19.imrpc.InstanceLogRequest\x1a\x0c.LogResponse\"\x00\x30\x01\x12\x43\n\rInstanceWatch\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x30\x01\x12K\n\x0fInstanceReplace\x12\x1d.imrpc.InstanceReplaceRequest\x1a\x17.imrpc.InstanceResponse\"\x00\x12@\n\x0bLogSetLevel\x12\x19.imrpc.LogSetLevelRequest\x1a\x16.google.protobuf.Empty\x12@\n\x0bLogSetFlags\x12\x19.imrpc.LogSetFlagsRequest\x1a\x16.google.protobuf.Empty\x12\x44\n\x0bLogGetLevel\x12\x19.imrpc.LogGetLevelRequest\x1a\x1a.imrpc.LogGetLevelResponse\x12\x44\n\x0bLogGetFlags\x12\x19.imrpc.LogGetFlagsRequest\x1a\x1a.imrpc.LogGetFlagsResponse\x12\x36\n\nVersionGet\x12\x16.google.protobuf.Empty\x1a\x10.VersionResponseB9Z7github.com/longhorn/longhorn-instance-manager/pkg/imrpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -67,6 +67,18 @@ _globals['_INSTANCELOGREQUEST']._serialized_end=1908 _globals['_INSTANCEREPLACEREQUEST']._serialized_start=1910 _globals['_INSTANCEREPLACEREQUEST']._serialized_end=1995 - _globals['_INSTANCESERVICE']._serialized_start=1998 - _globals['_INSTANCESERVICE']._serialized_end=2567 + _globals['_LOGSETLEVELREQUEST']._serialized_start=1997 + _globals['_LOGSETLEVELREQUEST']._serialized_end=2072 + _globals['_LOGSETFLAGSREQUEST']._serialized_start=2074 + _globals['_LOGSETFLAGSREQUEST']._serialized_end=2149 + _globals['_LOGGETLEVELREQUEST']._serialized_start=2151 + _globals['_LOGGETLEVELREQUEST']._serialized_end=2211 + _globals['_LOGGETLEVELRESPONSE']._serialized_start=2213 + _globals['_LOGGETLEVELRESPONSE']._serialized_end=2249 + _globals['_LOGGETFLAGSREQUEST']._serialized_start=2251 + _globals['_LOGGETFLAGSREQUEST']._serialized_end=2311 + _globals['_LOGGETFLAGSRESPONSE']._serialized_start=2313 + _globals['_LOGGETFLAGSRESPONSE']._serialized_end=2349 + _globals['_INSTANCESERVICE']._serialized_start=2352 + _globals['_INSTANCESERVICE']._serialized_end=3193 # @@protoc_insertion_point(module_scope) diff --git a/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2_grpc.py b/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2_grpc.py index 3254d57eb..1600a701a 100644 --- a/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2_grpc.py +++ b/integration/rpc/instance/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/instance_pb2_grpc.py @@ -51,6 +51,26 @@ def __init__(self, channel): request_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.InstanceReplaceRequest.SerializeToString, response_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.InstanceResponse.FromString, ) + self.LogSetLevel = channel.unary_unary( + '/imrpc.InstanceService/LogSetLevel', + request_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogSetLevelRequest.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.LogSetFlags = channel.unary_unary( + '/imrpc.InstanceService/LogSetFlags', + request_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogSetFlagsRequest.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.LogGetLevel = channel.unary_unary( + '/imrpc.InstanceService/LogGetLevel', + request_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetLevelRequest.SerializeToString, + response_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetLevelResponse.FromString, + ) + self.LogGetFlags = channel.unary_unary( + '/imrpc.InstanceService/LogGetFlags', + request_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetFlagsRequest.SerializeToString, + response_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetFlagsResponse.FromString, + ) self.VersionGet = channel.unary_unary( '/imrpc.InstanceService/VersionGet', request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, @@ -103,6 +123,30 @@ def InstanceReplace(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def LogSetLevel(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def LogSetFlags(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def LogGetLevel(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def LogGetFlags(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def VersionGet(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -147,6 +191,26 @@ def add_InstanceServiceServicer_to_server(servicer, server): request_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.InstanceReplaceRequest.FromString, response_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.InstanceResponse.SerializeToString, ), + 'LogSetLevel': grpc.unary_unary_rpc_method_handler( + servicer.LogSetLevel, + request_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogSetLevelRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'LogSetFlags': grpc.unary_unary_rpc_method_handler( + servicer.LogSetFlags, + request_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogSetFlagsRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'LogGetLevel': grpc.unary_unary_rpc_method_handler( + servicer.LogGetLevel, + request_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetLevelRequest.FromString, + response_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetLevelResponse.SerializeToString, + ), + 'LogGetFlags': grpc.unary_unary_rpc_method_handler( + servicer.LogGetFlags, + request_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetFlagsRequest.FromString, + response_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetFlagsResponse.SerializeToString, + ), 'VersionGet': grpc.unary_unary_rpc_method_handler( servicer.VersionGet, request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, @@ -281,6 +345,74 @@ def InstanceReplace(request, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod + def LogSetLevel(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/imrpc.InstanceService/LogSetLevel', + github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogSetLevelRequest.SerializeToString, + google_dot_protobuf_dot_empty__pb2.Empty.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def LogSetFlags(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/imrpc.InstanceService/LogSetFlags', + github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogSetFlagsRequest.SerializeToString, + google_dot_protobuf_dot_empty__pb2.Empty.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def LogGetLevel(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/imrpc.InstanceService/LogGetLevel', + github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetLevelRequest.SerializeToString, + github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetLevelResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def LogGetFlags(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/imrpc.InstanceService/LogGetFlags', + github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetFlagsRequest.SerializeToString, + github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_instance__pb2.LogGetFlagsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod def VersionGet(request, target, diff --git a/pkg/imrpc/common.proto b/pkg/imrpc/common.proto index ccdba6af5..cde1b57ff 100644 --- a/pkg/imrpc/common.proto +++ b/pkg/imrpc/common.proto @@ -13,4 +13,4 @@ enum BackendStoreDriver { enum DataEngine { DATA_ENGINE_V1 = 0; DATA_ENGINE_V2 = 1; -} \ No newline at end of file +} diff --git a/pkg/imrpc/instance.pb.go b/pkg/imrpc/instance.pb.go index 8ee70fe26..3ca36f8ac 100644 --- a/pkg/imrpc/instance.pb.go +++ b/pkg/imrpc/instance.pb.go @@ -814,6 +814,304 @@ func (x *InstanceReplaceRequest) GetTerminateSignal() string { return "" } +type LogSetLevelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataEngine DataEngine `protobuf:"varint,1,opt,name=data_engine,json=dataEngine,proto3,enum=imrpc.DataEngine" json:"data_engine,omitempty"` + Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"` +} + +func (x *LogSetLevelRequest) Reset() { + *x = LogSetLevelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogSetLevelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogSetLevelRequest) ProtoMessage() {} + +func (x *LogSetLevelRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_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 LogSetLevelRequest.ProtoReflect.Descriptor instead. +func (*LogSetLevelRequest) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDescGZIP(), []int{11} +} + +func (x *LogSetLevelRequest) GetDataEngine() DataEngine { + if x != nil { + return x.DataEngine + } + return DataEngine_DATA_ENGINE_V1 +} + +func (x *LogSetLevelRequest) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +type LogSetFlagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataEngine DataEngine `protobuf:"varint,1,opt,name=data_engine,json=dataEngine,proto3,enum=imrpc.DataEngine" json:"data_engine,omitempty"` + Flags string `protobuf:"bytes,2,opt,name=flags,proto3" json:"flags,omitempty"` +} + +func (x *LogSetFlagsRequest) Reset() { + *x = LogSetFlagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogSetFlagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogSetFlagsRequest) ProtoMessage() {} + +func (x *LogSetFlagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_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 LogSetFlagsRequest.ProtoReflect.Descriptor instead. +func (*LogSetFlagsRequest) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDescGZIP(), []int{12} +} + +func (x *LogSetFlagsRequest) GetDataEngine() DataEngine { + if x != nil { + return x.DataEngine + } + return DataEngine_DATA_ENGINE_V1 +} + +func (x *LogSetFlagsRequest) GetFlags() string { + if x != nil { + return x.Flags + } + return "" +} + +type LogGetLevelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataEngine DataEngine `protobuf:"varint,1,opt,name=data_engine,json=dataEngine,proto3,enum=imrpc.DataEngine" json:"data_engine,omitempty"` +} + +func (x *LogGetLevelRequest) Reset() { + *x = LogGetLevelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogGetLevelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogGetLevelRequest) ProtoMessage() {} + +func (x *LogGetLevelRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_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 LogGetLevelRequest.ProtoReflect.Descriptor instead. +func (*LogGetLevelRequest) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDescGZIP(), []int{13} +} + +func (x *LogGetLevelRequest) GetDataEngine() DataEngine { + if x != nil { + return x.DataEngine + } + return DataEngine_DATA_ENGINE_V1 +} + +type LogGetLevelResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level,omitempty"` +} + +func (x *LogGetLevelResponse) Reset() { + *x = LogGetLevelResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogGetLevelResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogGetLevelResponse) ProtoMessage() {} + +func (x *LogGetLevelResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_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 LogGetLevelResponse.ProtoReflect.Descriptor instead. +func (*LogGetLevelResponse) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDescGZIP(), []int{14} +} + +func (x *LogGetLevelResponse) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +type LogGetFlagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataEngine DataEngine `protobuf:"varint,1,opt,name=data_engine,json=dataEngine,proto3,enum=imrpc.DataEngine" json:"data_engine,omitempty"` +} + +func (x *LogGetFlagsRequest) Reset() { + *x = LogGetFlagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogGetFlagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogGetFlagsRequest) ProtoMessage() {} + +func (x *LogGetFlagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_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 LogGetFlagsRequest.ProtoReflect.Descriptor instead. +func (*LogGetFlagsRequest) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDescGZIP(), []int{15} +} + +func (x *LogGetFlagsRequest) GetDataEngine() DataEngine { + if x != nil { + return x.DataEngine + } + return DataEngine_DATA_ENGINE_V1 +} + +type LogGetFlagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Flags string `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"` +} + +func (x *LogGetFlagsResponse) Reset() { + *x = LogGetFlagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogGetFlagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogGetFlagsResponse) ProtoMessage() {} + +func (x *LogGetFlagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_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 LogGetFlagsResponse.ProtoReflect.Descriptor instead. +func (*LogGetFlagsResponse) Descriptor() ([]byte, []int) { + return file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDescGZIP(), []int{16} +} + +func (x *LogGetFlagsResponse) GetFlags() string { + if x != nil { + return x.Flags + } + return "" +} + var File_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto protoreflect.FileDescriptor var file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDesc = []byte{ @@ -973,47 +1271,91 @@ var file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_ 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, - 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x32, 0xb9, 0x04, 0x0a, 0x0f, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0e, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, - 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, - 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6d, 0x72, 0x70, - 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, - 0x74, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, - 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x1b, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, - 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x19, 0x2e, - 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0d, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 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, 0x00, 0x30, 0x01, 0x12, - 0x4b, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0a, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, - 0x68, 0x6f, 0x72, 0x6e, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2d, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x22, 0x5e, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, + 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, + 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x5e, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, + 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, + 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x48, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x47, + 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, + 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, + 0x48, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, + 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x4c, 0x6f, 0x67, + 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x32, 0xc9, 0x06, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x69, + 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, + 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x43, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x12, + 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, + 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, + 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x19, 0x2e, 0x69, 0x6d, + 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 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, 0x00, 0x30, 0x01, 0x12, 0x4b, 0x0a, + 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x12, 0x1d, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0b, 0x4c, 0x6f, + 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, + 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 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, 0x12, 0x40, 0x0a, 0x0b, + 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x69, 0x6d, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 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, 0x12, 0x44, + 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x2e, + 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, + 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x46, 0x6c, + 0x61, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, + 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, + 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x10, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, + 0x72, 0x6e, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2d, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1028,7 +1370,7 @@ func file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto return file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDescData } -var file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_goTypes = []interface{}{ (*ProcessInstanceSpec)(nil), // 0: imrpc.ProcessInstanceSpec (*SpdkInstanceSpec)(nil), // 1: imrpc.SpdkInstanceSpec @@ -1041,55 +1383,73 @@ var file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_ (*InstanceListResponse)(nil), // 8: imrpc.InstanceListResponse (*InstanceLogRequest)(nil), // 9: imrpc.InstanceLogRequest (*InstanceReplaceRequest)(nil), // 10: imrpc.InstanceReplaceRequest - nil, // 11: imrpc.SpdkInstanceSpec.ReplicaAddressMapEntry - nil, // 12: imrpc.InstanceStatus.ConditionsEntry - nil, // 13: imrpc.InstanceListResponse.InstancesEntry - (BackendStoreDriver)(0), // 14: imrpc.BackendStoreDriver - (DataEngine)(0), // 15: imrpc.DataEngine - (*emptypb.Empty)(nil), // 16: google.protobuf.Empty - (*LogResponse)(nil), // 17: LogResponse - (*VersionResponse)(nil), // 18: VersionResponse + (*LogSetLevelRequest)(nil), // 11: imrpc.LogSetLevelRequest + (*LogSetFlagsRequest)(nil), // 12: imrpc.LogSetFlagsRequest + (*LogGetLevelRequest)(nil), // 13: imrpc.LogGetLevelRequest + (*LogGetLevelResponse)(nil), // 14: imrpc.LogGetLevelResponse + (*LogGetFlagsRequest)(nil), // 15: imrpc.LogGetFlagsRequest + (*LogGetFlagsResponse)(nil), // 16: imrpc.LogGetFlagsResponse + nil, // 17: imrpc.SpdkInstanceSpec.ReplicaAddressMapEntry + nil, // 18: imrpc.InstanceStatus.ConditionsEntry + nil, // 19: imrpc.InstanceListResponse.InstancesEntry + (BackendStoreDriver)(0), // 20: imrpc.BackendStoreDriver + (DataEngine)(0), // 21: imrpc.DataEngine + (*emptypb.Empty)(nil), // 22: google.protobuf.Empty + (*LogResponse)(nil), // 23: LogResponse + (*VersionResponse)(nil), // 24: VersionResponse } var file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_depIdxs = []int32{ - 11, // 0: imrpc.SpdkInstanceSpec.replica_address_map:type_name -> imrpc.SpdkInstanceSpec.ReplicaAddressMapEntry - 14, // 1: imrpc.InstanceSpec.backend_store_driver:type_name -> imrpc.BackendStoreDriver + 17, // 0: imrpc.SpdkInstanceSpec.replica_address_map:type_name -> imrpc.SpdkInstanceSpec.ReplicaAddressMapEntry + 20, // 1: imrpc.InstanceSpec.backend_store_driver:type_name -> imrpc.BackendStoreDriver 0, // 2: imrpc.InstanceSpec.process_instance_spec:type_name -> imrpc.ProcessInstanceSpec 1, // 3: imrpc.InstanceSpec.spdk_instance_spec:type_name -> imrpc.SpdkInstanceSpec - 15, // 4: imrpc.InstanceSpec.data_engine:type_name -> imrpc.DataEngine - 12, // 5: imrpc.InstanceStatus.conditions:type_name -> imrpc.InstanceStatus.ConditionsEntry + 21, // 4: imrpc.InstanceSpec.data_engine:type_name -> imrpc.DataEngine + 18, // 5: imrpc.InstanceStatus.conditions:type_name -> imrpc.InstanceStatus.ConditionsEntry 2, // 6: imrpc.InstanceCreateRequest.spec:type_name -> imrpc.InstanceSpec - 14, // 7: imrpc.InstanceDeleteRequest.backend_store_driver:type_name -> imrpc.BackendStoreDriver - 15, // 8: imrpc.InstanceDeleteRequest.data_engine:type_name -> imrpc.DataEngine - 14, // 9: imrpc.InstanceGetRequest.backend_store_driver:type_name -> imrpc.BackendStoreDriver - 15, // 10: imrpc.InstanceGetRequest.data_engine:type_name -> imrpc.DataEngine + 20, // 7: imrpc.InstanceDeleteRequest.backend_store_driver:type_name -> imrpc.BackendStoreDriver + 21, // 8: imrpc.InstanceDeleteRequest.data_engine:type_name -> imrpc.DataEngine + 20, // 9: imrpc.InstanceGetRequest.backend_store_driver:type_name -> imrpc.BackendStoreDriver + 21, // 10: imrpc.InstanceGetRequest.data_engine:type_name -> imrpc.DataEngine 2, // 11: imrpc.InstanceResponse.spec:type_name -> imrpc.InstanceSpec 3, // 12: imrpc.InstanceResponse.status:type_name -> imrpc.InstanceStatus - 13, // 13: imrpc.InstanceListResponse.instances:type_name -> imrpc.InstanceListResponse.InstancesEntry - 14, // 14: imrpc.InstanceLogRequest.backend_store_driver:type_name -> imrpc.BackendStoreDriver - 15, // 15: imrpc.InstanceLogRequest.data_engine:type_name -> imrpc.DataEngine + 19, // 13: imrpc.InstanceListResponse.instances:type_name -> imrpc.InstanceListResponse.InstancesEntry + 20, // 14: imrpc.InstanceLogRequest.backend_store_driver:type_name -> imrpc.BackendStoreDriver + 21, // 15: imrpc.InstanceLogRequest.data_engine:type_name -> imrpc.DataEngine 2, // 16: imrpc.InstanceReplaceRequest.spec:type_name -> imrpc.InstanceSpec - 7, // 17: imrpc.InstanceListResponse.InstancesEntry.value:type_name -> imrpc.InstanceResponse - 4, // 18: imrpc.InstanceService.InstanceCreate:input_type -> imrpc.InstanceCreateRequest - 5, // 19: imrpc.InstanceService.InstanceDelete:input_type -> imrpc.InstanceDeleteRequest - 6, // 20: imrpc.InstanceService.InstanceGet:input_type -> imrpc.InstanceGetRequest - 16, // 21: imrpc.InstanceService.InstanceList:input_type -> google.protobuf.Empty - 9, // 22: imrpc.InstanceService.InstanceLog:input_type -> imrpc.InstanceLogRequest - 16, // 23: imrpc.InstanceService.InstanceWatch:input_type -> google.protobuf.Empty - 10, // 24: imrpc.InstanceService.InstanceReplace:input_type -> imrpc.InstanceReplaceRequest - 16, // 25: imrpc.InstanceService.VersionGet:input_type -> google.protobuf.Empty - 7, // 26: imrpc.InstanceService.InstanceCreate:output_type -> imrpc.InstanceResponse - 7, // 27: imrpc.InstanceService.InstanceDelete:output_type -> imrpc.InstanceResponse - 7, // 28: imrpc.InstanceService.InstanceGet:output_type -> imrpc.InstanceResponse - 8, // 29: imrpc.InstanceService.InstanceList:output_type -> imrpc.InstanceListResponse - 17, // 30: imrpc.InstanceService.InstanceLog:output_type -> LogResponse - 16, // 31: imrpc.InstanceService.InstanceWatch:output_type -> google.protobuf.Empty - 7, // 32: imrpc.InstanceService.InstanceReplace:output_type -> imrpc.InstanceResponse - 18, // 33: imrpc.InstanceService.VersionGet:output_type -> VersionResponse - 26, // [26:34] is the sub-list for method output_type - 18, // [18:26] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name + 21, // 17: imrpc.LogSetLevelRequest.data_engine:type_name -> imrpc.DataEngine + 21, // 18: imrpc.LogSetFlagsRequest.data_engine:type_name -> imrpc.DataEngine + 21, // 19: imrpc.LogGetLevelRequest.data_engine:type_name -> imrpc.DataEngine + 21, // 20: imrpc.LogGetFlagsRequest.data_engine:type_name -> imrpc.DataEngine + 7, // 21: imrpc.InstanceListResponse.InstancesEntry.value:type_name -> imrpc.InstanceResponse + 4, // 22: imrpc.InstanceService.InstanceCreate:input_type -> imrpc.InstanceCreateRequest + 5, // 23: imrpc.InstanceService.InstanceDelete:input_type -> imrpc.InstanceDeleteRequest + 6, // 24: imrpc.InstanceService.InstanceGet:input_type -> imrpc.InstanceGetRequest + 22, // 25: imrpc.InstanceService.InstanceList:input_type -> google.protobuf.Empty + 9, // 26: imrpc.InstanceService.InstanceLog:input_type -> imrpc.InstanceLogRequest + 22, // 27: imrpc.InstanceService.InstanceWatch:input_type -> google.protobuf.Empty + 10, // 28: imrpc.InstanceService.InstanceReplace:input_type -> imrpc.InstanceReplaceRequest + 11, // 29: imrpc.InstanceService.LogSetLevel:input_type -> imrpc.LogSetLevelRequest + 12, // 30: imrpc.InstanceService.LogSetFlags:input_type -> imrpc.LogSetFlagsRequest + 13, // 31: imrpc.InstanceService.LogGetLevel:input_type -> imrpc.LogGetLevelRequest + 15, // 32: imrpc.InstanceService.LogGetFlags:input_type -> imrpc.LogGetFlagsRequest + 22, // 33: imrpc.InstanceService.VersionGet:input_type -> google.protobuf.Empty + 7, // 34: imrpc.InstanceService.InstanceCreate:output_type -> imrpc.InstanceResponse + 7, // 35: imrpc.InstanceService.InstanceDelete:output_type -> imrpc.InstanceResponse + 7, // 36: imrpc.InstanceService.InstanceGet:output_type -> imrpc.InstanceResponse + 8, // 37: imrpc.InstanceService.InstanceList:output_type -> imrpc.InstanceListResponse + 23, // 38: imrpc.InstanceService.InstanceLog:output_type -> LogResponse + 22, // 39: imrpc.InstanceService.InstanceWatch:output_type -> google.protobuf.Empty + 7, // 40: imrpc.InstanceService.InstanceReplace:output_type -> imrpc.InstanceResponse + 22, // 41: imrpc.InstanceService.LogSetLevel:output_type -> google.protobuf.Empty + 22, // 42: imrpc.InstanceService.LogSetFlags:output_type -> google.protobuf.Empty + 14, // 43: imrpc.InstanceService.LogGetLevel:output_type -> imrpc.LogGetLevelResponse + 16, // 44: imrpc.InstanceService.LogGetFlags:output_type -> imrpc.LogGetFlagsResponse + 24, // 45: imrpc.InstanceService.VersionGet:output_type -> VersionResponse + 34, // [34:46] is the sub-list for method output_type + 22, // [22:34] 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_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_init() } @@ -1232,6 +1592,78 @@ func file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto return nil } } + file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogSetLevelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogSetFlagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogGetLevelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogGetLevelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogGetFlagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogGetFlagsResponse); 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{ @@ -1239,7 +1671,7 @@ func file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_github_com_longhorn_longhorn_instance_manager_pkg_imrpc_instance_proto_rawDesc, NumEnums: 0, - NumMessages: 14, + NumMessages: 20, NumExtensions: 0, NumServices: 1, }, @@ -1272,6 +1704,10 @@ type InstanceServiceClient interface { InstanceLog(ctx context.Context, in *InstanceLogRequest, opts ...grpc.CallOption) (InstanceService_InstanceLogClient, error) InstanceWatch(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (InstanceService_InstanceWatchClient, error) InstanceReplace(ctx context.Context, in *InstanceReplaceRequest, opts ...grpc.CallOption) (*InstanceResponse, error) + LogSetLevel(ctx context.Context, in *LogSetLevelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + LogSetFlags(ctx context.Context, in *LogSetFlagsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + LogGetLevel(ctx context.Context, in *LogGetLevelRequest, opts ...grpc.CallOption) (*LogGetLevelResponse, error) + LogGetFlags(ctx context.Context, in *LogGetFlagsRequest, opts ...grpc.CallOption) (*LogGetFlagsResponse, error) VersionGet(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*VersionResponse, error) } @@ -1392,6 +1828,42 @@ func (c *instanceServiceClient) InstanceReplace(ctx context.Context, in *Instanc return out, nil } +func (c *instanceServiceClient) LogSetLevel(ctx context.Context, in *LogSetLevelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/imrpc.InstanceService/LogSetLevel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *instanceServiceClient) LogSetFlags(ctx context.Context, in *LogSetFlagsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/imrpc.InstanceService/LogSetFlags", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *instanceServiceClient) LogGetLevel(ctx context.Context, in *LogGetLevelRequest, opts ...grpc.CallOption) (*LogGetLevelResponse, error) { + out := new(LogGetLevelResponse) + err := c.cc.Invoke(ctx, "/imrpc.InstanceService/LogGetLevel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *instanceServiceClient) LogGetFlags(ctx context.Context, in *LogGetFlagsRequest, opts ...grpc.CallOption) (*LogGetFlagsResponse, error) { + out := new(LogGetFlagsResponse) + err := c.cc.Invoke(ctx, "/imrpc.InstanceService/LogGetFlags", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *instanceServiceClient) VersionGet(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*VersionResponse, error) { out := new(VersionResponse) err := c.cc.Invoke(ctx, "/imrpc.InstanceService/VersionGet", in, out, opts...) @@ -1410,6 +1882,10 @@ type InstanceServiceServer interface { InstanceLog(*InstanceLogRequest, InstanceService_InstanceLogServer) error InstanceWatch(*emptypb.Empty, InstanceService_InstanceWatchServer) error InstanceReplace(context.Context, *InstanceReplaceRequest) (*InstanceResponse, error) + LogSetLevel(context.Context, *LogSetLevelRequest) (*emptypb.Empty, error) + LogSetFlags(context.Context, *LogSetFlagsRequest) (*emptypb.Empty, error) + LogGetLevel(context.Context, *LogGetLevelRequest) (*LogGetLevelResponse, error) + LogGetFlags(context.Context, *LogGetFlagsRequest) (*LogGetFlagsResponse, error) VersionGet(context.Context, *emptypb.Empty) (*VersionResponse, error) } @@ -1438,6 +1914,18 @@ func (*UnimplementedInstanceServiceServer) InstanceWatch(*emptypb.Empty, Instanc func (*UnimplementedInstanceServiceServer) InstanceReplace(context.Context, *InstanceReplaceRequest) (*InstanceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method InstanceReplace not implemented") } +func (*UnimplementedInstanceServiceServer) LogSetLevel(context.Context, *LogSetLevelRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogSetLevel not implemented") +} +func (*UnimplementedInstanceServiceServer) LogSetFlags(context.Context, *LogSetFlagsRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogSetFlags not implemented") +} +func (*UnimplementedInstanceServiceServer) LogGetLevel(context.Context, *LogGetLevelRequest) (*LogGetLevelResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogGetLevel not implemented") +} +func (*UnimplementedInstanceServiceServer) LogGetFlags(context.Context, *LogGetFlagsRequest) (*LogGetFlagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LogGetFlags not implemented") +} func (*UnimplementedInstanceServiceServer) VersionGet(context.Context, *emptypb.Empty) (*VersionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method VersionGet not implemented") } @@ -1578,6 +2066,78 @@ func _InstanceService_InstanceReplace_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _InstanceService_LogSetLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LogSetLevelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InstanceServiceServer).LogSetLevel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/imrpc.InstanceService/LogSetLevel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InstanceServiceServer).LogSetLevel(ctx, req.(*LogSetLevelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _InstanceService_LogSetFlags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LogSetFlagsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InstanceServiceServer).LogSetFlags(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/imrpc.InstanceService/LogSetFlags", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InstanceServiceServer).LogSetFlags(ctx, req.(*LogSetFlagsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _InstanceService_LogGetLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LogGetLevelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InstanceServiceServer).LogGetLevel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/imrpc.InstanceService/LogGetLevel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InstanceServiceServer).LogGetLevel(ctx, req.(*LogGetLevelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _InstanceService_LogGetFlags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LogGetFlagsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InstanceServiceServer).LogGetFlags(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/imrpc.InstanceService/LogGetFlags", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InstanceServiceServer).LogGetFlags(ctx, req.(*LogGetFlagsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _InstanceService_VersionGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(emptypb.Empty) if err := dec(in); err != nil { @@ -1620,6 +2180,22 @@ var _InstanceService_serviceDesc = grpc.ServiceDesc{ MethodName: "InstanceReplace", Handler: _InstanceService_InstanceReplace_Handler, }, + { + MethodName: "LogSetLevel", + Handler: _InstanceService_LogSetLevel_Handler, + }, + { + MethodName: "LogSetFlags", + Handler: _InstanceService_LogSetFlags_Handler, + }, + { + MethodName: "LogGetLevel", + Handler: _InstanceService_LogGetLevel_Handler, + }, + { + MethodName: "LogGetFlags", + Handler: _InstanceService_LogGetFlags_Handler, + }, { MethodName: "VersionGet", Handler: _InstanceService_VersionGet_Handler, diff --git a/pkg/imrpc/instance.proto b/pkg/imrpc/instance.proto index e169a7c42..86d7c4466 100644 --- a/pkg/imrpc/instance.proto +++ b/pkg/imrpc/instance.proto @@ -17,6 +17,11 @@ service InstanceService { rpc InstanceWatch(google.protobuf.Empty) returns (stream google.protobuf.Empty) {} rpc InstanceReplace(InstanceReplaceRequest) returns (InstanceResponse) {} + rpc LogSetLevel(LogSetLevelRequest) returns (google.protobuf.Empty); + rpc LogSetFlags(LogSetFlagsRequest) returns (google.protobuf.Empty); + rpc LogGetLevel(LogGetLevelRequest) returns (LogGetLevelResponse); + rpc LogGetFlags(LogGetFlagsRequest) returns (LogGetFlagsResponse); + rpc VersionGet(google.protobuf.Empty) returns (VersionResponse); } @@ -102,3 +107,29 @@ message InstanceReplaceRequest { InstanceSpec spec = 1; string terminate_signal = 2; } + +message LogSetLevelRequest { + DataEngine data_engine = 1; + string level = 2; +} + +message LogSetFlagsRequest { + DataEngine data_engine = 1; + string flags = 2; +} + +message LogGetLevelRequest { + DataEngine data_engine = 1; +} + +message LogGetLevelResponse { + string level = 1; +} + +message LogGetFlagsRequest { + DataEngine data_engine = 1; +} + +message LogGetFlagsResponse { + string flags = 1; +} From 10fb410440669639d43c829691df87a6b3952cf1 Mon Sep 17 00:00:00 2001 From: Derek Su Date: Tue, 20 Feb 2024 00:16:26 +0000 Subject: [PATCH 5/7] instance: implement log client and server functions Longhorn 7939 Signed-off-by: Derek Su --- pkg/client/instance.go | 72 ++++++++++++++++++++++ pkg/instance/instance.go | 5 ++ pkg/instance/log.go | 126 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 203 insertions(+) create mode 100644 pkg/instance/log.go diff --git a/pkg/client/instance.go b/pkg/client/instance.go index 2164528fd..9be755b21 100644 --- a/pkg/client/instance.go +++ b/pkg/client/instance.go @@ -343,6 +343,78 @@ func (c *InstanceServiceClient) VersionGet() (*meta.VersionOutput, error) { }, nil } +func (c *InstanceServiceClient) LogSetLevel(dataEngine, service, level string) error { + client := c.getControllerServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), types.GRPCServiceTimeout) + defer cancel() + + driver, ok := rpc.DataEngine_value[getDataEngine(dataEngine)] + if !ok { + return fmt.Errorf("failed to set log level: invalid data engine %v", dataEngine) + } + + _, err := client.LogSetLevel(ctx, &rpc.LogSetLevelRequest{ + DataEngine: rpc.DataEngine(driver), + Level: level, + }) + return err +} + +func (c *InstanceServiceClient) LogSetFlags(dataEngine, service, flags string) error { + client := c.getControllerServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), types.GRPCServiceTimeout) + defer cancel() + + driver, ok := rpc.DataEngine_value[getDataEngine(dataEngine)] + if !ok { + return fmt.Errorf("failed to set log flags: invalid data engine %v", dataEngine) + } + + _, err := client.LogSetFlags(ctx, &rpc.LogSetFlagsRequest{ + DataEngine: rpc.DataEngine(driver), + Flags: flags, + }) + return err +} + +func (c *InstanceServiceClient) LogGetLevel(dataEngine, service string) (string, error) { + client := c.getControllerServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), types.GRPCServiceTimeout) + defer cancel() + + driver, ok := rpc.DataEngine_value[getDataEngine(dataEngine)] + if !ok { + return "", fmt.Errorf("failed to get log level: invalid data engine %v", dataEngine) + } + + resp, err := client.LogGetLevel(ctx, &rpc.LogGetLevelRequest{ + DataEngine: rpc.DataEngine(driver), + }) + if err != nil { + return "", err + } + return resp.Level, nil +} + +func (c *InstanceServiceClient) LogGetFlags(dataEngine, service string) (string, error) { + client := c.getControllerServiceClient() + ctx, cancel := context.WithTimeout(context.Background(), types.GRPCServiceTimeout) + defer cancel() + + driver, ok := rpc.DataEngine_value[getDataEngine(dataEngine)] + if !ok { + return "", fmt.Errorf("failed to get log flags: invalid data engine %v", dataEngine) + } + + resp, err := client.LogGetFlags(ctx, &rpc.LogGetFlagsRequest{ + DataEngine: rpc.DataEngine(driver), + }) + if err != nil { + return "", err + } + return resp.Flags, nil +} + func (c *InstanceServiceClient) CheckConnection() error { req := &healthpb.HealthCheckRequest{} _, err := c.health.Check(getContextWithGRPCTimeout(c.ctx), req) diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index 4de47e490..d11e359c9 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -35,6 +35,11 @@ type InstanceOps interface { InstanceList(map[string]*rpc.InstanceResponse) error InstanceReplace(*rpc.InstanceReplaceRequest) (*rpc.InstanceResponse, error) InstanceLog(*rpc.InstanceLogRequest, rpc.InstanceService_InstanceLogServer) error + + LogSetLevel(context.Context, *rpc.LogSetLevelRequest) (*emptypb.Empty, error) + LogSetFlags(context.Context, *rpc.LogSetFlagsRequest) (*emptypb.Empty, error) + LogGetLevel(context.Context, *rpc.LogGetLevelRequest) (*rpc.LogGetLevelResponse, error) + LogGetFlags(context.Context, *rpc.LogGetFlagsRequest) (*rpc.LogGetFlagsResponse, error) } type V1DataEngineInstanceOps struct { diff --git a/pkg/instance/log.go b/pkg/instance/log.go new file mode 100644 index 000000000..8b8b84b1e --- /dev/null +++ b/pkg/instance/log.go @@ -0,0 +1,126 @@ +package instance + +import ( + "github.com/pkg/errors" + "golang.org/x/net/context" + + grpccodes "google.golang.org/grpc/codes" + grpcstatus "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/emptypb" + + spdkclient "github.com/longhorn/longhorn-spdk-engine/pkg/client" + + rpc "github.com/longhorn/longhorn-instance-manager/pkg/imrpc" +) + +func (s *Server) LogSetLevel(ctx context.Context, req *rpc.LogSetLevelRequest) (resp *emptypb.Empty, err error) { + ops, ok := s.ops[req.DataEngine] + if !ok { + return nil, grpcstatus.Errorf(grpccodes.Unimplemented, "unsupported data engine %v", req.DataEngine) + } + return ops.LogSetLevel(ctx, req) +} + +func (ops V1DataEngineInstanceOps) LogSetLevel(ctx context.Context, req *rpc.LogSetLevelRequest) (resp *emptypb.Empty, err error) { + /* TODO: Implement this */ + return &emptypb.Empty{}, nil +} + +func (ops V2DataEngineInstanceOps) LogSetLevel(ctx context.Context, req *rpc.LogSetLevelRequest) (resp *emptypb.Empty, err error) { + c, err := spdkclient.NewSPDKClient(ops.spdkServiceAddress) + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to create SPDK client").Error()) + } + defer c.Close() + + err = c.LogSetLevel(req.Level) + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to set log level").Error()) + } + return &emptypb.Empty{}, nil +} + +func (s *Server) LogSetFlags(ctx context.Context, req *rpc.LogSetFlagsRequest) (resp *emptypb.Empty, err error) { + ops, ok := s.ops[req.DataEngine] + if !ok { + return nil, grpcstatus.Errorf(grpccodes.Unimplemented, "unsupported data engine %v", req.DataEngine) + } + return ops.LogSetFlags(ctx, req) +} + +func (ops V1DataEngineInstanceOps) LogSetFlags(ctx context.Context, req *rpc.LogSetFlagsRequest) (resp *emptypb.Empty, err error) { + /* TODO: Implement this */ + return &emptypb.Empty{}, nil +} + +func (ops V2DataEngineInstanceOps) LogSetFlags(ctx context.Context, req *rpc.LogSetFlagsRequest) (resp *emptypb.Empty, err error) { + c, err := spdkclient.NewSPDKClient(ops.spdkServiceAddress) + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to create SPDK client").Error()) + } + defer c.Close() + + err = c.LogSetFlags(req.Flags) + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to set log flags").Error()) + } + return &emptypb.Empty{}, nil +} + +func (s *Server) LogGetLevel(ctx context.Context, req *rpc.LogGetLevelRequest) (resp *rpc.LogGetLevelResponse, err error) { + ops, ok := s.ops[req.DataEngine] + if !ok { + return nil, grpcstatus.Errorf(grpccodes.Unimplemented, "unsupported data engine %v", req.DataEngine) + } + return ops.LogGetLevel(ctx, req) +} + +func (ops V1DataEngineInstanceOps) LogGetLevel(ctx context.Context, req *rpc.LogGetLevelRequest) (resp *rpc.LogGetLevelResponse, err error) { + /* TODO: Implement this */ + return &rpc.LogGetLevelResponse{}, nil +} + +func (ops V2DataEngineInstanceOps) LogGetLevel(ctx context.Context, req *rpc.LogGetLevelRequest) (resp *rpc.LogGetLevelResponse, err error) { + c, err := spdkclient.NewSPDKClient(ops.spdkServiceAddress) + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to create SPDK client").Error()) + } + defer c.Close() + + level, err := c.LogGetLevel() + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to get log level").Error()) + } + return &rpc.LogGetLevelResponse{ + Level: level, + }, nil +} + +func (s *Server) LogGetFlags(ctx context.Context, req *rpc.LogGetFlagsRequest) (resp *rpc.LogGetFlagsResponse, err error) { + ops, ok := s.ops[req.DataEngine] + if !ok { + return nil, grpcstatus.Errorf(grpccodes.Unimplemented, "unsupported data engine %v", req.DataEngine) + } + return ops.LogGetFlags(ctx, req) +} + +func (ops V1DataEngineInstanceOps) LogGetFlags(ctx context.Context, req *rpc.LogGetFlagsRequest) (resp *rpc.LogGetFlagsResponse, err error) { + /* TODO: Implement this */ + return &rpc.LogGetFlagsResponse{}, nil +} + +func (ops V2DataEngineInstanceOps) LogGetFlags(ctx context.Context, req *rpc.LogGetFlagsRequest) (resp *rpc.LogGetFlagsResponse, err error) { + c, err := spdkclient.NewSPDKClient(ops.spdkServiceAddress) + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to create SPDK client").Error()) + } + defer c.Close() + + flags, err := c.LogGetFlags() + if err != nil { + return nil, grpcstatus.Error(grpccodes.Internal, errors.Wrapf(err, "failed to get log flags").Error()) + } + return &rpc.LogGetFlagsResponse{ + Flags: flags, + }, nil +} From 53e6ffe861d6f1ed650a8a4a31365155a1d36ea4 Mon Sep 17 00:00:00 2001 From: Derek Su Date: Tue, 20 Feb 2024 06:03:32 +0000 Subject: [PATCH 6/7] Bump InstanceManagerAPIVersion to 6 Bump InstanceManagerAPIVersion to 6 because of the introduction of log methods. Longohrn 7939 Signed-off-by: Derek Su --- pkg/meta/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/meta/version.go b/pkg/meta/version.go index af5feeed6..39e060291 100644 --- a/pkg/meta/version.go +++ b/pkg/meta/version.go @@ -2,7 +2,7 @@ package meta const ( // InstanceManagerAPIVersion is used for compatibility check for longhorn-manager - InstanceManagerAPIVersion = 5 + InstanceManagerAPIVersion = 6 InstanceManagerAPIMinVersion = 1 // InstanceManagerProxyAPIVersion is used for compatibility check for longhorn-manager From 375d790789e61a0b41402791558965d8dbc6332e Mon Sep 17 00:00:00 2001 From: Derek Su Date: Fri, 23 Feb 2024 04:21:39 +0000 Subject: [PATCH 7/7] Update arguments of namspaced Execute() Longhorn 7939 Signed-off-by: Derek Su --- pkg/proxy/volume.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/proxy/volume.go b/pkg/proxy/volume.go index 217535ec1..eb9014a23 100644 --- a/pkg/proxy/volume.go +++ b/pkg/proxy/volume.go @@ -336,7 +336,7 @@ func (p *Proxy) RemountReadOnlyVolume(ctx context.Context, req *rpc.RemountVolum "remount,rw", mp.Path, } - if _, err := nsexec.Execute("mount", opts, lhtypes.ExecuteDefaultTimeout); err != nil { + if _, err := nsexec.Execute(nil, "mount", opts, lhtypes.ExecuteDefaultTimeout); err != nil { return nil, grpcstatus.Errorf(grpccodes.Internal, "remount failed with error: %v", err) } }