From ced3a9efca581c72deeac0b59d0ffe9c81e3ff85 Mon Sep 17 00:00:00 2001 From: domgolonka Date: Wed, 17 Aug 2022 20:10:10 +0300 Subject: [PATCH] removed grpc and etcd --- cmd/main.go | 13 +- go.mod | 22 +--- go.sum | 37 +----- lib/grpc/grpc_server.go | 190 ++++++++++++++--------------- lib/grpc/registry.go | 79 ++++++------ lib/registry/etcd3/etcd.go | 240 ++++++++++++++++++------------------- 6 files changed, 258 insertions(+), 323 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 26a40df..ab74895 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -3,19 +3,16 @@ package main import ( "flag" "fmt" - "os" - "path" - - "github.com/common-nighthawk/go-figure" - services "github.com/domgolonka/foretoken/lib/grpc" - "github.com/domgolonka/foretoken/lib/grpc/impl" - + figure "github.com/common-nighthawk/go-figure" "github.com/domgolonka/foretoken/app" "github.com/domgolonka/foretoken/app/data" "github.com/domgolonka/foretoken/config" + "github.com/domgolonka/foretoken/lib/grpc/impl" "github.com/domgolonka/foretoken/server" "github.com/jinzhu/configor" "github.com/sirupsen/logrus" + "os" + "path" ) func main() { @@ -79,7 +76,7 @@ func serve(cfg *config.Config, logger logrus.FieldLogger) { impl.InitRPCService(newApp) go server.Server(newApp) - services.ServeRPC(newApp, ch) + //services.ServeRPC(newApp, ch) <-ch } diff --git a/go.mod b/go.mod index d569cc1..b0c6c91 100644 --- a/go.mod +++ b/go.mod @@ -2,9 +2,9 @@ module github.com/domgolonka/foretoken go 1.17 -replace github.com/coreos/etcd => github.com/ozonru/etcd v3.3.20-grpc1.27-origmodule+incompatible +// replace github.com/coreos/etcd => github.com/ozonru/etcd v3.3.20-grpc1.27-origmodule+incompatible -replace github.com/coreos/bbolt v1.3.5 => go.etcd.io/bbolt v1.3.5 +// replace github.com/coreos/bbolt v1.3.5 => go.etcd.io/bbolt v1.3.5 require ( github.com/Boostport/address v0.6.0 @@ -13,17 +13,12 @@ require ( github.com/antchfx/htmlquery v1.2.3 github.com/araddon/dateparse v0.0.0-20210207001429-0eec95c9db7e github.com/caio/go-tdigest v3.1.0+incompatible // indirect - github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 - github.com/coreos/bbolt v1.3.5 // indirect - github.com/coreos/etcd v3.3.25+incompatible // indirect github.com/domainr/whois v0.0.0-20210215110205-c05ecdd18962 - github.com/etcd-io/etcd v3.3.25+incompatible github.com/getsentry/sentry-go v0.9.0 github.com/go-playground/validator/v10 v10.4.1 github.com/gofiber/fiber/v2 v2.29.0 github.com/golang/protobuf v1.4.3 github.com/gorilla/schema v1.2.0 - github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/hashicorp/consul/api v1.3.0 github.com/hashicorp/go-multierror v1.1.0 github.com/jinzhu/configor v1.2.1 @@ -48,6 +43,8 @@ require ( gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect ) +require github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be + require ( github.com/BurntSushi/toml v0.3.1 // indirect github.com/PuerkitoBio/goquery v1.6.1 // indirect @@ -57,9 +54,6 @@ require ( github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.1 // indirect - github.com/coreos/go-semver v0.2.0 // indirect - github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 // indirect - github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf // indirect github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/creack/pty v1.1.11 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -68,9 +62,7 @@ require ( github.com/go-playground/universal-translator v0.17.0 // indirect github.com/gofiber/adaptor/v2 v2.1.1 // indirect github.com/gofiber/utils v0.1.2 // indirect - github.com/gogo/protobuf v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect - github.com/google/uuid v1.0.0 // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.1 // indirect github.com/hashicorp/go-immutable-radix v1.0.0 // indirect @@ -104,11 +96,6 @@ require ( github.com/valyala/fasthttp v1.34.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect github.com/zonedb/zonedb v1.0.3021 // indirect - go.uber.org/atomic v1.5.0 // indirect - go.uber.org/multierr v1.3.0 // indirect - go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee // indirect - go.uber.org/zap v1.13.0 // indirect - golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect golang.org/x/mod v0.4.2 // indirect golang.org/x/net v0.0.0-20220225172249-27dd8689420f // indirect golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 // indirect @@ -118,5 +105,4 @@ require ( google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect gopkg.in/yaml.v2 v2.3.0 // indirect - honnef.co/go/tools v0.0.1-2019.2.3 // indirect ) diff --git a/go.sum b/go.sum index b58a626..ea7dbcd 100644 --- a/go.sum +++ b/go.sum @@ -72,14 +72,12 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 h1:tjT4Jp4gxECvsJcYpAMtW2I3YqzBTPuB67OejxXs86s= -github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= +github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= +github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 h1:u9SHYsPQNyt5tgDm3YN7+9dYrpK96E5wFilTFWIDZOM= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf h1:CAKfRE2YtTUIjjh1bkBtyYFaUT/WmOqsJjgtihT0vMI= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= @@ -93,7 +91,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/domainr/whois v0.0.0-20210215110205-c05ecdd18962 h1:6JxCJuQa2GTtsch00CnnT8Qndra9nypNOSD/VgTSIns= @@ -111,8 +108,6 @@ github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4s github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/etcd-io/etcd v3.3.25+incompatible h1:dwTnorWhynXruhNhJ89adl8WPdiBTWnqOeBxgri26SM= -github.com/etcd-io/etcd v3.3.25+incompatible/go.mod h1:cdZ77EstHBwVtD6iTgzgvogwcjo9m4iOqoijouPJ4bs= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= @@ -171,7 +166,6 @@ github.com/gofiber/utils v0.1.2/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3Q github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -207,7 +201,6 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -216,13 +209,9 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= @@ -277,14 +266,12 @@ github.com/jmoiron/sqlx v1.3.1 h1:aLN7YINNZ7cYOPK3QC83dbM6KT0NMqVMw961TqrejlE= github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -366,10 +353,8 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -408,8 +393,6 @@ github.com/oschwald/geoip2-golang v1.6.1 h1:GKxT3yaWWNXSb7vj6D7eoJBns+lGYgx08QO0 github.com/oschwald/geoip2-golang v1.6.1/go.mod h1:xdvYt5xQzB8ORWFqPnqMwZpCpgNagttWdoZLlJQzg7s= github.com/oschwald/maxminddb-golang v1.8.0 h1:Uh/DSnGoxsyp/KYbY1AuP0tYEwfs0sCph9p/UMXK/Hk= github.com/oschwald/maxminddb-golang v1.8.0/go.mod h1:RXZtst0N6+FY/3qCNmZMBApR19cdQj43/NM9VkrNAis= -github.com/ozonru/etcd v3.3.20-grpc1.27-origmodule+incompatible h1:CAG0PUvo1fen+ZEfxKJjFIc8GuuN5RuaBuCAuaP2Hno= -github.com/ozonru/etcd v3.3.20-grpc1.27-origmodule+incompatible/go.mod h1:iIubILNIN6Jq9h8uiSLrN9L1tuj3iSSFwz3R61skm/A= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -492,7 +475,6 @@ github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soluchok/freeproxy v0.0.0-20200112224202-ccb33291a087 h1:m3Oj0i9HdMt/TnceyA7she5UQAWe2h/u+4eJYFbmG+8= github.com/soluchok/freeproxy v0.0.0-20200112224202-ccb33291a087/go.mod h1:b/wjTNYNn553DOASLHaD1kHWFzoZhWqHvEfSLjJS/dk= @@ -522,7 +504,6 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= @@ -550,7 +531,6 @@ github.com/wsxiaoys/terminal v0.0.0-20160513160801-0940f3fc43a0/go.mod h1:IXCdms github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= @@ -562,22 +542,16 @@ github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/zonedb/zonedb v1.0.3021 h1:+F7POa8K4LrY6MuAUvBv1NSK34MFK3mcxbP+pEikLgY= github.com/zonedb/zonedb v1.0.3021/go.mod h1:525E0Wdxk/DWZlFILBJmiSzgcBxE3G+AvCyTtB38qbo= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -610,7 +584,6 @@ golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -687,7 +660,6 @@ golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191224085550-c709ea063b76/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200406113430-c6e801f48ba2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -714,7 +686,6 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -817,9 +788,7 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/lib/grpc/grpc_server.go b/lib/grpc/grpc_server.go index 791a222..04865fc 100644 --- a/lib/grpc/grpc_server.go +++ b/lib/grpc/grpc_server.go @@ -1,110 +1,96 @@ package services -import ( - "net" - "os" - "os/signal" - "sync" - "syscall" - - "github.com/domgolonka/foretoken/app" - "github.com/domgolonka/foretoken/lib/grpc/impl" - "github.com/domgolonka/foretoken/lib/grpc/proto" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" - "google.golang.org/grpc" -) - const ( CONSUL = "consul" ETCD3 = "etcd3" ZOOKEEPER = "zookeeper" ) -func ServeRPC(app *app.App, ch chan bool) { - s := grpc.NewServer() - - l, err := net.Listen("tcp", app.Config.GRPCAddress) - if err != nil { - app.Logger.Panic(err) - } - proto.RegisterEmailServiceServer(s, impl.EmailSrv) - proto.RegisterIPServiceServer(s, impl.IPSrv) - - grpc_prometheus.Register(s) - - if err = s.Serve(l); err != nil { - ch <- false - app.Logger.Panic(err) - } - - regist := &Registrar{} - wg := sync.WaitGroup{} - - switch srv := app.Config.ServiceDiscovery.Service; srv { - case ETCD3: - regist = startEtcd(app) - - wg.Add(1) - go func() { - err = regist.Etc3Registrar.Register(regist.Service) - if err != nil { - ch <- false - app.Logger.Error("cannot register etcd3: %s", err.Error()) - } - wg.Done() - }() - case CONSUL: - regist = startConsul(app) - - wg.Add(1) - go func() { - err = regist.ConsulRegistrar.Register(regist.Service) - if err != nil { - ch <- false - app.Logger.Error("cannot register consul: %s", err.Error()) - } - wg.Done() - }() - case ZOOKEEPER: - regist = startZookeeper(app) - - wg.Add(1) - go func() { - err = regist.ZKRegistrar.Register(regist.Service) - if err != nil { - ch <- false - app.Logger.Error("cannot register zookeeper: %s", err.Error()) - } - wg.Done() - }() - default: - ch <- false - app.Logger.Panic("service is unknown type") - } - - signalChan := make(chan os.Signal, 1) - signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) - <-signalChan - if app.Config.ServiceDiscovery.Service == ETCD3 { - err = regist.Etc3Registrar.Unregister(regist.Service) - if err != nil { - ch <- false - app.Logger.Error("cannot unregister etcd3: %s", err.Error()) - } - } else if app.Config.ServiceDiscovery.Service == CONSUL { - err = regist.ConsulRegistrar.Unregister(regist.Service) - if err != nil { - ch <- false - app.Logger.Error("cannot unregister consul: %s", err.Error()) - } - } else if app.Config.ServiceDiscovery.Service == ZOOKEEPER { - err = regist.ZKRegistrar.Unregister(regist.Service) - if err != nil { - ch <- false - app.Logger.Error("cannot unregister zookeeper: %s", err.Error()) - } - } - - s.Stop() - wg.Wait() -} +//func ServeRPC(app *app.App, ch chan bool) { +// s := grpc.NewServer() +// +// l, err := net.Listen("tcp", app.Config.GRPCAddress) +// if err != nil { +// app.Logger.Panic(err) +// } +// proto.RegisterEmailServiceServer(s, impl.EmailSrv) +// proto.RegisterIPServiceServer(s, impl.IPSrv) +// +// grpc_prometheus.Register(s) +// +// if err = s.Serve(l); err != nil { +// ch <- false +// app.Logger.Panic(err) +// } +// +// regist := &Registrar{} +// wg := sync.WaitGroup{} +// +// switch srv := app.Config.ServiceDiscovery.Service; srv { +// case ETCD3: +// regist = startEtcd(app) +// +// wg.Add(1) +// go func() { +// err = regist.Etc3Registrar.Register(regist.Service) +// if err != nil { +// ch <- false +// app.Logger.Error("cannot register etcd3: %s", err.Error()) +// } +// wg.Done() +// }() +// case CONSUL: +// regist = startConsul(app) +// +// wg.Add(1) +// go func() { +// err = regist.ConsulRegistrar.Register(regist.Service) +// if err != nil { +// ch <- false +// app.Logger.Error("cannot register consul: %s", err.Error()) +// } +// wg.Done() +// }() +// case ZOOKEEPER: +// regist = startZookeeper(app) +// +// wg.Add(1) +// go func() { +// err = regist.ZKRegistrar.Register(regist.Service) +// if err != nil { +// ch <- false +// app.Logger.Error("cannot register zookeeper: %s", err.Error()) +// } +// wg.Done() +// }() +// default: +// ch <- false +// app.Logger.Panic("service is unknown type") +// } +// +// signalChan := make(chan os.Signal, 1) +// signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) +// <-signalChan +// if app.Config.ServiceDiscovery.Service == ETCD3 { +// err = regist.Etc3Registrar.Unregister(regist.Service) +// if err != nil { +// ch <- false +// app.Logger.Error("cannot unregister etcd3: %s", err.Error()) +// } +// } else if app.Config.ServiceDiscovery.Service == CONSUL { +// err = regist.ConsulRegistrar.Unregister(regist.Service) +// if err != nil { +// ch <- false +// app.Logger.Error("cannot unregister consul: %s", err.Error()) +// } +// } else if app.Config.ServiceDiscovery.Service == ZOOKEEPER { +// err = regist.ZKRegistrar.Unregister(regist.Service) +// if err != nil { +// ch <- false +// app.Logger.Error("cannot unregister zookeeper: %s", err.Error()) +// } +// } +// +// s.Stop() +// wg.Wait() +//} diff --git a/lib/grpc/registry.go b/lib/grpc/registry.go index 867d143..fdb18dc 100644 --- a/lib/grpc/registry.go +++ b/lib/grpc/registry.go @@ -8,52 +8,49 @@ import ( "github.com/domgolonka/foretoken/app" "github.com/domgolonka/foretoken/lib/registry" "github.com/domgolonka/foretoken/lib/registry/consul" - "github.com/domgolonka/foretoken/lib/registry/etcd3" - "github.com/etcd-io/etcd/clientv3" - consulapi "github.com/hashicorp/consul/api" ) type Registrar struct { - Service *registry.Info - Etc3Registrar *etcd3.Registrar + Service *registry.Info + //Etc3Registrar *etcd3.Registrar ConsulRegistrar *consul.Registrar ZKRegistrar *zookeeper.Registrar } -func startEtcd(app *app.App) *Registrar { - etcdConfg := clientv3.Config{ - Endpoints: []string{app.Config.ServiceDiscovery.Endpoint}, - } - - service := ®istry.Info{ - ID: app.Config.ServiceDiscovery.NodeID, - Name: "foretoken", - Version: "1.0", - Address: app.Config.GRPCAddress, - } - - registrar, err := etcd3.New( - &etcd3.Config{ - Etcd: etcdConfg, - Directory: "/assets/storage", - TTL: 10 * time.Second, - }, app.Logger) - if err != nil { - app.Logger.Panic(err) - return nil - } - - return &Registrar{ - Service: service, - Etc3Registrar: registrar, - } - -} +//func startEtcd(app *app.App) *Registrar { +// etcdConfg := clientv3.Config{ +// Endpoints: []string{app.Config.ServiceDiscovery.Endpoint}, +// } +// +// service := ®istry.Info{ +// ID: app.Config.ServiceDiscovery.NodeID, +// Name: "foretoken", +// Version: "1.0", +// Address: app.Config.GRPCAddress, +// } +// +// registrar, err := etcd3.New( +// &etcd3.Config{ +// Etcd: etcdConfg, +// Directory: "/assets/storage", +// TTL: 10 * time.Second, +// }, app.Logger) +// if err != nil { +// app.Logger.Panic(err) +// return nil +// } +// +// return &Registrar{ +// Service: service, +// Etc3Registrar: registrar, +// } +// +//} func startConsul(app *app.App) *Registrar { - consulConfg := &consulapi.Config{ - Address: app.Config.ServiceDiscovery.Endpoint, - } + //consulConfg := &consulapi.Config{ + // Address: app.Config.ServiceDiscovery.Endpoint, + //} service := ®istry.Info{ ID: app.Config.ServiceDiscovery.NodeID, @@ -64,11 +61,11 @@ func startConsul(app *app.App) *Registrar { registrar, err := consul.New( &consul.Config{ - ConsulCfg: consulConfg, - TTL: 5, + //ConsulCfg: consulConfg, + TTL: 5, }, app.Logger) if err != nil { - app.Logger.Panic(err) + //app.Logger.Panic(err) return nil } @@ -95,7 +92,7 @@ func startZookeeper(app *app.App) *Registrar { Timeout: time.Second, }, app.Logger) if err != nil { - app.Logger.Panic(err) + //app.Logger.Panic(err) return nil } diff --git a/lib/registry/etcd3/etcd.go b/lib/registry/etcd3/etcd.go index a063453..b1a1465 100644 --- a/lib/registry/etcd3/etcd.go +++ b/lib/registry/etcd3/etcd.go @@ -1,122 +1,122 @@ package etcd3 -import ( - "context" - "encoding/json" - - "github.com/etcd-io/etcd/clientv3" - "github.com/etcd-io/etcd/etcdserver/api/v3rpc/rpctypes" - - "sync" - "time" - - "github.com/domgolonka/foretoken/lib/registry" - "github.com/sirupsen/logrus" - "google.golang.org/grpc/grpclog" -) - -type Registrar struct { - sync.RWMutex - config *Config - etcd3 *clientv3.Client - canceler map[string]context.CancelFunc - logger logrus.FieldLogger -} - -type Config struct { - Etcd clientv3.Config - Directory string - TTL time.Duration -} - -func New(config *Config, logger logrus.FieldLogger) (*Registrar, error) { - client, err := clientv3.New(config.Etcd) - if err != nil { - return nil, err - } - return &Registrar{ - etcd3: client, - config: config, - canceler: make(map[string]context.CancelFunc), - logger: logger, - }, nil - -} - -func (r *Registrar) Register(service *registry.Info) error { - val, err := json.Marshal(service) - if err != nil { - return err - } - value := string(val) - key := r.config.Directory + "/" + service.Name + "/" + service.Version + "/" + service.ID - - ctx, cancel := context.WithCancel(context.Background()) - r.Lock() - r.canceler[service.ID] = cancel - r.Unlock() - insertFunc := func() error { - resp, err := r.etcd3.Grant(ctx, int64(r.config.TTL/time.Second)) - if err != nil { - r.logger.Errorf("[Register] %v\n", err.Error()) - return err - } - _, err = r.etcd3.Get(ctx, key) - if err != nil { - if err == rpctypes.ErrKeyNotFound { - if _, err := r.etcd3.Put(ctx, key, value, clientv3.WithLease(resp.ID)); err != nil { - grpclog.Infof("etcd3: set key '%s' with ttl to etcd3 failed: %s", key, err.Error()) - } - } else { - grpclog.Infof("etcd3: key '%s' connect to etcd3 failed: %s", key, err.Error()) - } - return err - } - // refresh set to true for not notifying the watcher - if _, err := r.etcd3.Put(ctx, key, value, clientv3.WithLease(resp.ID)); err != nil { - grpclog.Infof("etcd3: refresh key '%s' with ttl to etcd3 failed: %s", key, err.Error()) - return err - } - return nil - } - - err = insertFunc() - if err != nil { - return err - } - - ticker := time.NewTicker(r.config.TTL / 5) - for { - select { - case <-ticker.C: - err = insertFunc() - if err != nil { - grpclog.Errorf("[Register] %v\n", err.Error()) - } - case <-ctx.Done(): - ticker.Stop() - if _, err := r.etcd3.Delete(context.Background(), key); err != nil { - grpclog.Infof("Unregister '%s' failed: %s", key, err.Error()) - } - return nil - } - } - -} - -func (r *Registrar) Unregister(service *registry.Info) error { - r.RLock() - cancel, ok := r.canceler[service.ID] - r.RUnlock() - - if ok { - cancel() - } - return nil -} -func (r *Registrar) Close() { - err := r.etcd3.Close() - if err != nil { - r.logger.Errorf("[Close] %v\n", err.Error()) - } -} +//import ( +// "context" +// "encoding/json" +// +// "github.com/etcd-io/etcd/clientv3" +// "github.com/etcd-io/etcd/etcdserver/api/v3rpc/rpctypes" +// +// "sync" +// "time" +// +// "github.com/domgolonka/foretoken/lib/registry" +// "github.com/sirupsen/logrus" +// "google.golang.org/grpc/grpclog" +//) +// +//type Registrar struct { +// sync.RWMutex +// config *Config +// etcd3 *clientv3.Client +// canceler map[string]context.CancelFunc +// logger logrus.FieldLogger +//} +// +//type Config struct { +// Etcd clientv3.Config +// Directory string +// TTL time.Duration +//} +// +//func New(config *Config, logger logrus.FieldLogger) (*Registrar, error) { +// client, err := clientv3.New(config.Etcd) +// if err != nil { +// return nil, err +// } +// return &Registrar{ +// etcd3: client, +// config: config, +// canceler: make(map[string]context.CancelFunc), +// logger: logger, +// }, nil +// +//} +// +//func (r *Registrar) Register(service *registry.Info) error { +// val, err := json.Marshal(service) +// if err != nil { +// return err +// } +// value := string(val) +// key := r.config.Directory + "/" + service.Name + "/" + service.Version + "/" + service.ID +// +// ctx, cancel := context.WithCancel(context.Background()) +// r.Lock() +// r.canceler[service.ID] = cancel +// r.Unlock() +// insertFunc := func() error { +// resp, err := r.etcd3.Grant(ctx, int64(r.config.TTL/time.Second)) +// if err != nil { +// r.logger.Errorf("[Register] %v\n", err.Error()) +// return err +// } +// _, err = r.etcd3.Get(ctx, key) +// if err != nil { +// if err == rpctypes.ErrKeyNotFound { +// if _, err := r.etcd3.Put(ctx, key, value, clientv3.WithLease(resp.ID)); err != nil { +// grpclog.Infof("etcd3: set key '%s' with ttl to etcd3 failed: %s", key, err.Error()) +// } +// } else { +// grpclog.Infof("etcd3: key '%s' connect to etcd3 failed: %s", key, err.Error()) +// } +// return err +// } +// // refresh set to true for not notifying the watcher +// if _, err := r.etcd3.Put(ctx, key, value, clientv3.WithLease(resp.ID)); err != nil { +// grpclog.Infof("etcd3: refresh key '%s' with ttl to etcd3 failed: %s", key, err.Error()) +// return err +// } +// return nil +// } +// +// err = insertFunc() +// if err != nil { +// return err +// } +// +// ticker := time.NewTicker(r.config.TTL / 5) +// for { +// select { +// case <-ticker.C: +// err = insertFunc() +// if err != nil { +// grpclog.Errorf("[Register] %v\n", err.Error()) +// } +// case <-ctx.Done(): +// ticker.Stop() +// if _, err := r.etcd3.Delete(context.Background(), key); err != nil { +// grpclog.Infof("Unregister '%s' failed: %s", key, err.Error()) +// } +// return nil +// } +// } +// +//} +// +//func (r *Registrar) Unregister(service *registry.Info) error { +// r.RLock() +// cancel, ok := r.canceler[service.ID] +// r.RUnlock() +// +// if ok { +// cancel() +// } +// return nil +//} +//func (r *Registrar) Close() { +// err := r.etcd3.Close() +// if err != nil { +// r.logger.Errorf("[Close] %v\n", err.Error()) +// } +//}