From dbde933b7451409a4889ef1263b2b1cd9cf210f8 Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 9 Apr 2024 15:39:32 +0200 Subject: [PATCH 01/18] fixed a typo --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 12e1ccc..26a2ac9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN bee generate routers # Generating the swagger RUN timeout 20 bee run -gendoc=true -downdoc=true -runmode=dev || : -RUN sed -i 's/http:\/\/127.0.0.1:8080\/swagger\/swagger.json/swagger.json/g' swagger/index.html && \ +RUN sed -i 's/http:\/\/127.0.0.1:8080\/swagger\/swagger.json/swagger.json/g' swagger/index.html && \ sed -i 's/https:\/\/petstore.swagger.io\/v2\/swagger.json/swagger.json/g' swagger/index.html RUN ls -l routers From 9cd8af282f075e85c05c8d170794b62bb8d8b811 Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 9 Apr 2024 15:40:03 +0200 Subject: [PATCH 02/18] added some doc --- .../diagram_object_models.png | Bin 0 -> 353584 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 out/docs/UML/plantuml/diagram_object_models/diagram_object_models.png diff --git a/out/docs/UML/plantuml/diagram_object_models/diagram_object_models.png b/out/docs/UML/plantuml/diagram_object_models/diagram_object_models.png new file mode 100644 index 0000000000000000000000000000000000000000..6b837f1c15632d42c897d8ab6df3006c2e1d6798 GIT binary patch literal 353584 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

JK36ppLcuPzrt}g`Wr(M|2ML6)-apTZ6W)X4bhq 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

w``6e^(a`LVc|zY>o~7+dt4HpJ!@8 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

)51FZ#TC)av+|FN>grch{ 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

)L?qFc>H8_Rm4)LGFm11@`28`1^Ws* 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%0Ag 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

2dm1nof@|Ue#kw9dNZyV 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�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 Date: Thu, 11 Apr 2024 16:34:43 +0200 Subject: [PATCH 03/18] new model for links --- docs/UML/diag_class_links.puml | 47 ++++++++++++++++++++++++++++++++++ models/links.go | 26 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 docs/UML/diag_class_links.puml create mode 100644 models/links.go diff --git a/docs/UML/diag_class_links.puml b/docs/UML/diag_class_links.puml new file mode 100644 index 0000000..8942c85 --- /dev/null +++ b/docs/UML/diag_class_links.puml @@ -0,0 +1,47 @@ +@startuml class_links + +class LinkGraph { + + + []Link links + + + void AddLinkToGraph(Link link) + + boolean,str HasPrevious(Link) + + boolean,str HasNext(Link) + +} + +class Link { + + str source + + str destination + + boolean DCLink + + + *Link NewLink(interface{} src, interface{} dst) + + void AddLinkToDataCenter() +} + + +note left of LinkGraph::HasPrevious + checks if the component whose ID is in src is the dst of + any other Link of the list on Link +end note + +note top of Link + Links need to be redefined in the sense that they are currently used + both : + - to connect a component to a DC + - to represent the interractions between components +end note + +note right of Link::DCLink + set at construction of the object and used to order the links +end note + + +note left of Link::NewLink + Must test if the parameters check the type constraints + and raise errors for the GUI if necessary +end note + +LinkGraph*--"links"Link + +@enduml \ No newline at end of file diff --git a/models/links.go b/models/links.go new file mode 100644 index 0000000..55bc8d9 --- /dev/null +++ b/models/links.go @@ -0,0 +1,26 @@ +package models + +import ( + "fmt" + "reflect" +) + +type Link struct { + source string + destination string + dcLink bool +} + +func NewLink(src interface{}, dst interface{}) (link Link) { + // Check type with reflect and get ID + typeSrc := reflect.TypeOf(src) + typeDst := reflect.TypeOf(dst) + + fmt.Println("src is %s\ndst is %s",typeSrc,typeDst) + return +} + +func (l *Link) AddLinkToDataCenter(component interface{}) { + // if the component has a DataCenter id attribute then add it (switch on type) +} + From c2c1c4827f0253daeb624262406ab86b23eb1190 Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 2 Apr 2024 11:54:33 +0200 Subject: [PATCH 04/18] remove thumbs.db:encryptable --- scripts/local_imgs/Thumbs.db:encryptable | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 scripts/local_imgs/Thumbs.db:encryptable diff --git a/scripts/local_imgs/Thumbs.db:encryptable b/scripts/local_imgs/Thumbs.db:encryptable deleted file mode 100644 index e69de29..0000000 From baada840bf56e9fccf4f4d83a06d9cec39cdc7f0 Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 2 Apr 2024 14:49:11 +0200 Subject: [PATCH 05/18] decomment some code to allow build --- models/computing.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/computing.go b/models/computing.go index 846f06d..c0f539a 100644 --- a/models/computing.go +++ b/models/computing.go @@ -42,8 +42,8 @@ type ComputingNEWModel struct { ExecutionRequirements ExecutionRequirementsModel `json:"execution_requirements,omitempty"` - // Dinputs []string `json:"dinputs,omitempty"` // Possibly redundant with Links object in oc-schedule - // Doutputs []string `json:"doutputs,omitempty"` // Possibly redundant with Links objects in oc-schedule + Dinputs []string `json:"dinputs,omitempty"` // Possibly redundant with Links object in oc-schedule + Doutputs []string `json:"doutputs,omitempty"` // Possibly redundant with Links objects in oc-schedule Image string `json:"image,omitempty"` Command string `json:"command,omitempty"` From 1d2638f85555ebc4486e5ecfa49733d51001193d Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 2 Apr 2024 15:17:18 +0200 Subject: [PATCH 06/18] decomment some code to allow build --- go.mod | 33 --- go.sum | 640 ------------------------------------------- models/data.go | 2 +- models/datacenter.go | 4 +- 4 files changed, 3 insertions(+), 676 deletions(-) delete mode 100644 go.mod delete mode 100644 go.sum diff --git a/go.mod b/go.mod deleted file mode 100644 index f1f0706..0000000 --- a/go.mod +++ /dev/null @@ -1,33 +0,0 @@ -module cloud.o-forge.io/core/oc-catalog - -go 1.15 - -require github.com/beego/beego/v2 v2.0.1 - -require ( - github.com/antihax/optional v1.0.0 - github.com/aws/aws-sdk-go v1.36.29 // indirect - github.com/beego/beego v1.12.12 - github.com/dgrijalva/jwt-go v3.2.0+incompatible - github.com/go-playground/validator/v10 v10.4.1 - github.com/golang/snappy v0.0.2 // indirect - github.com/goraz/onion v0.1.3 - github.com/klauspost/compress v1.11.7 // indirect - github.com/leodido/go-urn v1.2.1 // indirect - github.com/mitchellh/mapstructure v1.4.1 // indirect - github.com/prometheus/client_golang v1.9.0 // indirect - github.com/prometheus/procfs v0.3.0 // indirect - github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect - github.com/vk496/cron v1.2.0 - go.mongodb.org/mongo-driver v1.4.5 - golang.org/x/mod v0.4.1 // indirect - golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 - golang.org/x/sync v0.0.0-20201207232520-09787c993a3a // indirect - golang.org/x/text v0.3.5 // indirect - golang.org/x/tools v0.1.0 // indirect - google.golang.org/appengine v1.6.1 // indirect - google.golang.org/protobuf v1.25.0 // indirect - gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect -) diff --git a/go.sum b/go.sum deleted file mode 100644 index 6b48880..0000000 --- a/go.sum +++ /dev/null @@ -1,640 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= -github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= -github.com/aws/aws-sdk-go v1.36.29 h1:lM1G3AF1+7vzFm0n7hfH8r2+750BTo+6Lo6FtPB7kzk= -github.com/aws/aws-sdk-go v1.36.29/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/beego/beego v1.12.12 h1:ARY1sNVSS23N0mEQIhSqRDTyyDlx95JY0V3GogBbZbQ= -github.com/beego/beego v1.12.12/go.mod h1:QURFL1HldOcCZAxnc1cZ7wrplsYR5dKPHFjmk6WkLAs= -github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE= -github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI= -github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ= -github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -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/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= -github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= -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/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.25+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= -github.com/couchbase/go-couchbase v0.0.0-20201216133707-c04035124b17/go.mod h1:+/bddYDxXsf9qt0xpDUtRR47A2GjaXmGGAqQ/k3GJ8A= -github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= -github.com/couchbase/gomemcached v0.1.2-0.20201224031647-c432ccf49f32/go.mod h1:mxliKQxOv84gQ0bJWbI+w9Wxdpt9HjDvgW9MjCym5Vo= -github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= -github.com/couchbase/goutils v0.0.0-20210118111533-e33d3ffb5401/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/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/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= -github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= -github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -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/etcd v3.3.17+incompatible/go.mod h1:cdZ77EstHBwVtD6iTgzgvogwcjo9m4iOqoijouPJ4bs= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -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/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2 h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw= -github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/goraz/onion v0.1.3 h1:KhyvbDA2b70gcz/d5izfwTiOH8SmrvV43AsVzpng3n0= -github.com/goraz/onion v0.1.3/go.mod h1:XEmz1XoBz+wxTgWB8NwuvRm4RAu3vKxvrmYtzK+XCuQ= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -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/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg= -github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -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/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU= -github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.3.0 h1:Uehi/mxLK0eiUc0H0++5tpMGTexB8wZ598MIgU8VpDM= -github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= -github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 h1:DAYUYH5869yV94zvCES9F51oYtN5oGlwjxJJz7ZCnik= -github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= -github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s= -github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/skarademir/naturalsort v0.0.0-20150715044055-69a5d87bef62/go.mod h1:oIdVclZaltY1Nf7OQUkg1/2jImBJ+ZfKZuDIRSwk3p0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= -github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= -github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vk496/cron v1.2.0 h1:fDxb4qNi6Rmxh3h9snW1sKJ0nHgjpg3fYc0Oq+igbvk= -github.com/vk496/cron v1.2.0/go.mod h1:f8lpm+SIXbjvujp8Dix4S2B+GGva/q0yrRPQ8hwTtOc= -github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= -github.com/wendal/errors v0.0.0-20181209125328-7f31f4b264ec/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc h1:n+nNi93yXLkJvKwXNP9d55HC7lGK4H/SRcwB5IaUZLo= -github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v3.3.25+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= -go.mongodb.org/mongo-driver v1.4.5 h1:TLtO+iD8krabXxvY1F1qpBOHgOxhLWR7XsT7kQeRmMY= -go.mongodb.org/mongo-driver v1.4.5/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= -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/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -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/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -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= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-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/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -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-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -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/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -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/models/data.go b/models/data.go index a0db949..d812d83 100644 --- a/models/data.go +++ b/models/data.go @@ -15,7 +15,7 @@ type DataNEWModel struct { ShortDescription string `json:"short_description" required:"true" validate:"required"` Logo string `json:"logo" required:"true" validate:"required"` - // Dtype string `json:"dtype"` + Dtype string `json:"dtype"` Type string `json:"type,omitempty" required:"true" validate:"required" description:"Define type of data" example:"file"` Example string `json:"example" required:"true" validate:"required" description:"base64 encoded data"` Protocol []string `json:"protocol"` //TODO Enum type diff --git a/models/datacenter.go b/models/datacenter.go index fdc1db5..3a66515 100644 --- a/models/datacenter.go +++ b/models/datacenter.go @@ -32,9 +32,9 @@ type DatacenterGpuModel struct { type DatacenterNEWModel struct { Name string `json:"name" required:"true"` - // Type string `json:"type,omitempty" required:"true"` + Type string `json:"type,omitempty" required:"true"` Acronym string `json:"acronym" required:"true" description:"id of the DC"` - // Hosts []string `json:"hosts" required:"true" description:"list of host:port"` + Hosts []string `json:"hosts" required:"true" description:"list of host:port"` Description string `json:"description" required:"true"` ShortDescription string `json:"short_description" required:"true" validate:"required"` Logo string `json:"logo" required:"true" validate:"required"` From 83c3c3d3f20715f4676030e238d85b3a910a6599 Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 2 Apr 2024 15:24:24 +0200 Subject: [PATCH 07/18] fixed go.mod --- go.mod | 33 +++ go.sum | 640 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 673 insertions(+) create mode 100644 go.mod create mode 100644 go.sum diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f1f0706 --- /dev/null +++ b/go.mod @@ -0,0 +1,33 @@ +module cloud.o-forge.io/core/oc-catalog + +go 1.15 + +require github.com/beego/beego/v2 v2.0.1 + +require ( + github.com/antihax/optional v1.0.0 + github.com/aws/aws-sdk-go v1.36.29 // indirect + github.com/beego/beego v1.12.12 + github.com/dgrijalva/jwt-go v3.2.0+incompatible + github.com/go-playground/validator/v10 v10.4.1 + github.com/golang/snappy v0.0.2 // indirect + github.com/goraz/onion v0.1.3 + github.com/klauspost/compress v1.11.7 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/mitchellh/mapstructure v1.4.1 // indirect + github.com/prometheus/client_golang v1.9.0 // indirect + github.com/prometheus/procfs v0.3.0 // indirect + github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect + github.com/vk496/cron v1.2.0 + go.mongodb.org/mongo-driver v1.4.5 + golang.org/x/mod v0.4.1 // indirect + golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect + golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/sync v0.0.0-20201207232520-09787c993a3a // indirect + golang.org/x/text v0.3.5 // indirect + golang.org/x/tools v0.1.0 // indirect + google.golang.org/appengine v1.6.1 // indirect + google.golang.org/protobuf v1.25.0 // indirect + gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..6b48880 --- /dev/null +++ b/go.sum @@ -0,0 +1,640 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= +github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/aws/aws-sdk-go v1.36.29 h1:lM1G3AF1+7vzFm0n7hfH8r2+750BTo+6Lo6FtPB7kzk= +github.com/aws/aws-sdk-go v1.36.29/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/beego/beego v1.12.12 h1:ARY1sNVSS23N0mEQIhSqRDTyyDlx95JY0V3GogBbZbQ= +github.com/beego/beego v1.12.12/go.mod h1:QURFL1HldOcCZAxnc1cZ7wrplsYR5dKPHFjmk6WkLAs= +github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE= +github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI= +github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ= +github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +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/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= +github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= +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/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.25+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= +github.com/couchbase/go-couchbase v0.0.0-20201216133707-c04035124b17/go.mod h1:+/bddYDxXsf9qt0xpDUtRR47A2GjaXmGGAqQ/k3GJ8A= +github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= +github.com/couchbase/gomemcached v0.1.2-0.20201224031647-c432ccf49f32/go.mod h1:mxliKQxOv84gQ0bJWbI+w9Wxdpt9HjDvgW9MjCym5Vo= +github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= +github.com/couchbase/goutils v0.0.0-20210118111533-e33d3ffb5401/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/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/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= +github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= +github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +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/etcd v3.3.17+incompatible/go.mod h1:cdZ77EstHBwVtD6iTgzgvogwcjo9m4iOqoijouPJ4bs= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +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/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2 h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw= +github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/goraz/onion v0.1.3 h1:KhyvbDA2b70gcz/d5izfwTiOH8SmrvV43AsVzpng3n0= +github.com/goraz/onion v0.1.3/go.mod h1:XEmz1XoBz+wxTgWB8NwuvRm4RAu3vKxvrmYtzK+XCuQ= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +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/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +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/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU= +github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0 h1:Uehi/mxLK0eiUc0H0++5tpMGTexB8wZ598MIgU8VpDM= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= +github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 h1:DAYUYH5869yV94zvCES9F51oYtN5oGlwjxJJz7ZCnik= +github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= +github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s= +github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/skarademir/naturalsort v0.0.0-20150715044055-69a5d87bef62/go.mod h1:oIdVclZaltY1Nf7OQUkg1/2jImBJ+ZfKZuDIRSwk3p0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vk496/cron v1.2.0 h1:fDxb4qNi6Rmxh3h9snW1sKJ0nHgjpg3fYc0Oq+igbvk= +github.com/vk496/cron v1.2.0/go.mod h1:f8lpm+SIXbjvujp8Dix4S2B+GGva/q0yrRPQ8hwTtOc= +github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= +github.com/wendal/errors v0.0.0-20181209125328-7f31f4b264ec/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc h1:n+nNi93yXLkJvKwXNP9d55HC7lGK4H/SRcwB5IaUZLo= +github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v3.3.25+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= +go.mongodb.org/mongo-driver v1.4.5 h1:TLtO+iD8krabXxvY1F1qpBOHgOxhLWR7XsT7kQeRmMY= +go.mongodb.org/mongo-driver v1.4.5/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +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/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +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/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +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= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-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/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +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-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +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/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +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= From 49d3ba97632734667da57efed2366ad7dba096f8 Mon Sep 17 00:00:00 2001 From: pb Date: Thu, 28 Mar 2024 14:43:33 +0100 Subject: [PATCH 08/18] Retrieve component from mxCell inside object tag --- models/mxgraph.go | 14 +++++- models/workflow.go | 114 ++++++++++++++++++++++++++++++++++++--------- 2 files changed, 103 insertions(+), 25 deletions(-) diff --git a/models/mxgraph.go b/models/mxgraph.go index 7f227fc..71ce58f 100644 --- a/models/mxgraph.go +++ b/models/mxgraph.go @@ -8,8 +8,9 @@ type MxGraphModel struct { XMLName xml.Name `xml:"mxGraphModel"` Root struct { - XMLName xml.Name `xml:"root"` - MxCell []MxCell `xml:"mxCell"` + XMLName xml.Name `xml:"root"` + MxCell []MxCell `xml:"mxCell"` + MxObject *[]MxObject `xml:"object"` } } @@ -20,6 +21,15 @@ type MxCell struct { RID *string `xml:"rID,attr"` Source *string `xml:"source,attr"` Target *string `xml:"target,attr"` + Rtype *string `xml:"rType,attr"` +} + + +type MxObject struct { + XMLName xml.Name `xml:"object"` + ID string `xml:"id,attr"` + Settings []xml.Attr `xml:",any,attr"` + MxCell MxCell `xml:"mxCell"` } type mxissue struct { diff --git a/models/workflow.go b/models/workflow.go index b883a24..38f96ae 100644 --- a/models/workflow.go +++ b/models/workflow.go @@ -4,6 +4,8 @@ import ( "context" "encoding/xml" "errors" + "net/url" + "os" "sort" "time" @@ -71,18 +73,25 @@ type ResourceObject interface { addLink(direction LinkingState, rObjID string) } +// This type allows to process computing and storage componant +// which can get input from the user +type EditableResourceObject interface{ + ResourceObject + addUserInput(map[string]interface{}) +} + // Get a sum of all execution requirements attached to a DC obj -func (w Workflow) GetExecutionRequirements(dcIDobj string) (ret ExecutionRequirementsModel, err error) { +func (wf Workflow) GetExecutionRequirements(dcIDobj string) (ret ExecutionRequirementsModel, err error) { // Find the id of the DC obj - if _, ok := w.Datacenter[dcIDobj]; !ok { + if _, ok := wf.Datacenter[dcIDobj]; !ok { return ExecutionRequirementsModel{}, errors.New("DC obj" + dcIDobj + " doesn't exist in the Workflow") } // Get all elements that are attached to the DC - for _, computingObj := range w.Computing { + for _, computingObj := range wf.Computing { if computingObj.DataCenterID == dcIDobj { mymodel, err := computingObj.getModel() if err != nil { @@ -159,6 +168,7 @@ func (w *Workflow) CreateResourceObject(rt rtype.Rtype) ResourceObject { default: res = nil } + return res } @@ -510,6 +520,14 @@ func ParseMxGraph(username, workflowName, xmlData string) (err error, mxissues [ //return errors.New("Can't modify a booked workflow"), nil } + decodedValue, err := url.QueryUnescape(xmlData) + if err != nil { + return err, nil + } + + // TEMPORARY test the xml created + os.WriteFile("graph.xml", []byte(decodedValue), 0660) + var xmlModel MxGraphModel // logs.Debug(xmlData) @@ -518,13 +536,17 @@ func ParseMxGraph(username, workflowName, xmlData string) (err error, mxissues [ return err, nil } + // Move the attribute of the object's tags into the mxCell's for an easier processing + + // currentWorkflow.extractMxCell(xmlModel) + targetWorkspaceWorkflow, err, mxissues := userWorkspace.ConsumeMxGraphModel(xmlModel) if err != nil { return err, nil } targetWorkspaceWorkflow.MxgraphXML = xmlData - targetWorkspaceWorkflow.Schedules = currentWorkflow.Schedules //TODO: Probably we should move schudles outside the workflow + targetWorkspaceWorkflow.Schedules = currentWorkflow.Schedules //TODO: Probably we should move schedules outside the workflow _, err = services.MngoCollWorkspace.UpdateOne(services.MngoCtx, primitive.M{"_id": username}, @@ -564,7 +586,8 @@ func FindSliceInSlice(slice1 []string, slice2 []string) (int, int, bool) { return -1, -1, false } -func (w Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Workflow, err error, issues []error) { +// TODO : correct this method to suppport mxcells with settings +func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Workflow, err error, issues []error) { returned_wf = &Workflow{} @@ -574,6 +597,8 @@ func (w Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Work return xmlmodel.Root.MxCell[i].RID != nil }) + + // For each cell of the xml graph, // in the case cell has a rID retrieve its rType from the value of rID of the componant in the worfklow // retrieve the componant's type @@ -586,30 +611,33 @@ func (w Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Work // create a computing object // attach the DC to it // update the workflow with the object : create the list of this type of component or update the list with the id of the component with the object + + for _, object := range *xmlmodel.Root.MxObject{ + + resObj, err, mxissues := returned_wf.mxCellToComponant(object.MxCell,ws) + if err != nil { + issues = append(issues, mxissues...) + } + returned_wf.UpdateObj(resObj,object.ID) + + // // retrieve the rType in the mxCell + // rType := w.getRtype(*object.MxCell.RID) + // // create a composant and add it to the appropriate list + // resObj := returned_wf.CreateResourceObject(rType) + // // use the addUserInput method with a map[string]string made of the + // resObj + + } + for _, cell := range xmlmodel.Root.MxCell { switch { case cell.RID != nil: - // Case of a Resource - rType := w.getRtype(*cell.RID) - - if rType == rtype.INVALID { - return nil, - errors.New("Refering to a rID that is not in the workflow"), - nil - } - - // Generate ObjectID for the reference ID - rIDObj, err := primitive.ObjectIDFromHex(*cell.RID) + resObj, err, mxissues := returned_wf.mxCellToComponant(cell,ws) if err != nil { - return nil, - errors.New("Bad ID format: " + *cell.RID), - nil + issues = append(issues, mxissues...) } - resObj := returned_wf.CreateResourceObject(rType) - resObj.setReference(rIDObj) - returned_wf.UpdateObj(resObj, cell.ID) case cell.ID == "0" || cell.ID == "1": @@ -1005,9 +1033,49 @@ func CheckAndBookWorkflowSchedule(username, workflowName string, book bool) (myR SchedulesDB: ¤tWorkflow.Schedules}}, ) - if err != nil { + if err != nil { logs.Critical("Internal error when updating in DB: " + err.Error()) } return myRet, nil } + +// Not sure if this method handles error propagation well +func (wf Workflow) mxCellToComponant(cell MxCell, ws Workspace) (resObj ResourceObject,err error, issues []error){ + rType := ws.getRtype(*cell.RID) + + if rType == rtype.INVALID { + return nil, + errors.New("Refering to a rID that is not in the workflow"), + nil + } + + // Generate ObjectID for the reference ID + rIDObj, err := primitive.ObjectIDFromHex(*cell.RID) + if err != nil { + return nil, + errors.New("Bad ID format: " + *cell.RID), + nil + } + + resObj = wf.CreateResourceObject(rType) + resObj.setReference(rIDObj) + + return +} + +// func (ws Workspace) extractMxCell(xmlModel MxGraphModel){ +// // Iterate through all objects of the MxGraph +// graphObjects := xmlModel.Root.MxObject +// for _, object := range(*graphObjects){ +// current_obj_id, _ := strconv.Atoi(object.ID) +// inside_cell_id := strconv.Itoa(current_obj_id + 1) + +// cell := ws.GetResource(&inside_cell_id) +// // component := w.GetResource(cell.RID) +// fmt.Print(cell) +// } +// // Extract the mxCell object +// // Invoke the addParameter method from the component +// // Edit the ID to get the object's one +// } From b51c0f1b74b20820076c792c5402aed6fd658a34 Mon Sep 17 00:00:00 2001 From: pb Date: Fri, 29 Mar 2024 17:00:53 +0100 Subject: [PATCH 09/18] update the object stored for one workflow with user input --- models/computing.go | 48 ++++++++++++++++++++++++++++++++++++--------- models/mxgraph.go | 16 +++++++++++++++ models/workflow.go | 39 ++++++++++++++++++++++-------------- 3 files changed, 79 insertions(+), 24 deletions(-) diff --git a/models/computing.go b/models/computing.go index c0f539a..c9f74d0 100644 --- a/models/computing.go +++ b/models/computing.go @@ -1,11 +1,13 @@ package models import ( + "encoding/xml" "fmt" "strings" "cloud.o-forge.io/core/oc-catalog/models/rtype" "cloud.o-forge.io/core/oc-catalog/services" + structtomap "github.com/Klathmon/StructToMap" "github.com/beego/beego/v2/core/logs" "go.mongodb.org/mongo-driver/bson/primitive" ) @@ -35,7 +37,7 @@ type ComputingNEWModel struct { ShortDescription string `json:"short_description,omitempty" required:"true" validate:"required"` Logo string `json:"logo,omitempty" required:"true" validate:"required"` - // Type string `json:"type,omitempty" required:"true"` + Type string `json:"type,omitempty" required:"true"` Owner string `json:"owner,omitempty"` License string `json:"license,omitempty"` Price uint `json:"price,omitempty"` @@ -49,7 +51,7 @@ type ComputingNEWModel struct { Command string `json:"command,omitempty"` Arguments []string `json:"arguments,omitempty"` Environment []string `json:"environment,omitempty"` - // Ports []string `json:"ports,omitempty"` + Ports []string `json:"ports,omitempty"` // CustomDeployment string `json:"custom_deployment,omitempty"` @@ -77,6 +79,11 @@ type ComputingObject struct { Inputs []string `json:"inputs"` Outputs []string `json:"outputs"` + Image string `json:"image,omitempty"` + Command string `json:"command,omitempty"` + Arguments []string `json:"arguments,omitempty"` + Environment []string `json:"environment,omitempty"` + Ports []string `json:"ports,omitempty"` DataCenterID string `json:"datacenterID" description:"Datacenter where the computing will be executed"` } @@ -174,19 +181,42 @@ func PostOneComputing(obj ComputingNEWModel) (ID string, err error) { return postOneResource(obj, rtype.COMPUTING) } -func (obj ComputingModel) AddUserInput(inputs map[string]interface{} ){ +func (obj *ComputingObject) AddUserInput(inputs []xml.Attr){ // So far only a few input to handle so a switch with a case for each type of attribute // is enough, to prevent too much complexity - for key, value := range inputs { - switch strings.ToLower(key) { + + for _, j := range(inputs){ + setting, _ := structtomap.Convert(j) + // fmt.Println(strings.ToLower(setting["Name"])) + name := setting["Name"].(xml.Name).Local + value := setting["Value"] + switch name { case "command": obj.Command = value.(string) - case "arguments": - obj.Arguments = value.([]string) + case "args": + empty, sliced_arguments := getSliceSettings(value.(string)) + if (!empty){ + obj.Arguments = sliced_arguments + } case "env" : - obj.Environment = value.([]string) + empty, sliced_arguments := getSliceSettings(value.(string)) + if (!empty){ + obj.Environment = sliced_arguments + } default: - logs.Alert(fmt.Printf("%s is not an attribute of storage componants", key)) + logs.Alert(fmt.Printf("%s is not an attribute of computing componants", name)) } + } + + +} + +func getSliceSettings(string_to_parse string)(empty bool, sliced_string []string){ + if len(string_to_parse) == 0 { + return true, nil + } + empty = false + sliced_string = strings.Split(string_to_parse," ") + return } \ No newline at end of file diff --git a/models/mxgraph.go b/models/mxgraph.go index 71ce58f..57cfd01 100644 --- a/models/mxgraph.go +++ b/models/mxgraph.go @@ -2,6 +2,7 @@ package models import ( "encoding/xml" + "strconv" ) type MxGraphModel struct { @@ -43,3 +44,18 @@ func (m *mxissue) Error() string { func newMxIssue(message string) error { return &mxissue{message} } + +// mxCell inside object tags are create twice when unmarshalling +// once as they appear in the xml inside the MxObject struct and once in the MxCell struct +// so once retrieved from object we remove them from the root's MxCell list +func (m *MxGraphModel) removeMxCell(id string){ + int_id,_ := strconv.Atoi(id) + int_id = int_id + 1 + cell_id := strconv.Itoa(int_id) + + for i, cell := range(m.Root.MxCell){ + if cell.ID == cell_id { + m.Root.MxCell = append(m.Root.MxCell[:i],m.Root.MxCell[i+1:]...) + } + } +} \ No newline at end of file diff --git a/models/workflow.go b/models/workflow.go index 38f96ae..46241f0 100644 --- a/models/workflow.go +++ b/models/workflow.go @@ -4,6 +4,7 @@ import ( "context" "encoding/xml" "errors" + "fmt" "net/url" "os" "sort" @@ -73,7 +74,7 @@ type ResourceObject interface { addLink(direction LinkingState, rObjID string) } -// This type allows to process computing and storage componant +// This type allows to process computing and storage component // which can get input from the user type EditableResourceObject interface{ ResourceObject @@ -600,10 +601,10 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor // For each cell of the xml graph, - // in the case cell has a rID retrieve its rType from the value of rID of the componant in the worfklow - // retrieve the componant's type + // in the case cell has a rID retrieve its rType from the value of rID of the component in the worfklow + // retrieve the component's type // create an object from the rType - // update the existing workflow with the new componant + // update the existing workflow with the new component // or by defautlt : the cell represents an arrow // if the source or the target of the arrow is a datacenter // define which end of the arrow is the DC @@ -614,18 +615,26 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor for _, object := range *xmlmodel.Root.MxObject{ - resObj, err, mxissues := returned_wf.mxCellToComponant(object.MxCell,ws) + resObj, err, mxissues := returned_wf.mxCellToComponent(object.MxCell,ws) if err != nil { issues = append(issues, mxissues...) } - returned_wf.UpdateObj(resObj,object.ID) - // // retrieve the rType in the mxCell - // rType := w.getRtype(*object.MxCell.RID) - // // create a composant and add it to the appropriate list - // resObj := returned_wf.CreateResourceObject(rType) - // // use the addUserInput method with a map[string]string made of the - // resObj + // add the component to the worflow's attribute that stores + // all components in a map[string]Component where the key + // is the component's ID in the mxGraph and the value the Component object + returned_wf.UpdateObj(resObj,object.ID) + xmlmodel.removeMxCell(object.ID) + + // Construct the object corresponding to the componant's type and use its addUserInput method + if(resObj.getRtype() == rtype.COMPUTING){ + comp_obj := returned_wf.GetResource(&object.ID).(*ComputingObject) + comp_obj.AddUserInput(object.Settings) + returned_wf.UpdateObj(comp_obj,object.ID) + } + // if(resObj.getRtype() == rtype.DATA){ + fmt.Printf("Test") + // } } @@ -633,7 +642,7 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor switch { case cell.RID != nil: - resObj, err, mxissues := returned_wf.mxCellToComponant(cell,ws) + resObj, err, mxissues := returned_wf.mxCellToComponent(cell,ws) if err != nil { issues = append(issues, mxissues...) } @@ -705,7 +714,7 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor // datalist := make(map[string]bool) - // Test wether the computing componants are linked with a DC + // Test wether the computing components are linked with a DC for _, comp := range returned_wf.Computing { if comp.DataCenterID == "" { issues = append(issues, errors.New("Computing "+*comp.getName()+" without a Datacenter")) @@ -1041,7 +1050,7 @@ func CheckAndBookWorkflowSchedule(username, workflowName string, book bool) (myR } // Not sure if this method handles error propagation well -func (wf Workflow) mxCellToComponant(cell MxCell, ws Workspace) (resObj ResourceObject,err error, issues []error){ +func (wf Workflow) mxCellToComponent(cell MxCell, ws Workspace) (resObj ResourceObject,err error, issues []error){ rType := ws.getRtype(*cell.RID) if rType == rtype.INVALID { From 57438ed21599d575a95802a71edb27a09caa4ba8 Mon Sep 17 00:00:00 2001 From: pb Date: Fri, 29 Mar 2024 17:53:48 +0100 Subject: [PATCH 10/18] removed wrong logic from previous change --- models/mxgraph.go | 15 --------------- models/workflow.go | 1 - 2 files changed, 16 deletions(-) diff --git a/models/mxgraph.go b/models/mxgraph.go index 57cfd01..fec9773 100644 --- a/models/mxgraph.go +++ b/models/mxgraph.go @@ -2,7 +2,6 @@ package models import ( "encoding/xml" - "strconv" ) type MxGraphModel struct { @@ -45,17 +44,3 @@ func newMxIssue(message string) error { return &mxissue{message} } -// mxCell inside object tags are create twice when unmarshalling -// once as they appear in the xml inside the MxObject struct and once in the MxCell struct -// so once retrieved from object we remove them from the root's MxCell list -func (m *MxGraphModel) removeMxCell(id string){ - int_id,_ := strconv.Atoi(id) - int_id = int_id + 1 - cell_id := strconv.Itoa(int_id) - - for i, cell := range(m.Root.MxCell){ - if cell.ID == cell_id { - m.Root.MxCell = append(m.Root.MxCell[:i],m.Root.MxCell[i+1:]...) - } - } -} \ No newline at end of file diff --git a/models/workflow.go b/models/workflow.go index 46241f0..938b22a 100644 --- a/models/workflow.go +++ b/models/workflow.go @@ -624,7 +624,6 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor // all components in a map[string]Component where the key // is the component's ID in the mxGraph and the value the Component object returned_wf.UpdateObj(resObj,object.ID) - xmlmodel.removeMxCell(object.ID) // Construct the object corresponding to the componant's type and use its addUserInput method if(resObj.getRtype() == rtype.COMPUTING){ From 590a5070e90f98a7ecf1c457d362bc5552c382d8 Mon Sep 17 00:00:00 2001 From: pb Date: Fri, 29 Mar 2024 17:55:38 +0100 Subject: [PATCH 11/18] improved UML documentation --- README.md | 35 +- .../plantuml/diagram_object_controllers.puml | 77 ++++ docs/UML/plantuml/diagram_object_models.puml | 347 ++++++++++++++++++ 3 files changed, 458 insertions(+), 1 deletion(-) create mode 100644 docs/UML/plantuml/diagram_object_controllers.puml create mode 100644 docs/UML/plantuml/diagram_object_models.puml diff --git a/README.md b/README.md index b626da2..b4771ab 100644 --- a/README.md +++ b/README.md @@ -63,4 +63,37 @@ This script should be updated to be ran from anywhere. # More documentation -[Visit the docs/ directory](/docs/) \ No newline at end of file +[Visit the docs/ directory](/docs/) + +## UML + +We are currently using [goplantuml](https://github.com/jfeliu007/goplantuml/) to generate the oject diagrams directly from the go files. This tools creates `.plums` files directly from the directory where the go files are located. These UML files can then be visualized using plantuml and the VS Code extensions plantuml. + +**Setting up the plantuml environment** : + +``` +# Downloading the go tool goplantuml +go get github.com/jfeliu007/goplantuml/parser +go install github.com/jfeliu007/goplantuml/cmd/goplantuml@latest + +# Install the plantuml environment +sudo apt install default-jre +sudo apt install plantuml + +``` +**Rich PlantUML extension Link**: https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml or search it in the marketplace panel of VS Code + +**Generate and view an UML diagram** + +``` +goplantuml path/to/code/directory > path/to/dest/file.puml +``` + +- open the .puml file generated +- alt + d to have the extension preview the plantUML code +- right click inside the .puml and select 'Export Current Diagram' to create an image file +- the output will be generated in a `out/` directory in the current path + +### Note + +Only `.puml` files ought to be commited to the git repository, because their nature allows to track changes, while image file do not fit the purpose of versioning. \ No newline at end of file diff --git a/docs/UML/plantuml/diagram_object_controllers.puml b/docs/UML/plantuml/diagram_object_controllers.puml new file mode 100644 index 0000000..1355311 --- /dev/null +++ b/docs/UML/plantuml/diagram_object_controllers.puml @@ -0,0 +1,77 @@ +@startuml +namespace controllers { + class ComputingController << (S,Aquamarine) >> { + + GetOneComputing(ID string) + + PostComputing(body models.ComputingNEWModel) + + GetMultipleComputing(IDs []string) + + } + class DataController << (S,Aquamarine) >> { + + GetOneData(ID string) + + GetMultipleData(IDs []string) + + PostData(body models.DataNEWModel) + + } + class DatacenterController << (S,Aquamarine) >> { + + GetMultipleDatacenter(IDs []string) + + GetOneDatacenter(ID string) + + PostDatacenter(body models.DatacenterNEWModel) + + } + class ScheduleController << (S,Aquamarine) >> { + + CreateSchedule(dcName string, workflowName string, cron string, duration uint, startDate time.Time, stopDate time.Time, requirements models.ExecutionRequirementsModel) + + CheckSchedule(cron string, duration uint, startDate time.Time, stopDate time.Time, requirements models.ExecutionRequirementsModel) + + GetSchedules(startDate time.Time, stopDate time.Time) + + GetNextSchedules(baseDate time.Time) + + GetPreviousSchedules(baseDate time.Time) + + } + class SearchController << (S,Aquamarine) >> { + + FindByWord(word string) + + } + class StorageController << (S,Aquamarine) >> { + + GetOneStorage(ID string) + + GetMultipleStorage(IDs []string) + + PostStorage(body models.StorageNEWModel) + + } + class UserController << (S,Aquamarine) >> { + + Login() + + Logout() + + } + class WorkflowController << (S,Aquamarine) >> { + + CreateWorkflow(workflowName string) + + ListWorkflows() + + GetWorkflow(workflowName string) + + AddElementWorkflow(workflowName string, rID string) + + MxGraphParser(workflowName string, xmlData string) + + MxGraphParserConsume(workflowName string) + + LinkElementsWorkflow(workflowName string, rObjIDsource string, rObjIDtarger string, isInput bool) + + GetWorkflowSchedule(workflowName string) + + SetWorkflowSchedule(workflowName string, cronString string, events string, isService bool, startDate time.Time, stopDate time.Time, duration uint) + + CheckWorkflowSchedule(workflowName string) + + BookWorkflowSchedule(workflowName string) + + } + class WorkspaceController << (S,Aquamarine) >> { + + AddModel(id string, rtype string) + + ListWorkspace() + + ListWorkspaceModel() + + DeleteElement(id string, rtype string) + + } +} +"web.Controller" *-- "controllers.ComputingController" +"web.Controller" *-- "controllers.DataController" +"web.Controller" *-- "controllers.DatacenterController" +"web.Controller" *-- "controllers.ScheduleController" +"web.Controller" *-- "controllers.SearchController" +"web.Controller" *-- "controllers.StorageController" +"web.Controller" *-- "controllers.UserController" +"web.Controller" *-- "controllers.WorkflowController" +"web.Controller" *-- "controllers.WorkspaceController" + + +@enduml diff --git a/docs/UML/plantuml/diagram_object_models.puml b/docs/UML/plantuml/diagram_object_models.puml new file mode 100644 index 0000000..983ac5b --- /dev/null +++ b/docs/UML/plantuml/diagram_object_models.puml @@ -0,0 +1,347 @@ +@startuml +namespace models { + class ComputingModel << (S,Aquamarine) >> { + + ID string + + - getRtype() rtype.Rtype + - getName() string + + + AddUserInput(inputs map[string]interface{}) + + } + class ComputingNEWModel << (S,Aquamarine) >> { + + Name string + + Description string + + ShortDescription string + + Logo string + + Type string + + Owner string + + License string + + Price uint + + ExecutionRequirements ExecutionRequirementsModel + + Dinputs []string + + Doutputs []string + + Image string + + Command string + + Arguments []string + + Environment []string + + Ports []string + + } + class ComputingObject << (S,Aquamarine) >> { + + ReferenceID primitive.ObjectID + + Inputs []string + + Outputs []string + + DataCenterID string + + - getHost() *string + - setReference(rID primitive.ObjectID) + - getReference() primitive.ObjectID + - getRtype() rtype.Rtype + - getModel() (ResourceModel, error) + - getName() *string + - isLinked(rObjID string) LinkingState + - addLink(direction LinkingState, rID string) + + } + class DCstatus << (S,Aquamarine) >> { + + DCname string + + DCobjID string + + IsReachable bool + + IsAvailable bool + + Booked *ScheduleInfo + + ErrorMessage string + + } + class DataIO << (S,Aquamarine) >> { + + Counter uint + + } + class DataModel << (S,Aquamarine) >> { + + ID string + + - getRtype() rtype.Rtype + - getName() string + + } + class DataNEWModel << (S,Aquamarine) >> { + + Name string + + Description string + + ShortDescription string + + Logo string + + Dtype string + + Type string + + Example string + + Protocol []string + + Location string + + } + class DataObject << (S,Aquamarine) >> { + + ReferenceID primitive.ObjectID + + - getHost() *string + - getModel() (ResourceModel, error) + - setReference(rID primitive.ObjectID) + - getReference() primitive.ObjectID + - getRtype() rtype.Rtype + - getName() *string + - isLinked(rID string) LinkingState + - addLink(direction LinkingState, rObjID string) + + } + class DatacenterCpuModel << (S,Aquamarine) >> { + + Cores uint + + Architecture string + + Shared bool + + MinimumMemory uint + + Platform string + + } + class DatacenterGpuModel << (S,Aquamarine) >> { + + CudaCores uint + + Model string + + Memory uint + + TensorCores uint + + } + class DatacenterMemoryModel << (S,Aquamarine) >> { + + Size uint + + Ecc bool + + } + class DatacenterModel << (S,Aquamarine) >> { + + ID string + + - getRtype() rtype.Rtype + - getName() string + + + GetTotalCPUs() uint + + GetTotalGPUs() uint + + GetTotalRAM() uint + + } + class DatacenterNEWModel << (S,Aquamarine) >> { + + Name string + + Type string + + Acronym string + + Hosts []string + + Description string + + ShortDescription string + + Logo string + + CPU DatacenterCpuModel + + RAM DatacenterMemoryModel + + GPU []DatacenterGpuModel + + Owner string + + BookingPrice int + + } + class DatacenterObject << (S,Aquamarine) >> { + + ReferenceID primitive.ObjectID + + - setReference(rID primitive.ObjectID) + - getModel() (ResourceModel, error) + - getReference() primitive.ObjectID + - getHost() *string + - getRtype() rtype.Rtype + - getName() *string + - isLinked(rID string) LinkingState + - addLink(direction LinkingState, rObjID string) + + } + class ExecutionRequirementsModel << (S,Aquamarine) >> { + + CPUs uint + + GPUs uint + + RAM uint + + Parallel bool + + ScalingModel uint + + DiskIO string + + } + class MxCell << (S,Aquamarine) >> { + + XMLName xml.Name + + ID string + + Parent *string + + RID *string + + Source *string + + Target *string + + } + class MxGraphModel << (S,Aquamarine) >> { + + XMLName xml.Name + + Root struct{xml.Name, []MxCell, *[]Object} + + } + class Object << (S,Aquamarine) >> { + + XMLName xml.Name + + ID string + + Command *string + + Args *string + + Env *string + + MxCell MxCell + + } + class RepositoryModel << (S,Aquamarine) >> { + + Credentials string + + Url string + + } + interface ResourceModel { + - getRtype() rtype.Rtype + - getName() string + + } + interface ResourceObject { + - getHost() *string + - getName() *string + - getModel() (ResourceModel, error) + - getRtype() rtype.Rtype + - setReference(rObjID primitive.ObjectID) + - getReference() primitive.ObjectID + - isLinked(rObjID string) LinkingState + - addLink(direction LinkingState, rObjID string) + + } + class ScheduleDB << (S,Aquamarine) >> { + + StartDate time.Time + + StopDate time.Time + + Workflow string + + ResourceQty ExecutionRequirementsModel + + } + class ScheduleInfo << (S,Aquamarine) >> { + + Total int + + NextExecutions []string + + } + class SearchResult << (S,Aquamarine) >> { + + Computing []ComputingModel + + Datacenter []DatacenterModel + + Storage []StorageModel + + Data []DataModel + + } + class StorageModel << (S,Aquamarine) >> { + + ID string + + - getRtype() rtype.Rtype + - getName() string + + + AddUserInput(inputs map[string]interface{}) + + } + class StorageNEWModel << (S,Aquamarine) >> { + + Name string + + Description string + + ShortDescription string + + Logo string + + Type string + + DCacronym string + + URL string + + Size uint + + Encryption bool + + Redundancy string + + Throughput string + + BookingPrice uint + + } + class StorageObject << (S,Aquamarine) >> { + + ReferenceID primitive.ObjectID + + Inputs []string + + Outputs []string + + - getHost() *string + - getModel() (ResourceModel, error) + - setReference(rID primitive.ObjectID) + - getReference() primitive.ObjectID + - getRtype() rtype.Rtype + - getName() *string + - isLinked(rObjID string) LinkingState + - addLink(direction LinkingState, rObjID string) + + } + class UserModel << (S,Aquamarine) >> { + + ID string + + Username string + + Password string + + Email string + + } + class Workflow << (S,Aquamarine) >> { + + Data map[string]DataObject + + Computing map[string]ComputingObject + + Storage map[string]StorageObject + + Datacenter map[string]DatacenterObject + + Schedules WorkflowSchedule + + MxgraphXML string + + + GetExecutionRequirements(dcIDobj string) (ExecutionRequirementsModel, error) + + GetResource(rObjID *string) ResourceObject + + GetResourceMapByRtype(rt rtype.Rtype) interface{} + + CreateResourceObject(rt rtype.Rtype) ResourceObject + + AddObj(robj ResourceObject) *primitive.ObjectID + + UpdateDB(userID string, workflowName string) error + + UpdateObj(robj ResourceObject, objID string) + + } + class WorkflowSchedule << (S,Aquamarine) >> { + + IsService bool + + StartDate time.Time + + StopDate time.Time + + Cron string + + Duration uint + + Events string + + IsBooked bool + + } + class Workspace << (S,Aquamarine) >> { + + UserID string + + Workflows map[string]Workflow + + Data []string + + Computing []string + + Datacenter []string + + Storage []string + + - getRtype(rID string) rtype.Rtype + - updateDB() error + + + ConsumeMxGraphModel(xmlmodel MxGraphModel) (*Workflow, error, []error) + + GetResources() map[rtype.Rtype][]string + + GetWorkflow(workflowName string) *Workflow + + GetWorkflows() []string + + NewResource(rID string, rType string) error + + GetAllWorkspacesProjects() chan *Workflow + + } + class WorkspaceModel << (S,Aquamarine) >> { + + UserID string + + Data []DataModel + + Computing []ComputingModel + + Datacenter []DatacenterModel + + Storage []StorageModel + + } + class models.LinkingState << (T, #FF7700) >> { + } + class mxissue << (S,Aquamarine) >> { + - msg string + + + Error() string + + } +} +"models.ComputingNEWModel" *-- "models.ComputingModel" +"models.DataNEWModel" *-- "models.DataModel" +"models.DatacenterNEWModel" *-- "models.DatacenterModel" +"models.StorageNEWModel" *-- "models.StorageModel" + +"models.ResourceModel" <|-- "models.ComputingModel" +"models.ResourceObject" <|-- "models.ComputingObject" +"models.ResourceModel" <|-- "models.DataModel" +"models.ResourceObject" <|-- "models.DataObject" +"models.ResourceModel" <|-- "models.DatacenterModel" +"models.ResourceObject" <|-- "models.DatacenterObject" +"models.ResourceModel" <|-- "models.StorageModel" +"models.ResourceObject" <|-- "models.StorageObject" + +"__builtin__.uint" #.. "models.LinkingState" +@enduml From cba7b39216b30b49458181e9b7952b4ac95b7706 Mon Sep 17 00:00:00 2001 From: pb Date: Fri, 29 Mar 2024 17:58:52 +0100 Subject: [PATCH 12/18] minor changes --- models/computing.go | 3 +++ models/workflow.go | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models/computing.go b/models/computing.go index c9f74d0..7a50246 100644 --- a/models/computing.go +++ b/models/computing.go @@ -182,6 +182,9 @@ func PostOneComputing(obj ComputingNEWModel) (ID string, err error) { } func (obj *ComputingObject) AddUserInput(inputs []xml.Attr){ + + logs.Alert("AddUserInput() is going to throw some alerts while mxGraph GUI is not updated to adapt the inputs to the componant") + // So far only a few input to handle so a switch with a case for each type of attribute // is enough, to prevent too much complexity diff --git a/models/workflow.go b/models/workflow.go index 938b22a..f8bb70e 100644 --- a/models/workflow.go +++ b/models/workflow.go @@ -4,7 +4,6 @@ import ( "context" "encoding/xml" "errors" - "fmt" "net/url" "os" "sort" @@ -632,7 +631,6 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor returned_wf.UpdateObj(comp_obj,object.ID) } // if(resObj.getRtype() == rtype.DATA){ - fmt.Printf("Test") // } } From a07c7f2898d34106c95f75221365f567fb95e37f Mon Sep 17 00:00:00 2001 From: pb Date: Thu, 4 Apr 2024 16:44:46 +0200 Subject: [PATCH 13/18] minor changes --- models/data.go | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/models/data.go b/models/data.go index d812d83..6efefa9 100644 --- a/models/data.go +++ b/models/data.go @@ -22,19 +22,6 @@ type DataNEWModel struct { Location string `json:"location" required:"true" validate:"required"` } -type DataModel struct { - ID string `json:"ID" bson:"_id" required:"true" validate:"required"` - DataNEWModel `bson:",inline"` -} - -func (obj DataModel) getRtype() rtype.Rtype { - return rtype.DATA -} - -func (model DataModel) getName() string { - return model.Name -} - type DataIO struct { Counter uint `description:"Incremental number starting from 0"` } @@ -43,6 +30,18 @@ type DataObject struct { ReferenceID primitive.ObjectID `json:"referenceID" description:"Data model ID"` } +type DataModel struct { + ID string `json:"ID" bson:"_id" required:"true" validate:"required"` + DataNEWModel `bson:",inline"` +} + +func (obj DataModel) getRtype() rtype.Rtype { + return rtype.DATA +} + +func (model DataModel) getName() string { + return model.Name +} func (obj DataObject) getHost() *string { return nil // Host is DC only attribute } From ff9021b1ff277b4100d7a3581d1adc8cd228a438 Mon Sep 17 00:00:00 2001 From: pb Date: Fri, 12 Apr 2024 13:25:01 +0200 Subject: [PATCH 14/18] differentiate links and cells post unmarshalling --- models/mxgraph.go | 38 +++++++++++++++++++++++++++++--------- models/workflow.go | 28 +++++++++++++--------------- 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/models/mxgraph.go b/models/mxgraph.go index fec9773..395dfe0 100644 --- a/models/mxgraph.go +++ b/models/mxgraph.go @@ -8,22 +8,29 @@ type MxGraphModel struct { XMLName xml.Name `xml:"mxGraphModel"` Root struct { - XMLName xml.Name `xml:"root"` - MxCell []MxCell `xml:"mxCell"` + XMLName xml.Name `xml:"root"` + MxCell []MxCell `xml:"mxCell"` MxObject *[]MxObject `xml:"object"` + MxLink []MxLink } } type MxCell struct { - XMLName xml.Name `xml:"mxCell"` - ID string `xml:"id,attr"` - Parent *string `xml:"parent,attr"` - RID *string `xml:"rID,attr"` - Source *string `xml:"source,attr"` - Target *string `xml:"target,attr"` - Rtype *string `xml:"rType,attr"` + XMLName xml.Name `xml:"mxCell"` + ID string `xml:"id,attr"` + RID *string `xml:"rID,attr"` + Rtype string `xml:"rType,attr"` + Parent *string `xml:"parent,attr"` + Edge *string `xml:"edge,attr"` + Source *string `xml:"source,attr"` + Target *string `xml:"target,attr"` } +type MxLink struct { + ID string `xml:"id,attr"` + Source string `xml:"source,attr"` + Target string `xml:"target,attr"` +} type MxObject struct { XMLName xml.Name `xml:"object"` @@ -32,6 +39,19 @@ type MxObject struct { MxCell MxCell `xml:"mxCell"` } +// Didn't manage to differentiate Links and cells containing components using +// only structures and unmarshal, so we use this method post-umarshalling +func (g *MxGraphModel) createLinks() error { + for i, mxcell := range g.Root.MxCell { + if mxcell.Edge != nil { + newLink := MxLink{mxcell.ID,*mxcell.Source,*mxcell.Target} + g.Root.MxLink = append(g.Root.MxLink,newLink) + g.Root.MxCell = append(g.Root.MxCell[:i],g.Root.MxCell[i+1:]...) + } + } + return nil +} + type mxissue struct { msg string } diff --git a/models/workflow.go b/models/workflow.go index f8bb70e..8a99b5d 100644 --- a/models/workflow.go +++ b/models/workflow.go @@ -62,6 +62,8 @@ type Workflow struct { MxgraphXML string `description:"State of the mxgraph"` } +// TODO : describe what use case this interface satisfies + type ResourceObject interface { getHost() *string getName() *string @@ -536,6 +538,11 @@ func ParseMxGraph(username, workflowName, xmlData string) (err error, mxissues [ return err, nil } + err = xmlModel.createLinks() + if err != nil { + logs.Alert("Error creating links") + return err, nil + } // Move the attribute of the object's tags into the mxCell's for an easier processing // currentWorkflow.extractMxCell(xmlModel) @@ -597,21 +604,9 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor return xmlmodel.Root.MxCell[i].RID != nil }) - - - // For each cell of the xml graph, - // in the case cell has a rID retrieve its rType from the value of rID of the component in the worfklow - // retrieve the component's type - // create an object from the rType - // update the existing workflow with the new component - // or by defautlt : the cell represents an arrow - // if the source or the target of the arrow is a datacenter - // define which end of the arrow is the DC - // if the other other end of the arrow is a computing component - // create a computing object - // attach the DC to it - // update the workflow with the object : create the list of this type of component or update the list with the id of the component with the object - + // Create the object and add it to the appropriate list + // for all the components with setting, which are identified + // by a MxObject tag in the xml for _, object := range *xmlmodel.Root.MxObject{ resObj, err, mxissues := returned_wf.mxCellToComponent(object.MxCell,ws) @@ -656,6 +651,9 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor sourceObj := returned_wf.GetResource(cell.Source) targetObj := returned_wf.GetResource(cell.Target) + link := NewLink(sourceObj,targetObj) + _ = link + if sourceObj == nil || targetObj == nil { if sourceObj == nil && targetObj == nil { issues = append(issues, errors.New("Arrow "+cell.ID+" is alone")) From 64ae7eeb4c041bf1da4b349e555d84557de2dcc3 Mon Sep 17 00:00:00 2001 From: pb Date: Mon, 15 Apr 2024 11:42:17 +0200 Subject: [PATCH 15/18] added links models to workflow --- models/links.go | 34 +++++++----- models/workflow.go | 134 +++++++++++++++++++++++++-------------------- 2 files changed, 95 insertions(+), 73 deletions(-) diff --git a/models/links.go b/models/links.go index 55bc8d9..5ad26f2 100644 --- a/models/links.go +++ b/models/links.go @@ -1,26 +1,34 @@ package models import ( - "fmt" - "reflect" + "cloud.o-forge.io/core/oc-catalog/models/rtype" ) type Link struct { - source string - destination string - dcLink bool + // ID primitive.ObjectID `json:"ID" bson:"_id" required:"true" example:"5099803df3f4948bd2f98391"` + Source string `json:"source" description:"id in the workflow of the source object"` + Destination string `json:"destination" description:"id in the workflow of the destination object"` + DCLink bool `json:"dcLink" description:"is this a link with a datacenter"` } -func NewLink(src interface{}, dst interface{}) (link Link) { - // Check type with reflect and get ID - typeSrc := reflect.TypeOf(src) - typeDst := reflect.TypeOf(dst) +// Use ResourceObject parameter to process certain components type differently +// and Id's to identify each component as a node in an oriented graph - fmt.Println("src is %s\ndst is %s",typeSrc,typeDst) +func NewLink(src ResourceObject, srcId string, dst ResourceObject, dstId string) (link Link) { + + link.Source = srcId + link.Destination = dstId + + if (src.getRtype() == rtype.DATACENTER || dst.getRtype() == rtype.DATACENTER){ + link.DCLink = true + + + } + return } -func (l *Link) AddLinkToDataCenter(component interface{}) { - // if the component has a DataCenter id attribute then add it (switch on type) -} +// So far only computing components expect the ID of the DC in their attributes +// func (l *Link) AddLinkToDataCenter(component models.ComputingModel) { +// } diff --git a/models/workflow.go b/models/workflow.go index 8a99b5d..1fecb71 100644 --- a/models/workflow.go +++ b/models/workflow.go @@ -52,10 +52,11 @@ const SchedulesDB = "schedules" type Workflow struct { // The key of the map is the ID of the object itself - Data map[string]DataObject `json:"data"` - Computing map[string]ComputingObject `json:"computing"` - Storage map[string]StorageObject `json:"storage"` - Datacenter map[string]DatacenterObject `json:"datacenter"` //TODO: Decide if there should be multiple objects of a datacenter + Data map[string]DataObject `json:"data"` + Computing map[string]ComputingObject `json:"computing"` + Storage map[string]StorageObject `json:"storage"` + Datacenter map[string]DatacenterObject `json:"datacenter"` //TODO: Decide if there should be multiple objects of a datacenter + Links map[string]Link `json:"link"` Schedules WorkflowSchedule `json:"schedules"` @@ -181,6 +182,13 @@ func (w *Workflow) AddObj(robj ResourceObject) *primitive.ObjectID { return &outputID } +func (w *Workflow) AddLinkToWorkflow (link Link, id string){ + if w.Links == nil { + w.Links = make(map[string]Link) + } + w.Links[id] = link +} + func (w *Workflow) UpdateDB(userID, workflowName string) error { _, err := services.MngoCollWorkspace.UpdateOne(services.MngoCtx, @@ -543,9 +551,7 @@ func ParseMxGraph(username, workflowName, xmlData string) (err error, mxissues [ logs.Alert("Error creating links") return err, nil } - // Move the attribute of the object's tags into the mxCell's for an easier processing - // currentWorkflow.extractMxCell(xmlModel) targetWorkspaceWorkflow, err, mxissues := userWorkspace.ConsumeMxGraphModel(xmlModel) if err != nil { @@ -593,7 +599,6 @@ func FindSliceInSlice(slice1 []string, slice2 []string) (int, int, bool) { return -1, -1, false } -// TODO : correct this method to suppport mxcells with settings func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Workflow, err error, issues []error) { returned_wf = &Workflow{} @@ -648,62 +653,20 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor default: // Not root nor resource. Should be only links - sourceObj := returned_wf.GetResource(cell.Source) - targetObj := returned_wf.GetResource(cell.Target) - - link := NewLink(sourceObj,targetObj) - _ = link - - if sourceObj == nil || targetObj == nil { - if sourceObj == nil && targetObj == nil { - issues = append(issues, errors.New("Arrow "+cell.ID+" is alone")) - } else if sourceObj == nil { - issues = append(issues, errors.New("Arrow ("+cell.ID+") to "+*targetObj.getName()+" without parent")) - } else { - issues = append(issues, errors.New("Arrow "+cell.ID+" from "+*sourceObj.getName()+" without target")) - } - - // If is a invalid link, we can't save it in the DB - continue - } - - if sourceObj.getRtype() == rtype.DATACENTER || targetObj.getRtype() == rtype.DATACENTER { - var datacenter, datacenterLinked *string - - if sourceObj.getRtype() == rtype.DATACENTER { - datacenter = cell.Source - datacenterLinked = cell.Target - } else { - datacenter = cell.Target - datacenterLinked = cell.Source - } - - switch returned_wf.GetResource(datacenterLinked).getRtype() { - case rtype.COMPUTING: - computingObj := returned_wf.GetResource(datacenterLinked).(*ComputingObject) - - // We should always get a ID because we already registered resources and discarded which doesn't correspond to existent models - computingObj.DataCenterID = *datacenter - returned_wf.UpdateObj(computingObj, *datacenterLinked) - } - - } else { - targetObj.addLink(INPUT, *cell.Source) - returned_wf.UpdateObj(targetObj, *cell.Target) // save back - - // If we have a relationship of: - // Source ----> Target - // - // The Source will be in the INPUTs of the Target. - // But we also must make sure that the Target will be in the OUTPUTs of the Source - - sourceObj.addLink(OUTPUT, *cell.Target) - returned_wf.UpdateObj(sourceObj, *cell.Source) - } - + // If is a invalid link, we can't save it in the DB + // We should always get a ID because we already registered resources and discarded which doesn't correspond to existent models + // save back + // If we have a relationship of: + // Source ----> Target + // + // The Source will be in the INPUTs of the Target. + // But we also must make sure that the Target will be in the OUTPUTs of the Source + } } + issues = ws.CreateLinks(returned_wf,xmlmodel.Root.MxLink, issues) + dcslist := make(map[string]bool) dataslist := make(map[string]bool) // datalist := make(map[string]bool) @@ -856,6 +819,57 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor return } +func (w Workspace) CreateLinks(returned_wf *Workflow, links []MxLink, issues []error) []error { + + for _, link := range links { + sourceObj := returned_wf.GetResource(&link.Source) + targetObj := returned_wf.GetResource(&link.Target) + + link_object := NewLink(sourceObj,link.Source, targetObj, link.Target) + returned_wf.AddLinkToWorkflow(link_object,link.ID) + + if sourceObj == nil || targetObj == nil { + if sourceObj == nil && targetObj == nil { + issues = append(issues, errors.New("Arrow "+link.ID +" is alone")) + } else if sourceObj == nil { + issues = append(issues, errors.New("Arrow ("+link.ID+") to "+*targetObj.getName()+" without parent")) + } else { + issues = append(issues, errors.New("Arrow "+link.ID+" from "+*sourceObj.getName()+" without target")) + } + + } + + + // if sourceObj.getRtype() == rtype.DATACENTER || targetObj.getRtype() == rtype.DATACENTER { + // var datacenter, datacenterLinked *string + + // if sourceObj.getRtype() == rtype.DATACENTER { + // datacenter = &link.Source + // datacenterLinked = &link.Target + // } else { + // datacenter = &link.Target + // datacenterLinked = &link.Source + // } + + // switch returned_wf.GetResource(datacenterLinked).getRtype() { + // case rtype.COMPUTING: + // computingObj := returned_wf.GetResource(datacenterLinked).(*ComputingObject) + + // computingObj.DataCenterID = *datacenter + // returned_wf.UpdateObj(computingObj, *datacenterLinked) + // } + + // } else { + // targetObj.addLink(INPUT, *link.Source) + // returned_wf.UpdateObj(targetObj, *link.Target) + + // sourceObj.addLink(OUTPUT, *link.Target) + // returned_wf.UpdateObj(sourceObj, *link.Source) + // } + } + return issues +} + func sumExecutionReqs(exeqReq ...ExecutionRequirementsModel) (ret ExecutionRequirementsModel) { for _, v := range exeqReq { ret.CPUs += v.CPUs From 99278ff7efccf30b9ed9b72101d3e70cbf320948 Mon Sep 17 00:00:00 2001 From: pb Date: Mon, 15 Apr 2024 11:43:07 +0200 Subject: [PATCH 16/18] minor indentation change --- models/computing.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models/computing.go b/models/computing.go index 7a50246..1bc6c4d 100644 --- a/models/computing.go +++ b/models/computing.go @@ -77,15 +77,15 @@ func (model ComputingModel) getName() string { type ComputingObject struct { ReferenceID primitive.ObjectID `json:"referenceID" description:"Computing model ID"` - Inputs []string `json:"inputs"` - Outputs []string `json:"outputs"` + Inputs []string `json:"inputs"` + Outputs []string `json:"outputs"` Image string `json:"image,omitempty"` Command string `json:"command,omitempty"` Arguments []string `json:"arguments,omitempty"` Environment []string `json:"environment,omitempty"` Ports []string `json:"ports,omitempty"` - DataCenterID string `json:"datacenterID" description:"Datacenter where the computing will be executed"` + DataCenterID string `json:"datacenterID" description:"Datacenter where the computing will be executed"` } func (obj ComputingObject) getHost() *string { From d91afc2acdd191ffa364e30de999a2d9447bb191 Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 16 Apr 2024 16:12:54 +0200 Subject: [PATCH 17/18] New class link to handle links between components and possible errors --- docs/identified_problems.md | 5 +- docs/linking_errors.md | 25 ++++ models/links.go | 25 +++- models/mxgraph.go | 28 +++- models/workflow.go | 257 +++++++++++++++++++++++------------- 5 files changed, 240 insertions(+), 100 deletions(-) create mode 100644 docs/linking_errors.md diff --git a/docs/identified_problems.md b/docs/identified_problems.md index e1133a9..afac951 100644 --- a/docs/identified_problems.md +++ b/docs/identified_problems.md @@ -2,11 +2,12 @@ - [ ] In most of the components from 'models/' we have a method to add input and output to the model, however this linking of components is already done in oc-schedule when parsing the MxGraph. We need to determine if adding relations between components inside the objects themself is necessary. - When running in debug mode with a breakpoint inside the first line of computing.addLink it is only called once -- [ ] + ## MxGraph - [ ] The ConsumeMxGraphModel is way too long, it should refactored and broken down in different sub methods - mxcell are put inside an tag when the settings have been opened, wether values have been set or not. Maybe we could find a way to make mxgraph add these whenever we add a component to the graph. - then identify the links only -- [ ] It is unclear what are the inputs and the ouputs. It seems like they were implemented to link two components, but it seems redundant with the identification of links \ No newline at end of file +- [ ] It is unclear what are the inputs and the ouputs. It seems like they were implemented to link two components, but it seems redundant with the identification of links + - This has been potentially tackled with the creation of a class to handle links between components. The components do no handle their own connections with other components, this task is delegated to the Link and Worlflow classes. \ No newline at end of file diff --git a/docs/linking_errors.md b/docs/linking_errors.md new file mode 100644 index 0000000..1cfcd2a --- /dev/null +++ b/docs/linking_errors.md @@ -0,0 +1,25 @@ +# Handling errors during workflows' post + +Every time an user modify a worflow through oc-search's GUI its representation is sent through an XML to oc-catalog API. + +To ensure a correct execution of the workflow we must look for irregularities in the workflow's design. Of course an error can be the result of a workflow being currently built by the user, with the corrective action coming. + +This document aims at laying down all the requirements that each component must respect and show wether they have been implemented in the code or not. + +## Computing + +- [x] A computing component must be paired with a datacenter component + +## Data + +- [x] A data component must be linked to at least one computing component + +## Datacenter + +- [x] A datacenter component must be linked to at least one computing component + +## Storage + +- [x] A storage component must have at least one target or be the source of another component + + diff --git a/models/links.go b/models/links.go index 5ad26f2..02ba8a7 100644 --- a/models/links.go +++ b/models/links.go @@ -14,17 +14,38 @@ type Link struct { // Use ResourceObject parameter to process certain components type differently // and Id's to identify each component as a node in an oriented graph -func NewLink(src ResourceObject, srcId string, dst ResourceObject, dstId string) (link Link) { +// In the case of DCLink we choose to always consider the DC as the destination +// in order to facilitate some logic +func NewLink(src ResourceObject, srcId string, dst ResourceObject, dstId string) (link Link) { link.Source = srcId link.Destination = dstId + // If the link is between a DC and a component make sure that the DC is destination + // and if the component is computing, update the DataCenterID + if (src.getRtype() == rtype.DATACENTER || dst.getRtype() == rtype.DATACENTER){ + var linked ResourceObject + link.DCLink = true + if src.getRtype() == rtype.DATACENTER { + linked = dst + } else { + linked = src + } + if( link.DCLink && src.getRtype() == rtype.DATACENTER){ + link.Destination = srcId + link.Source = dstId + } + + if (linked.getRtype() == rtype.COMPUTING){ + linked.(*ComputingObject).DataCenterID = link.Destination + } } - + + return } diff --git a/models/mxgraph.go b/models/mxgraph.go index 395dfe0..f30d7af 100644 --- a/models/mxgraph.go +++ b/models/mxgraph.go @@ -41,15 +41,35 @@ type MxObject struct { // Didn't manage to differentiate Links and cells containing components using // only structures and unmarshal, so we use this method post-umarshalling -func (g *MxGraphModel) createLinks() error { +func (g *MxGraphModel) createLinks() { + var cells_without_links []MxCell + + for i, mxcell := range g.Root.MxCell { - if mxcell.Edge != nil { + + if mxcell.Edge != nil { + mxcell.processLinks() newLink := MxLink{mxcell.ID,*mxcell.Source,*mxcell.Target} g.Root.MxLink = append(g.Root.MxLink,newLink) - g.Root.MxCell = append(g.Root.MxCell[:i],g.Root.MxCell[i+1:]...) + } else { + cells_without_links = append(cells_without_links,g.Root.MxCell[i]) } } - return nil + + + g.Root.MxCell = nil + g.Root.MxCell = cells_without_links + +} + +func (cell *MxCell) processLinks() { + v := "" + if cell.Source == nil { + cell.Source = &v + } + if cell.Target == nil { + cell.Target = &v + } } type mxissue struct { diff --git a/models/workflow.go b/models/workflow.go index 1fecb71..c0aff7f 100644 --- a/models/workflow.go +++ b/models/workflow.go @@ -546,12 +546,8 @@ func ParseMxGraph(username, workflowName, xmlData string) (err error, mxissues [ return err, nil } - err = xmlModel.createLinks() - if err != nil { - logs.Alert("Error creating links") - return err, nil - } - + xmlModel.createLinks() + targetWorkspaceWorkflow, err, mxissues := userWorkspace.ConsumeMxGraphModel(xmlModel) if err != nil { @@ -652,6 +648,23 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor // issues = append(issues, errors.New("MxCell with ID "+cell.ID+" doesn't have a valid link")) default: + // Not root nor resource. Should be only links + sourceObj := returned_wf.GetResource(cell.Source) + targetObj := returned_wf.GetResource(cell.Target) + + if sourceObj == nil || targetObj == nil { + if sourceObj == nil && targetObj == nil { + issues = append(issues, errors.New("Arrow "+cell.ID+" is alone")) + } else if sourceObj == nil { + issues = append(issues, errors.New("Arrow ("+cell.ID+") to "+*targetObj.getName()+" without parent")) + } else { + issues = append(issues, errors.New("Arrow "+cell.ID+" from "+*sourceObj.getName()+" without target")) + } + + // If is a invalid link, we can't save it in the DB + continue + } + // Not root nor resource. Should be only links // If is a invalid link, we can't save it in the DB // We should always get a ID because we already registered resources and discarded which doesn't correspond to existent models @@ -665,58 +678,59 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor } } - issues = ws.CreateLinks(returned_wf,xmlmodel.Root.MxLink, issues) + issues = returned_wf.CreateLinks(xmlmodel.Root.MxLink, issues) + issues = returned_wf.CheckLinks(issues) - dcslist := make(map[string]bool) - dataslist := make(map[string]bool) - // datalist := make(map[string]bool) + // dcslist := make(map[string]bool) + // dataslist := make(map[string]bool) + // // datalist := make(map[string]bool) - // Test wether the computing components are linked with a DC - for _, comp := range returned_wf.Computing { - if comp.DataCenterID == "" { - issues = append(issues, errors.New("Computing "+*comp.getName()+" without a Datacenter")) - } else { - // If doesn't exist in the list, means is new element to register as used - dcslist[comp.DataCenterID] = true + // // Test wether the computing components are linked with a DC + // for _, comp := range returned_wf.Computing { + // if comp.DataCenterID == "" { + // issues = append(issues, errors.New("Computing "+*comp.getName()+" without a Datacenter")) + // } else { + // // If doesn't exist in the list, means is new element to register as used + // dcslist[comp.DataCenterID] = true - } + // } - for _, dcin := range comp.Inputs { - switch returned_wf.GetResource(&dcin).getRtype() { - case rtype.DATA: - dataslist[dcin] = true - } - } + // for _, dcin := range comp.Inputs { + // switch returned_wf.GetResource(&dcin).getRtype() { + // case rtype.DATA: + // dataslist[dcin] = true + // } + // } - for _, dcout := range comp.Outputs { - switch returned_wf.GetResource(&dcout).getRtype() { - case rtype.DATA: - dataslist[dcout] = true - } - } + // for _, dcout := range comp.Outputs { + // switch returned_wf.GetResource(&dcout).getRtype() { + // case rtype.DATA: + // dataslist[dcout] = true + // } + // } - } + // } - for _, storage_component := range returned_wf.Storage { - if storage_component.Inputs == nil && storage_component.Outputs == nil { - issues = append(issues, errors.New("Storage "+*storage_component.getName()+" without compatible inputs and outputs")) - } - } + // for _, storage_component := range returned_wf.Storage { + // if storage_component.Inputs == nil && storage_component.Outputs == nil { + // issues = append(issues, errors.New("Storage "+*storage_component.getName()+" without compatible inputs and outputs")) + // } + // } - for dcID, dc_component := range returned_wf.Datacenter { - // if rID doesn't exist in the list, it means that it's not used - if _, ok := dcslist[dcID]; !ok { - issues = append(issues, errors.New("DC "+*dc_component.getName()+" not atached to any Computing")) - } - } + // for dcID, dc_component := range returned_wf.Datacenter { + // // if rID doesn't exist in the list, it means that it's not used + // if _, ok := dcslist[dcID]; !ok { + // issues = append(issues, errors.New("DC "+*dc_component.getName()+" not attached to any Computing")) + // } + // } - for dcID, data_component := range returned_wf.Data { - // if rID doesn't exist in the list, it means that it's not used - if _, ok := dataslist[dcID]; !ok { - issues = append(issues, errors.New("Data "+*data_component.getName()+" not atached to any Computing")) - } - } + // for dcID, data_component := range returned_wf.Data { + // // if rID doesn't exist in the list, it means that it's not used + // if _, ok := dataslist[dcID]; !ok { + // issues = append(issues, errors.New("Data "+*data_component.getName()+" not attached to any Computing")) + // } + // } ////////////////////////////////////////////////////////// // // @@ -819,57 +833,116 @@ func (ws Workspace) ConsumeMxGraphModel(xmlmodel MxGraphModel) (returned_wf *Wor return } -func (w Workspace) CreateLinks(returned_wf *Workflow, links []MxLink, issues []error) []error { +func (w *Workflow) CreateLinks(links []MxLink, issues []error) []error { for _, link := range links { - sourceObj := returned_wf.GetResource(&link.Source) - targetObj := returned_wf.GetResource(&link.Target) - - link_object := NewLink(sourceObj,link.Source, targetObj, link.Target) - returned_wf.AddLinkToWorkflow(link_object,link.ID) - - if sourceObj == nil || targetObj == nil { - if sourceObj == nil && targetObj == nil { - issues = append(issues, errors.New("Arrow "+link.ID +" is alone")) - } else if sourceObj == nil { - issues = append(issues, errors.New("Arrow ("+link.ID+") to "+*targetObj.getName()+" without parent")) - } else { - issues = append(issues, errors.New("Arrow "+link.ID+" from "+*sourceObj.getName()+" without target")) - } - + if (len(link.Source) > 0 && len(link.Target) > 0){ + sourceObj := w.GetResource(&link.Source) + targetObj := w.GetResource(&link.Target) + link_object := NewLink(sourceObj,link.Source, targetObj, link.Target) + w.AddLinkToWorkflow(link_object,link.ID) + } else { + issues = append(issues, w.processLinkErrors(link)) } - - - // if sourceObj.getRtype() == rtype.DATACENTER || targetObj.getRtype() == rtype.DATACENTER { - // var datacenter, datacenterLinked *string - - // if sourceObj.getRtype() == rtype.DATACENTER { - // datacenter = &link.Source - // datacenterLinked = &link.Target - // } else { - // datacenter = &link.Target - // datacenterLinked = &link.Source - // } - - // switch returned_wf.GetResource(datacenterLinked).getRtype() { - // case rtype.COMPUTING: - // computingObj := returned_wf.GetResource(datacenterLinked).(*ComputingObject) - - // computingObj.DataCenterID = *datacenter - // returned_wf.UpdateObj(computingObj, *datacenterLinked) - // } - - // } else { - // targetObj.addLink(INPUT, *link.Source) - // returned_wf.UpdateObj(targetObj, *link.Target) - - // sourceObj.addLink(OUTPUT, *link.Target) - // returned_wf.UpdateObj(sourceObj, *link.Source) - // } } return issues } +func (w *Workflow) processLinkErrors(link MxLink) (issue error) { + if len(link.Source) == 0 && len(link.Target) == 0 { + issue = errors.New("Arrow "+link.ID+" is alone") + } else if len(link.Source) == 0{ + targetObj := w.GetResource(&link.Target) + issue = errors.New("Arrow ("+link.ID+") to "+*targetObj.getName()+" without parent") + } else { + sourceObj := w.GetResource(&link.Source) + issue = errors.New("Arrow "+link.ID+" from "+*sourceObj.getName()+" without target") + } + + return issue +} + +func (w *Workflow) CheckLinks(issues []error) []error { + + // Check that storage components have a valid link + for id, storage := range w.Storage { + if(!w.IsComponentSrc(id) && !w.IsComponentDst(id)){ + issues = append(issues, errors.New("Storage "+*storage.getName()+" without compatible inputs and outputs")) + } + } + + // Check that data components are linked to a computing component + for id, data := range w.Data { + if(!w.HasLinkageToComputing(id)){ + issues = append(issues, errors.New("Data "+*data.getName()+" not attached to any Computing")) + } + } + + // Check that DC is linked to a computing component + for id, dc:= range w.Datacenter { + if(!w.HasLinkageToComputing(id)){ + issues = append(issues, errors.New("Datacenter "+*dc.getName()+" not attached to any Computing")) + } + + } + + // Check that all data computing components are linked to a DC + for id,comp:= range w.Computing { + if(!w.HasLinkageToDC(id)){ + issues = append(issues, errors.New("Computing "+*comp.getName()+" not attached to any datacenter")) + } + + } + + return issues +} + + +func (w *Workflow) IsComponentSrc(id string) bool { + + for _, link := range w.Links{ + if(link.Source == id && link.Source != ""){ + return true + } + } + + return false +} + +func (w *Workflow) IsComponentDst(id string) bool { + + for _, link := range w.Links{ + if(link.Destination == id && link.Source != ""){ + return true + } + } + + return false +} + +func (w *Workflow) HasLinkageToComputing(id string) bool { + + for idComputing, _ := range w.Computing { + if( (w.IsComponentSrc(id) && w.IsComponentDst(idComputing)) || (w.IsComponentSrc(idComputing) && w.IsComponentDst(id))){ + return true + } + + } + + return false +} + +func (w *Workflow) HasLinkageToDC(id string) bool { + + for _, link := range w.Links{ + if(link.Source == id && link.DCLink){ + return true + } + } + + return false +} + func sumExecutionReqs(exeqReq ...ExecutionRequirementsModel) (ret ExecutionRequirementsModel) { for _, v := range exeqReq { ret.CPUs += v.CPUs From 31c9c0c89d919f387e7eb3e3693270164e297658 Mon Sep 17 00:00:00 2001 From: pb Date: Tue, 16 Apr 2024 16:16:15 +0200 Subject: [PATCH 18/18] structtomap import --- go.mod | 1 + go.sum | 2 ++ 2 files changed, 3 insertions(+) diff --git a/go.mod b/go.mod index f1f0706..2665c7c 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.15 require github.com/beego/beego/v2 v2.0.1 require ( + github.com/Klathmon/StructToMap v0.0.0-20140724123129-3d0229e2dce7 github.com/antihax/optional v1.0.0 github.com/aws/aws-sdk-go v1.36.29 // indirect github.com/beego/beego v1.12.12 diff --git a/go.sum b/go.sum index 6b48880..aa9dac0 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Klathmon/StructToMap v0.0.0-20140724123129-3d0229e2dce7 h1:n0MD6UkwbgGHtXsmfgVzC2+ZbHzIsScpbq9ZGI18074= +github.com/Klathmon/StructToMap v0.0.0-20140724123129-3d0229e2dce7/go.mod h1:xdrQDwHlKUmv8yiElMx6W0W10cLkqpeSEUUib8KGtv4= github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=