From 835d1ef135043954cf452a71257a493cd3876960 Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 21 Mar 2024 14:10:54 +0200 Subject: [PATCH] Reverted to example webhook --- go.mod | 110 +- go.sum | 846 +++++- main.go | 3 +- pkg/dns/solver.go | 131 - pkg/dns/utils.go | 80 - pkg/domain/domain.go | 4393 ---------------------------- pkg/domain/utils.go | 143 - pkg/util/version.go | 35 - {pkg/dns => sthome}/dns.go | 6 +- {pkg/dns => sthome}/sthome.go | 11 +- {pkg/dns => sthome}/sthome_test.go | 16 +- 11 files changed, 731 insertions(+), 5043 deletions(-) delete mode 100644 pkg/dns/solver.go delete mode 100644 pkg/dns/utils.go delete mode 100644 pkg/domain/domain.go delete mode 100644 pkg/domain/utils.go delete mode 100644 pkg/util/version.go rename {pkg/dns => sthome}/dns.go (89%) rename {pkg/dns => sthome}/sthome.go (79%) rename {pkg/dns => sthome}/sthome_test.go (88%) diff --git a/go.mod b/go.mod index 49d8d9c..9e34ebd 100644 --- a/go.mod +++ b/go.mod @@ -5,114 +5,8 @@ go 1.21 toolchain go1.22.1 require ( - github.com/jetstack/cert-manager v1.7.3 + github.com/cert-manager/cert-manager v1.14.4 github.com/miekg/dns v1.1.58 - github.com/stretchr/testify v1.9.0 - k8s.io/apiextensions-apiserver v0.29.0 - k8s.io/client-go v0.29.3 ) -require ( - github.com/NYTimes/gziphandler v1.1.1 // indirect - github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect - github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/blang/semver/v4 v4.0.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/cert-manager/cert-manager v1.14.4 - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/coreos/go-semver v0.3.1 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch v5.7.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.7.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-logr/zapr v1.3.0 // indirect - github.com/go-openapi/jsonpointer v0.20.2 // indirect - github.com/go-openapi/jsonreference v0.20.4 // indirect - github.com/go-openapi/swag v0.22.7 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/cel-go v0.17.7 // indirect - github.com/google/gnostic v0.6.9 // indirect - github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1 // indirect - github.com/imdario/mergo v0.3.16 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - github.com/spf13/cobra v1.8.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/stoewer/go-strcase v1.3.0 // indirect - go.etcd.io/etcd/api/v3 v3.5.11 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.11 // indirect - go.etcd.io/etcd/client/v3 v3.5.11 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect - go.opentelemetry.io/otel v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect - go.opentelemetry.io/otel/sdk v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.21.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect - go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect - golang.org/x/crypto v0.18.0 // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.20.0 // indirect - golang.org/x/oauth2 v0.15.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.16.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.17.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect - google.golang.org/grpc v1.60.1 // indirect - google.golang.org/protobuf v1.33.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.29.3 // indirect - k8s.io/apimachinery v0.29.3 // indirect - k8s.io/apiserver v0.29.0 // indirect - k8s.io/component-base v0.29.0 // indirect - k8s.io/klog/v2 v2.110.1 // indirect - k8s.io/kms v0.29.0 // indirect - k8s.io/kube-aggregator v0.29.0 // indirect - k8s.io/kube-openapi v0.0.0-20240103051144-eec4567ac022 // indirect - k8s.io/utils v0.0.0-20240102154912-e7106e64919e // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 // indirect - sigs.k8s.io/controller-runtime v0.16.3 // indirect - sigs.k8s.io/gateway-api v1.0.0 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect -) + diff --git a/go.sum b/go.sum index d1f4a55..486f4dd 100644 --- a/go.sum +++ b/go.sum @@ -1,94 +1,255 @@ 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= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go v32.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= +github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Venafi/vcert v0.0.0-20200310111556-eba67a23943f/go.mod h1:9EegQjmRoMqVT/ydgd54mJj5rTd7ym0qMgEfhnPsce0= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +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/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/aws/aws-sdk-go v1.31.3/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +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/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cert-manager/cert-manager v1.12.6/go.mod h1:9eiWlqHtsG5H5A77mG6K9mmjS0pe7CKMQyotZnUVrxM= github.com/cert-manager/cert-manager v1.14.4 h1:DLXIZHx3jhkViYfobXo+N7/od/oj4YgG6AJw4ORJnYs= github.com/cert-manager/cert-manager v1.14.4/go.mod h1:d+CBeRu5MbpHTfXkkiiamUhnfdvhbThoOPwilU4UM98= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cloudflare/cloudflare-go v0.8.5/go.mod h1:8KhU6K+zHUEWOSU++mEQYf7D9UZOcQcibUoSm6vCUz4= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +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-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.4.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpu/goacmedns v0.0.3/go.mod h1:4MipLkI+qScwqtVxcNO6okBhbgRrr7/tKXUSgSL0teQ= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/digitalocean/godo v1.29.0/go.mod h1:iJnN9rVu6K5LioLxLimlq0uRI+y/eAQjROUmeU/r0hY= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +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-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.2.1-0.20200730175230-ee2de8da5be6/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= +github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.22.7 h1:JWrc1uc/P9cSomxfnsFSVWoE1FW6bNbrVPmpQYpCcR8= github.com/go-openapi/swag v0.22.7/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/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/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= 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-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 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= @@ -100,243 +261,575 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= +github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= +github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= +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/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.17.7 h1:6ebJFzu1xO2n7TLtN+UBqShGBhlD85bhvglh5DpcfqQ= github.com/google/cel-go v0.17.7/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= 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.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +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/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +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/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1 h1:6UKoz5ujsI55KNpsJH3UwCq3T8kKbZwNZBNPuTTje8U= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1/go.mod h1:YvJ2f6MplWDhfxiUC3KpyTy76kYUZA4W3pTv/wdKQ9Y= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +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.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +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/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= +github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= +github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jetstack/cert-manager v1.0.4/go.mod h1:my1K6J0k+YmjHqxIxhbRXgSjNClOtRq4+OxvjquDZTE= +github.com/jetstack/cert-manager v1.7.3 h1:GMbRmyEqKf/ve0TQIXIOjbokdm805rj3uWRlifJnd6U= github.com/jetstack/cert-manager v1.7.3/go.mod h1:xj0TPp31HE0Jub5mNOnF3Fp3XvhIsiP+tsPZVOmU/Qs= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +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/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/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +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.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/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= +github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +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-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/crd-schema-fuzz v1.0.0/go.mod h1:4z/rcm37JxUkSsExFcLL6ZIT1SgDRdLiu7qq1evdVS0= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +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/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= +github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pavel-v-chernykh/keystore-go v2.1.0+incompatible/go.mod h1:xlUlxe/2ItGlQyMTstqeDv9r3U4obH7xYd26TbDQutY= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-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.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/scaleway/cert-manager-webhook-scaleway v0.0.1 h1:tiNuiXnMxQJSYEjbhSvkawXBLR6SLWpbKVLN1CCS93o= +github.com/scaleway/cert-manager-webhook-scaleway v0.0.1/go.mod h1:fI2ykBG7W/AZU2YnSmuwXY5b/TNDi6RHojeplDvmC5g= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20201117145121-3abc1efd92f7/go.mod h1:CJJ5VAbozOl0yEw7nHB9+7BXTJbIn6h7W+f6Gau5IP8= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.25 h1:/8rfZAdFfafRXOgz+ZpMZZWZ5pYggCY9t7e/BvjaBHM= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.25/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +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/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= 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/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/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/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= +go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5 h1:Gqga3zA9tdAcfqobUGjSoCob5L3f8Dt5EuOp3ihNZko= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= +go.etcd.io/etcd/api/v3 v3.5.11 h1:B54KwXbWDHyD3XYAwprxNzTe7vlhR69LuBgZnMVvS7E= go.etcd.io/etcd/api/v3 v3.5.11/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= -go.etcd.io/etcd/client/pkg/v3 v3.5.7/go.mod h1:o0Abi1MK86iad3YrWhgUsbGx1pmTS+hrORWc2CamuhY= +go.etcd.io/etcd/client/pkg/v3 v3.5.11 h1:bT2xVspdiCj2910T0V+/KHcVKjkUrCZVtk8J2JF2z1A= go.etcd.io/etcd/client/pkg/v3 v3.5.11/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= -go.etcd.io/etcd/client/v3 v3.5.7/go.mod h1:sOWmj9DZUMyAngS7QQwCyAXXAL6WhgTOPLNS/NabQgw= +go.etcd.io/etcd/client/v2 v2.305.10 h1:MrmRktzv/XF8CvtQt+P6wLUlURaNpSDJHFZhe//2QE4= +go.etcd.io/etcd/client/v2 v2.305.10/go.mod h1:m3CKZi69HzilhVqtPDcjhSGp+kA1OmbNn0qamH80xjA= +go.etcd.io/etcd/client/v3 v3.5.11 h1:ajWtgoNSZJ1gmS8k+icvPtqsqEav+iUorF7b0qozgUU= go.etcd.io/etcd/client/v3 v3.5.11/go.mod h1:a6xQUEqFJ8vztO1agJh/KQKOMfFI8og52ZconzcDJwE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0/go.mod h1:vsh3ySueQCiKPxFLvjWC4Z135gIa34TQ/NSqkDTZYUM= +go.etcd.io/etcd/pkg/v3 v3.5.10 h1:WPR8K0e9kWl1gAhB5A7gEa5ZBTNkT9NdNWrR8Qpo1CM= +go.etcd.io/etcd/pkg/v3 v3.5.10/go.mod h1:TKTuCKKcF1zxmfKWDkfz5qqYaE3JncKKZPFf8c1nFUs= +go.etcd.io/etcd/raft/v3 v3.5.10 h1:cgNAYe7xrsrn/5kXMSaH8kM/Ky8mAdMqGOxyYwpP0LA= +go.etcd.io/etcd/raft/v3 v3.5.10/go.mod h1:odD6kr8XQXTy9oQnyMPBOr0TVe+gT0neQhElQ6jbGRc= +go.etcd.io/etcd/server/v3 v3.5.10 h1:4NOGyOwD5sUZ22PiWYKmfxqoeh72z6EhYjNosKGLmZg= +go.etcd.io/etcd/server/v3 v3.5.10/go.mod h1:gBplPHfs6YI0L+RpGkTQO7buDbHv5HJGG/Bst0/zIPo= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0/go.mod h1:SeQhzAEccGVZVEy7aH87Nh0km+utSpo1pTv6eMMop48= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190424203555-c05e17bb3b2d/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20231226003508-02704c960a9b h1:kLiC65FbiHWFAOu+lxwNPujcsl8VYyTYYEZnsOO1WK4= +golang.org/x/exp v0.0.0-20231226003508-02704c960a9b/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= 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-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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-20181005035420-146acd28ed58/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-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-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-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 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-20190827160401-ba9fcec4b297/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-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/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-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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-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-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190425045458-9f0b1ff7b46a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/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-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20171227012246-e19ae1496984/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-20181011042414-1f849cf54d09/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-20190125232054-d66bd3c5d5a6/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-20190312151545-0bb0c0a6e846/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-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/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-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/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-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= @@ -344,31 +837,49 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= 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-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/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-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= +google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 h1:nz5NESFLZbJGPFxDT/HCn+V1mZ8JGNoY4nUpmW/Y2eg= google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= -google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM= google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +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.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.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/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/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= @@ -378,81 +889,148 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= 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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +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/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.38.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.52.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.0.0/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.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.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-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +k8s.io/api v0.18.0/go.mod h1:q2HRQkfDzHMBZL9l/y9rH63PkQl4vae0xRT+8prbrK8= +k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI= +k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= +k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= -k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ= +k8s.io/apiextensions-apiserver v0.18.0/go.mod h1:18Cwn1Xws4xnWQNC00FLq1E350b9lUF+aOdIWDOZxgo= +k8s.io/apiextensions-apiserver v0.18.6/go.mod h1:lv89S7fUysXjLZO7ke783xOwVTm6lKizADfvUM/SS/M= +k8s.io/apiextensions-apiserver v0.19.0/go.mod h1:znfQxNpjqz/ZehvbfMg5N6fvBJW5Lqu5HVLTJQdP4Fs= +k8s.io/apiextensions-apiserver v0.19.3/go.mod h1:igVEkrE9TzInc1tYE7qSqxaLg/rEAp6B5+k9Q7+IC8Q= k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= -k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= +k8s.io/apimachinery v0.18.0/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= +k8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= +k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= -k8s.io/apiserver v0.27.2/go.mod h1:EsOf39d75rMivgvvwjJ3OW/u9n1/BmUMK5otEOJrb1Y= +k8s.io/apiserver v0.18.0/go.mod h1:3S2O6FeBBd6XTo0njUrLxiqk8GNy6wWOftjhJcXYnjw= +k8s.io/apiserver v0.18.6/go.mod h1:Zt2XvTHuaZjBz6EFYzpp+X4hTmgWGy8AthNVnTdm3Wg= +k8s.io/apiserver v0.19.0/go.mod h1:XvzqavYj73931x7FLtyagh8WibHpePJ1QwWrSJs2CLk= +k8s.io/apiserver v0.19.3/go.mod h1:bx6dMm+H6ifgKFpCQT/SAhPwhzoeIMlHIaibomUDec0= +k8s.io/apiserver v0.29.0 h1:Y1xEMjJkP+BIi0GSEv1BBrf1jLU9UPfAnnGGbbDdp7o= k8s.io/apiserver v0.29.0/go.mod h1:31n78PsRKPmfpee7/l9NYEv67u6hOL6AfcE761HapDM= -k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ= +k8s.io/cli-runtime v0.19.0/go.mod h1:tun9l0eUklT8IHIM0jors17KmUjcrAxn0myoBYwuNuo= +k8s.io/client-go v0.18.0/go.mod h1:uQSYDYs4WhVZ9i6AIoEZuwUggLVEF64HOD37boKAtF8= +k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q= +k8s.io/client-go v0.19.0/go.mod h1:H9E/VT95blcFQnlyShFgnFT9ZnJOAceiUHM3MlRC+mU= +k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= -k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo= +k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= +k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/code-generator v0.19.0/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= +k8s.io/code-generator v0.19.3/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= +k8s.io/component-base v0.18.0/go.mod h1:u3BCg0z1uskkzrnAKFzulmYaEpZF7XC9Pf/uFyb1v2c= +k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14= +k8s.io/component-base v0.19.0/go.mod h1:dKsY8BxkA+9dZIAh2aWJLL/UdASFDNtGYTCItL4LM7Y= +k8s.io/component-base v0.19.3/go.mod h1:WhLWSIefQn8W8jxSLl5WNiR6z8oyMe/8Zywg7alOkRc= k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s= k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.3.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kms v0.27.2/go.mod h1:dahSqjI05J55Fo5qipzvHSRbm20d7llrSeQjjl86A7c= +k8s.io/kms v0.29.0 h1:KJ1zaZt74CgvgV3NR7tnURJ/mJOKC5X3nwon/WdwgxI= k8s.io/kms v0.29.0/go.mod h1:mB0f9HLxRXeXUfHfn1A7rpwOlzXI1gIWu86z6buNoYA= -k8s.io/kube-aggregator v0.27.2/go.mod h1:mwrTt4ESjQ7A6847biwohgZWn8P/KzSFHegEScbSGY4= +k8s.io/kube-aggregator v0.19.0/go.mod h1:1Ln45PQggFAG8xOqWPIYMxUq8WNtpPnYsbUJ39DpF/A= +k8s.io/kube-aggregator v0.29.0 h1:N4fmtePxOZ+bwiK1RhVEztOU+gkoVkvterHgpwAuiTw= k8s.io/kube-aggregator v0.29.0/go.mod h1:bjatII63ORkFg5yUFP2qm2OC49R0wwxZhRVIyJ4Z4X0= -k8s.io/kube-openapi v0.0.0-20230515203736-54b630e78af5/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20240103051144-eec4567ac022 h1:avRdiaB03v88Mfvum2S3BBwkNuTlmuar4LlfO9Hajko= k8s.io/kube-openapi v0.0.0-20240103051144-eec4567ac022/go.mod h1:sIV51WBTkZrlGOJMCDZDA1IaPBUDTulPpD4y7oe038k= -k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/kubectl v0.19.0/go.mod h1:gPCjjsmE6unJzgaUNXIFGZGafiUp5jh0If3F/x7/rRg= +k8s.io/metrics v0.19.0/go.mod h1:WykpW8B60OeAJx1imdwUgyOID2kDljr/Q+1zrPJ98Wo= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 h1:/U5vjBbQn3RChhv7P11uhYvCSm5G2GaIi5AIGBS6r4c= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0/go.mod h1:z7+wmGM2dfIiLRfrC6jb5kV2Mq/sK1ZP303cxzkV5Y4= -sigs.k8s.io/controller-runtime v0.15.0/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= +sigs.k8s.io/controller-runtime v0.6.2/go.mod h1:vhcq/rlnENJ09SIRp3EveTaZ0yqH526hjf9iJdbUJ/E= sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= -sigs.k8s.io/gateway-api v0.7.0/go.mod h1:Xv0+ZMxX0lu1nSSDIIPEfbVztgNZ+3cfiYrJsa2Ooso= +sigs.k8s.io/controller-tools v0.2.9-0.20200414181213-645d44dca7c0/go.mod h1:YKE/iHvcKITCljdnlqHYe+kAt7ZldvtAwUzQff0k1T0= sigs.k8s.io/gateway-api v1.0.0 h1:iPTStSv41+d9p0xFydll6d7f7MOBGuqXM6p2/zVYMAs= sigs.k8s.io/gateway-api v1.0.0/go.mod h1:4cUgr0Lnp5FZ0Cdq8FdRwCvpiWws7LVhLHGIudLlf4c= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +software.sslmate.com/src/go-pkcs12 v0.0.0-20180114231543-2291e8f0f237/go.mod h1:/xvNRWUqm0+/ZMiF4EX00vrSCMsE4/NHb+Pt3freEeQ= +software.sslmate.com/src/go-pkcs12 v0.0.0-20200619203921-c9ed90bd32dc/go.mod h1:/xvNRWUqm0+/ZMiF4EX00vrSCMsE4/NHb+Pt3freEeQ= +vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/main.go b/main.go index 87f7ab4..5cc2883 100644 --- a/main.go +++ b/main.go @@ -3,8 +3,7 @@ package main import ( "os" - "github.com/jetstack/cert-manager/pkg/acme/webhook/cmd" - "github.com/stuurmcp/cert-manager-webhook-sthome/pkg/dns" + "github.com/cert-manager/cert-manager/pkg/acme/webhook/cmd" ) // GroupName is the name under which the webhook will be available diff --git a/pkg/dns/solver.go b/pkg/dns/solver.go deleted file mode 100644 index 6276ba6..0000000 --- a/pkg/dns/solver.go +++ /dev/null @@ -1,131 +0,0 @@ -package dns - -import ( - "fmt" - "strconv" - "strings" - - v1alpha1 "github.com/jetstack/cert-manager/pkg/acme/webhook/apis/acme/v1alpha1" - "github.com/stuurmcp/cert-manager-webhook-sthome/pkg/domain" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/rest" -) - -const ( - providerName = "sthome" -) - -// ProviderSolver is the struct implementing the webhook.Solver interface -// for sthome DNS -type ProviderSolver struct { - client kubernetes.Interface -} - -// Name is used as the name for this DNS solver when referencing it on the ACME -// Issuer resource -func (p *ProviderSolver) Name() string { - return providerName -} - -// Present is responsible for actually presenting the DNS record with the -// DNS provider. -// This method should tolerate being called multiple times with the same value. -// cert-manager itself will later perform a self check to ensure that the -// solver has correctly configured the DNS provider. -func (p *ProviderSolver) Present(ch *v1alpha1.ChallengeRequest) error { - domainAPI, err := p.getDomainAPI(ch) - if err != nil { - return err - } - - request := &domain.UpdateDNSZoneRecordsRequest{ - DNSZone: strings.TrimSuffix(ch.ResolvedZone, "."), - Changes: []*domain.RecordChange{ - { - Set: &domain.RecordChangeSet{ - IDFields: &domain.RecordIdentifier{ - Name: strings.TrimSuffix(strings.TrimSuffix(ch.ResolvedFQDN, ch.ResolvedZone), "."), - Type: domain.RecordTypeTXT, - Data: StringPtr(strconv.Quote(ch.Key)), - }, - Records: []*domain.Record{ - { - Name: strings.TrimSuffix(strings.TrimSuffix(ch.ResolvedFQDN, ch.ResolvedZone), "."), - Data: strconv.Quote(ch.Key), - Type: domain.RecordTypeTXT, - TTL: 60, - }, - }, - }, - }, - }, - } - - _, err = domainAPI.UpdateDNSZoneRecords(request) - if err != nil { - return fmt.Errorf("failed to update DNS zone records: %w", err) - } - - return nil -} - -// CleanUp should delete the relevant TXT record from the DNS provider console. -// If multiple TXT records exist with the same record name (e.g. -// _acme-challenge.example.com) then **only** the record with the same `key` -// value provided on the ChallengeRequest should be cleaned up. -// This is in order to facilitate multiple DNS validations for the same domain -// concurrently. -func (p *ProviderSolver) CleanUp(ch *v1alpha1.ChallengeRequest) error { - domainAPI, err := p.getDomainAPI(ch) - if err != nil { - return err - } - - request := &domain.UpdateDNSZoneRecordsRequest{ - DNSZone: strings.TrimSuffix(ch.ResolvedZone, "."), - Changes: []*domain.RecordChange{ - { - Delete: &domain.RecordChangeDelete{ - IDFields: &domain.RecordIdentifier{ - Name: strings.TrimSuffix(strings.TrimSuffix(ch.ResolvedFQDN, ch.ResolvedZone), "."), - Data: StringPtr(strconv.Quote(ch.Key)), - Type: domain.RecordTypeTXT, - }, - }, - }, - }, - } - - _, err = domainAPI.UpdateDNSZoneRecords(request) - if err != nil { - return fmt.Errorf("failed to update DNS zone records: %w", err) - } - - return nil -} - -// Initialize will be called when the webhook first starts. -// This method can be used to instantiate the webhook, i.e. initialising -// connections or warming up caches. -// Typically, the kubeClientConfig parameter is used to build a Kubernetes -// client that can be used to fetch resources from the Kubernetes API, e.g. -// Secret resources containing credentials used to authenticate with DNS -// provider accounts. -// The stopCh can be used to handle early termination of the webhook, in cases -// where a SIGTERM or similar signal is sent to the webhook process. -func (p *ProviderSolver) Initialize(kubeClientConfig *rest.Config, stopCh <-chan struct{}) error { - - cl, err := kubernetes.NewForConfig(kubeClientConfig) - if err != nil { - return fmt.Errorf("failed to get kubernetes client: %w", err) - } - - p.client = cl - - return nil -} - -// StringPtr returns a pointer to the string value provided -func StringPtr(v string) *string { - return &v -} diff --git a/pkg/dns/utils.go b/pkg/dns/utils.go deleted file mode 100644 index a739736..0000000 --- a/pkg/dns/utils.go +++ /dev/null @@ -1,80 +0,0 @@ -package dns - -import ( - "context" - "encoding/json" - "fmt" - "os" - - "github.com/jetstack/cert-manager/pkg/acme/webhook/apis/acme/v1alpha1" - "github.com/scaleway/cert-manager-webhook-scaleway/pkg/util" - "github.com/scaleway/scaleway-sdk-go/scw" - "github.com/stuurmcp/cert-manager-webhook-sthome/pkg/domain" - - //domain "github.com/scaleway/scaleway-sdk-go/api/domain/v2beta1" - //"github.com/scaleway/scaleway-sdk-go/scw" - extapi "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// loadConfig is a small helper function that decodes JSON configuration into -// the typed config struct. -func loadConfig(cfgJSON *extapi.JSON) (ProviderConfig, error) { - cfg := ProviderConfig{} - // handle the 'base case' where no configuration has been provided - if cfgJSON == nil { - return cfg, nil - } - if err := json.Unmarshal(cfgJSON.Raw, &cfg); err != nil { - return cfg, fmt.Errorf("error decoding solver config: %v", err) - } - - return cfg, nil -} - -func (p *ProviderSolver) getDomainAPI(ch *v1alpha1.ChallengeRequest) (*domain.API, error) { - config, err := loadConfig(ch.Config) - if err != nil { - return nil, fmt.Errorf("failed to load config: %w", err) - } - - accessKey := os.Getenv(scw.ScwAccessKeyEnv) - secretKey := os.Getenv(scw.ScwSecretKeyEnv) - - if config.AccessKey != nil && config.SecretKey != nil { - accessKeySecret, err := p.client.CoreV1().Secrets(ch.ResourceNamespace).Get(context.Background(), config.AccessKey.Name, metav1.GetOptions{}) - if err != nil { - return nil, fmt.Errorf("could not get secret %s: %w", config.AccessKey.Name, err) - } - secretKeySecret, err := p.client.CoreV1().Secrets(ch.ResourceNamespace).Get(context.Background(), config.SecretKey.Name, metav1.GetOptions{}) - if err != nil { - return nil, fmt.Errorf("could not get secret %s: %w", config.SecretKey.Name, err) - } - - accessKeyData, ok := accessKeySecret.Data[config.AccessKey.Key] - if !ok { - return nil, fmt.Errorf("could not get key %s in secret %s", config.AccessKey.Key, config.AccessKey.Name) - } - - secretKeyData, ok := secretKeySecret.Data[config.SecretKey.Key] - if !ok { - return nil, fmt.Errorf("could not get key %s in secret %s", config.SecretKey.Key, config.SecretKey.Name) - } - - accessKey = string(accessKeyData) - secretKey = string(secretKeyData) - } - - scwClient, err := scw.NewClient( - scw.WithEnv(), - scw.WithAuth(accessKey, secretKey), - scw.WithUserAgent("cert-manager-webhook-scaleway/"+util.GetVersion().Version), - ) - if err != nil { - return nil, fmt.Errorf("failed to initialize scaleway client: %w", err) - } - - domainAPI := domain.NewAPI(scwClient) - - return domainAPI, nil -} diff --git a/pkg/domain/domain.go b/pkg/domain/domain.go deleted file mode 100644 index d984d5b..0000000 --- a/pkg/domain/domain.go +++ /dev/null @@ -1,4393 +0,0 @@ -// This file was automatically generated. DO NOT EDIT. -// If you have any remark or suggestion do not hesitate to open an issue. - -// Package domain provides methods and message types of the domain v2beta1 API. -package domain - -import ( - "bytes" - "encoding/json" - "fmt" - "net" - "net/http" - "net/url" - "strings" - "time" - - "github.com/scaleway/scaleway-sdk-go/internal/errors" - "github.com/scaleway/scaleway-sdk-go/internal/marshaler" - "github.com/scaleway/scaleway-sdk-go/internal/parameter" - "github.com/scaleway/scaleway-sdk-go/namegenerator" - "github.com/scaleway/scaleway-sdk-go/scw" - std "github.com/scaleway/scaleway-sdk-go/api/std" -) - -// always import dependencies -var ( - _ fmt.Stringer - _ json.Unmarshaler - _ url.URL - _ net.IP - _ http.Header - _ bytes.Reader - _ time.Time - _ = strings.Join - - _ scw.ScalewayRequest - _ marshaler.Duration - _ scw.File - _ = parameter.AddToQuery - _ = namegenerator.GetRandomName -) - -type ContactEmailStatus string - -const ( - // If unspecified, the status is unknown by default. - ContactEmailStatusEmailStatusUnknown = ContactEmailStatus("email_status_unknown") - // The contact email has been validated. - ContactEmailStatusValidated = ContactEmailStatus("validated") - // The contact email has not been validated. - ContactEmailStatusNotValidated = ContactEmailStatus("not_validated") - // The contact email is invalid. - ContactEmailStatusInvalidEmail = ContactEmailStatus("invalid_email") -) - -func (enum ContactEmailStatus) String() string { - if enum == "" { - // return default value if empty - return "email_status_unknown" - } - return string(enum) -} - -func (enum ContactEmailStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ContactEmailStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ContactEmailStatus(ContactEmailStatus(tmp).String()) - return nil -} - -type ContactExtensionFRMode string - -const ( - // If unspecified, the status is unknown by default. - ContactExtensionFRModeModeUnknown = ContactExtensionFRMode("mode_unknown") - // The contact is a physical person (only for .fr domains). - ContactExtensionFRModeIndividual = ContactExtensionFRMode("individual") - // The contact is a company with a SIRET/SIREN code (only for .fr domains). - ContactExtensionFRModeCompanyIdentificationCode = ContactExtensionFRMode("company_identification_code") - // The contact has a Data Universal Numbering System code (only for .fr domains). - ContactExtensionFRModeDuns = ContactExtensionFRMode("duns") - // The contact has a local or a country ID (only for .fr domains). - ContactExtensionFRModeLocal = ContactExtensionFRMode("local") - // The contact is an association (only for .fr domains). - ContactExtensionFRModeAssociation = ContactExtensionFRMode("association") - // The contact is a brand (only for .fr domains). - ContactExtensionFRModeTrademark = ContactExtensionFRMode("trademark") - // The contact has an intervention code (DSIA) from AFNIC (only for .fr domains). - ContactExtensionFRModeCodeAuthAfnic = ContactExtensionFRMode("code_auth_afnic") -) - -func (enum ContactExtensionFRMode) String() string { - if enum == "" { - // return default value if empty - return "mode_unknown" - } - return string(enum) -} - -func (enum ContactExtensionFRMode) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ContactExtensionFRMode) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ContactExtensionFRMode(ContactExtensionFRMode(tmp).String()) - return nil -} - -type ContactExtensionNLLegalForm string - -const ( - // If unspecified, the status is unknown by default. - ContactExtensionNLLegalFormLegalFormUnknown = ContactExtensionNLLegalForm("legal_form_unknown") - // The contact's legal form is not listed below (only for .nl domains). - ContactExtensionNLLegalFormOther = ContactExtensionNLLegalForm("other") - // The contact is a non-Dutch EC company (only for .nl domains). - ContactExtensionNLLegalFormNonDutchEuCompany = ContactExtensionNLLegalForm("non_dutch_eu_company") - // The contact is a non-Dutch legal form/enterprise/subsidiary (only for .nl domains). - ContactExtensionNLLegalFormNonDutchLegalFormEnterpriseSubsidiary = ContactExtensionNLLegalForm("non_dutch_legal_form_enterprise_subsidiary") - // The contact is a limited company (only for .nl domains). - ContactExtensionNLLegalFormLimitedCompany = ContactExtensionNLLegalForm("limited_company") - // The contact is a limited company in formation (only for .nl domains). - ContactExtensionNLLegalFormLimitedCompanyInFormation = ContactExtensionNLLegalForm("limited_company_in_formation") - // The contact is a cooperative (only for .nl domains). - ContactExtensionNLLegalFormCooperative = ContactExtensionNLLegalForm("cooperative") - // The contact is a limited Partnership (only for .nl domains). - ContactExtensionNLLegalFormLimitedPartnership = ContactExtensionNLLegalForm("limited_partnership") - // The contact is a sole trader (only for .nl domains). - ContactExtensionNLLegalFormSoleCompany = ContactExtensionNLLegalForm("sole_company") - // The contact is a European Economic Interest Group (only for .nl domains). - ContactExtensionNLLegalFormEuropeanEconomicInterestGroup = ContactExtensionNLLegalForm("european_economic_interest_group") - // The contact is a religious society (only for .nl domains). - ContactExtensionNLLegalFormReligiousEntity = ContactExtensionNLLegalForm("religious_entity") - // The contact is a partnership (only for .nl domains). - ContactExtensionNLLegalFormPartnership = ContactExtensionNLLegalForm("partnership") - // The contact is a public Company (only for .nl domains). - ContactExtensionNLLegalFormPublicCompany = ContactExtensionNLLegalForm("public_company") - // The contact is a mutual benefit company (only for .nl domains). - ContactExtensionNLLegalFormMutualBenefitCompany = ContactExtensionNLLegalForm("mutual_benefit_company") - // The contact is a natural person (only for .nl domains). - ContactExtensionNLLegalFormResidential = ContactExtensionNLLegalForm("residential") - // The contact is a shipping company (only for .nl domains). - ContactExtensionNLLegalFormShippingCompany = ContactExtensionNLLegalForm("shipping_company") - // The contact is a foundation (only for .nl domains). - ContactExtensionNLLegalFormFoundation = ContactExtensionNLLegalForm("foundation") - // The contact is a association (only for .nl domains). - ContactExtensionNLLegalFormAssociation = ContactExtensionNLLegalForm("association") - // The contact is a trading partnership (only for .nl domains). - ContactExtensionNLLegalFormTradingPartnership = ContactExtensionNLLegalForm("trading_partnership") - // The contact is a physical person (only for .nl domains). - ContactExtensionNLLegalFormNaturalPerson = ContactExtensionNLLegalForm("natural_person") -) - -func (enum ContactExtensionNLLegalForm) String() string { - if enum == "" { - // return default value if empty - return "legal_form_unknown" - } - return string(enum) -} - -func (enum ContactExtensionNLLegalForm) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ContactExtensionNLLegalForm) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ContactExtensionNLLegalForm(ContactExtensionNLLegalForm(tmp).String()) - return nil -} - -type ContactLegalForm string - -const ( - // If unspecified, the status is unknown by default. - ContactLegalFormLegalFormUnknown = ContactLegalForm("legal_form_unknown") - // The contact is a physical person. - ContactLegalFormIndividual = ContactLegalForm("individual") - // The contact is a corporate or a society. - ContactLegalFormCorporate = ContactLegalForm("corporate") - // The contact is an association. - ContactLegalFormAssociation = ContactLegalForm("association") - // The contact is not represented by a physical person, a corporate or an association. - ContactLegalFormOther = ContactLegalForm("other") -) - -func (enum ContactLegalForm) String() string { - if enum == "" { - // return default value if empty - return "legal_form_unknown" - } - return string(enum) -} - -func (enum ContactLegalForm) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ContactLegalForm) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ContactLegalForm(ContactLegalForm(tmp).String()) - return nil -} - -type ContactStatus string - -const ( - // If unspecified, the status is unknown by default. - ContactStatusStatusUnknown = ContactStatus("status_unknown") - // The contact is active and can be edited. - ContactStatusActive = ContactStatus("active") - // The contact is temporarily locked (ie. while being edited). - ContactStatusPending = ContactStatus("pending") -) - -func (enum ContactStatus) String() string { - if enum == "" { - // return default value if empty - return "status_unknown" - } - return string(enum) -} - -func (enum ContactStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ContactStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ContactStatus(ContactStatus(tmp).String()) - return nil -} - -type DNSZoneStatus string - -const ( - // If unspecified, the DNS zone's status is unknown by default. - DNSZoneStatusUnknown = DNSZoneStatus("unknown") - // The DNS zone is active and healthy. - DNSZoneStatusActive = DNSZoneStatus("active") - // The DNS zone is updating. - DNSZoneStatusPending = DNSZoneStatus("pending") - // An error occurred after updating the DNS zone. - DNSZoneStatusError = DNSZoneStatus("error") - // The DNS zone is locked and cannot be updated anymore. - DNSZoneStatusLocked = DNSZoneStatus("locked") -) - -func (enum DNSZoneStatus) String() string { - if enum == "" { - // return default value if empty - return "unknown" - } - return string(enum) -} - -func (enum DNSZoneStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *DNSZoneStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = DNSZoneStatus(DNSZoneStatus(tmp).String()) - return nil -} - -type DSRecordAlgorithm string - -const ( - // Code 1, algorithm: 'RSAMD5'. - DSRecordAlgorithmRsamd5 = DSRecordAlgorithm("rsamd5") - // Code 2, algorithm: 'DIFFIE_HELLMAN'. - DSRecordAlgorithmDh = DSRecordAlgorithm("dh") - // Code 3, algorithm: 'DSA_SHA1'. - DSRecordAlgorithmDsa = DSRecordAlgorithm("dsa") - // Code 5, algorithm: 'RSA_SHA1'. - DSRecordAlgorithmRsasha1 = DSRecordAlgorithm("rsasha1") - // Code 6, algorithm: 'DSA_NSEC3_SHA1'. - DSRecordAlgorithmDsaNsec3Sha1 = DSRecordAlgorithm("dsa_nsec3_sha1") - // Code 7, algorithm: 'RSASHA1_NSEC3_SHA1'. - DSRecordAlgorithmRsasha1Nsec3Sha1 = DSRecordAlgorithm("rsasha1_nsec3_sha1") - // Code 8, algorithm: 'RSASHA256'. - DSRecordAlgorithmRsasha256 = DSRecordAlgorithm("rsasha256") - // Code 10, algorithm: 'RSASHA512'. - DSRecordAlgorithmRsasha512 = DSRecordAlgorithm("rsasha512") - // Code 12, algorithm: 'ECC_GOST'. - DSRecordAlgorithmEccGost = DSRecordAlgorithm("ecc_gost") - // Code 13, algorithm: 'ECDSAP256SHA256'. - DSRecordAlgorithmEcdsap256sha256 = DSRecordAlgorithm("ecdsap256sha256") - // Code 14, algorithm: 'ECDSAP384SHA384'. - DSRecordAlgorithmEcdsap384sha384 = DSRecordAlgorithm("ecdsap384sha384") - // Code 15, algorithm: 'ED25519'. - DSRecordAlgorithmEd25519 = DSRecordAlgorithm("ed25519") - // Code 16, algorithm: 'ED448'. - DSRecordAlgorithmEd448 = DSRecordAlgorithm("ed448") -) - -func (enum DSRecordAlgorithm) String() string { - if enum == "" { - // return default value if empty - return "rsamd5" - } - return string(enum) -} - -func (enum DSRecordAlgorithm) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *DSRecordAlgorithm) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = DSRecordAlgorithm(DSRecordAlgorithm(tmp).String()) - return nil -} - -type DSRecordDigestType string - -const ( - // Code 1, digest type: 'SHA_1'. - DSRecordDigestTypeSha1 = DSRecordDigestType("sha_1") - // Code 2, digest type: 'SHA_256'. - DSRecordDigestTypeSha256 = DSRecordDigestType("sha_256") - // Code 3, digest type: 'GOST_R_34_11_94'. - DSRecordDigestTypeGostR34_11_94 = DSRecordDigestType("gost_r_34_11_94") - // Code 4, digest type: 'SHA_384'. - DSRecordDigestTypeSha384 = DSRecordDigestType("sha_384") -) - -func (enum DSRecordDigestType) String() string { - if enum == "" { - // return default value if empty - return "sha_1" - } - return string(enum) -} - -func (enum DSRecordDigestType) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *DSRecordDigestType) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = DSRecordDigestType(DSRecordDigestType(tmp).String()) - return nil -} - -type DomainFeatureStatus string - -const ( - // Default unknown status. - DomainFeatureStatusFeatureStatusUnknown = DomainFeatureStatus("feature_status_unknown") - // A feature (auto renew, DNSSEC) is being enabled. - DomainFeatureStatusEnabling = DomainFeatureStatus("enabling") - // A feature (auto renew, DNSSEC) has been enabled. - DomainFeatureStatusEnabled = DomainFeatureStatus("enabled") - // A feature (auto renew, DNSSEC) is being disabled. - DomainFeatureStatusDisabling = DomainFeatureStatus("disabling") - // A feature (auto renew, DNSSEC) has been disabled. - DomainFeatureStatusDisabled = DomainFeatureStatus("disabled") -) - -func (enum DomainFeatureStatus) String() string { - if enum == "" { - // return default value if empty - return "feature_status_unknown" - } - return string(enum) -} - -func (enum DomainFeatureStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *DomainFeatureStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = DomainFeatureStatus(DomainFeatureStatus(tmp).String()) - return nil -} - -type DomainRegistrationStatusTransferStatus string - -const ( - // If unspecified, the status is unknown by default. - DomainRegistrationStatusTransferStatusStatusUnknown = DomainRegistrationStatusTransferStatus("status_unknown") - // The domain transfer is being initialized. - DomainRegistrationStatusTransferStatusPending = DomainRegistrationStatusTransferStatus("pending") - // The domain transfer has started. The process can be accelerated if you accept the vote. - DomainRegistrationStatusTransferStatusWaitingVote = DomainRegistrationStatusTransferStatus("waiting_vote") - // The domain transfer has been rejected. - DomainRegistrationStatusTransferStatusRejected = DomainRegistrationStatusTransferStatus("rejected") - // The domain transfer has been accepted. Your resources are being created. - DomainRegistrationStatusTransferStatusProcessing = DomainRegistrationStatusTransferStatus("processing") - // The domain transfer is complete. - DomainRegistrationStatusTransferStatusDone = DomainRegistrationStatusTransferStatus("done") -) - -func (enum DomainRegistrationStatusTransferStatus) String() string { - if enum == "" { - // return default value if empty - return "status_unknown" - } - return string(enum) -} - -func (enum DomainRegistrationStatusTransferStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *DomainRegistrationStatusTransferStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = DomainRegistrationStatusTransferStatus(DomainRegistrationStatusTransferStatus(tmp).String()) - return nil -} - -type DomainStatus string - -const ( - // If unspecified, the status is unknown by default. - DomainStatusStatusUnknown = DomainStatus("status_unknown") - // The domain is active. - DomainStatusActive = DomainStatus("active") - // The domain is in the process of being created. - DomainStatusCreating = DomainStatus("creating") - // An error occurred during the domain's creation process. - DomainStatusCreateError = DomainStatus("create_error") - // The domain is being renewed. - DomainStatusRenewing = DomainStatus("renewing") - // An error occurred during the domain's renewal process. - DomainStatusRenewError = DomainStatus("renew_error") - // The domain is being transferred to Scaleway Domains and DNS. - DomainStatusXfering = DomainStatus("xfering") - // An error occurred during the domain's transfer process. - DomainStatusXferError = DomainStatus("xfer_error") - // The domain is expired but it can be renewed. - DomainStatusExpired = DomainStatus("expired") - // The domain is expiring but it is still renewable. - DomainStatusExpiring = DomainStatus("expiring") - // The domain's information is updating. - DomainStatusUpdating = DomainStatus("updating") - // The external domain has not yet been validated. It will be automatically removed after 48 hours if it still has not been validated by then. - DomainStatusChecking = DomainStatus("checking") - // The domain is locked. Contact Scaleway's support team for more information. - DomainStatusLocked = DomainStatus("locked") - // The domain will be deleted soon. This process cannot be canceled. - DomainStatusDeleting = DomainStatus("deleting") -) - -func (enum DomainStatus) String() string { - if enum == "" { - // return default value if empty - return "status_unknown" - } - return string(enum) -} - -func (enum DomainStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *DomainStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = DomainStatus(DomainStatus(tmp).String()) - return nil -} - -type HostStatus string - -const ( - // If unspecified, the status is unknown by default. - HostStatusUnknownStatus = HostStatus("unknown_status") - // The host is active. - HostStatusActive = HostStatus("active") - // The host is being updated. - HostStatusUpdating = HostStatus("updating") - // The host is being deleted. - HostStatusDeleting = HostStatus("deleting") -) - -func (enum HostStatus) String() string { - if enum == "" { - // return default value if empty - return "unknown_status" - } - return string(enum) -} - -func (enum HostStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *HostStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = HostStatus(HostStatus(tmp).String()) - return nil -} - -type LinkedProduct string - -const ( - // If unspecified, no Scaleway product uses the resources. - LinkedProductUnknownProduct = LinkedProduct("unknown_product") - // Resources are used by Scaleway VPC. - LinkedProductVpc = LinkedProduct("vpc") -) - -func (enum LinkedProduct) String() string { - if enum == "" { - // return default value if empty - return "unknown_product" - } - return string(enum) -} - -func (enum LinkedProduct) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *LinkedProduct) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = LinkedProduct(LinkedProduct(tmp).String()) - return nil -} - -type ListContactsRequestRole string - -const ( - ListContactsRequestRoleUnknownRole = ListContactsRequestRole("unknown_role") - // The contact is a domain's owner. - ListContactsRequestRoleOwner = ListContactsRequestRole("owner") - // The contact is a domain's administrative contact. - ListContactsRequestRoleAdministrative = ListContactsRequestRole("administrative") - // The contact is a domain's technical contact. - ListContactsRequestRoleTechnical = ListContactsRequestRole("technical") -) - -func (enum ListContactsRequestRole) String() string { - if enum == "" { - // return default value if empty - return "unknown_role" - } - return string(enum) -} - -func (enum ListContactsRequestRole) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListContactsRequestRole) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListContactsRequestRole(ListContactsRequestRole(tmp).String()) - return nil -} - -type ListDNSZoneRecordsRequestOrderBy string - -const ( - // Order by record name (ascending). - ListDNSZoneRecordsRequestOrderByNameAsc = ListDNSZoneRecordsRequestOrderBy("name_asc") - // Order by record name (descending). - ListDNSZoneRecordsRequestOrderByNameDesc = ListDNSZoneRecordsRequestOrderBy("name_desc") -) - -func (enum ListDNSZoneRecordsRequestOrderBy) String() string { - if enum == "" { - // return default value if empty - return "name_asc" - } - return string(enum) -} - -func (enum ListDNSZoneRecordsRequestOrderBy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListDNSZoneRecordsRequestOrderBy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListDNSZoneRecordsRequestOrderBy(ListDNSZoneRecordsRequestOrderBy(tmp).String()) - return nil -} - -type ListDNSZonesRequestOrderBy string - -const ( - // Order by domain name (ascending). - ListDNSZonesRequestOrderByDomainAsc = ListDNSZonesRequestOrderBy("domain_asc") - // Order by domain name (descending). - ListDNSZonesRequestOrderByDomainDesc = ListDNSZonesRequestOrderBy("domain_desc") - // Order by subdomain name (ascending). - ListDNSZonesRequestOrderBySubdomainAsc = ListDNSZonesRequestOrderBy("subdomain_asc") - // Order by subdomain name (descending). - ListDNSZonesRequestOrderBySubdomainDesc = ListDNSZonesRequestOrderBy("subdomain_desc") - // Order by created date (ascending). - ListDNSZonesRequestOrderByCreatedAtAsc = ListDNSZonesRequestOrderBy("created_at_asc") - // Order by created date (descending). - ListDNSZonesRequestOrderByCreatedAtDesc = ListDNSZonesRequestOrderBy("created_at_desc") - // Order by updated date (ascending). - ListDNSZonesRequestOrderByUpdatedAtAsc = ListDNSZonesRequestOrderBy("updated_at_asc") - // Order by updated date (descending). - ListDNSZonesRequestOrderByUpdatedAtDesc = ListDNSZonesRequestOrderBy("updated_at_desc") -) - -func (enum ListDNSZonesRequestOrderBy) String() string { - if enum == "" { - // return default value if empty - return "domain_asc" - } - return string(enum) -} - -func (enum ListDNSZonesRequestOrderBy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListDNSZonesRequestOrderBy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListDNSZonesRequestOrderBy(ListDNSZonesRequestOrderBy(tmp).String()) - return nil -} - -type ListDomainsRequestOrderBy string - -const ( - // Order by domain name (ascending). - ListDomainsRequestOrderByDomainAsc = ListDomainsRequestOrderBy("domain_asc") - // Order by domain name (descending). - ListDomainsRequestOrderByDomainDesc = ListDomainsRequestOrderBy("domain_desc") -) - -func (enum ListDomainsRequestOrderBy) String() string { - if enum == "" { - // return default value if empty - return "domain_asc" - } - return string(enum) -} - -func (enum ListDomainsRequestOrderBy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListDomainsRequestOrderBy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListDomainsRequestOrderBy(ListDomainsRequestOrderBy(tmp).String()) - return nil -} - -type ListRenewableDomainsRequestOrderBy string - -const ( - // Order by domain name (ascending). - ListRenewableDomainsRequestOrderByDomainAsc = ListRenewableDomainsRequestOrderBy("domain_asc") - // Order by domain name (descending). - ListRenewableDomainsRequestOrderByDomainDesc = ListRenewableDomainsRequestOrderBy("domain_desc") -) - -func (enum ListRenewableDomainsRequestOrderBy) String() string { - if enum == "" { - // return default value if empty - return "domain_asc" - } - return string(enum) -} - -func (enum ListRenewableDomainsRequestOrderBy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListRenewableDomainsRequestOrderBy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListRenewableDomainsRequestOrderBy(ListRenewableDomainsRequestOrderBy(tmp).String()) - return nil -} - -type ListTasksRequestOrderBy string - -const ( - // Order by domain name (descending). - ListTasksRequestOrderByDomainDesc = ListTasksRequestOrderBy("domain_desc") - // Order by domain name (ascending). - ListTasksRequestOrderByDomainAsc = ListTasksRequestOrderBy("domain_asc") - // Order by type (ascending). - ListTasksRequestOrderByTypeAsc = ListTasksRequestOrderBy("type_asc") - // Order by type (descending). - ListTasksRequestOrderByTypeDesc = ListTasksRequestOrderBy("type_desc") - // Order by status (ascending). - ListTasksRequestOrderByStatusAsc = ListTasksRequestOrderBy("status_asc") - // Order by status (descending). - ListTasksRequestOrderByStatusDesc = ListTasksRequestOrderBy("status_desc") - // Order by updated date (ascending). - ListTasksRequestOrderByUpdatedAtAsc = ListTasksRequestOrderBy("updated_at_asc") - // Order by updated date (descending). - ListTasksRequestOrderByUpdatedAtDesc = ListTasksRequestOrderBy("updated_at_desc") -) - -func (enum ListTasksRequestOrderBy) String() string { - if enum == "" { - // return default value if empty - return "domain_desc" - } - return string(enum) -} - -func (enum ListTasksRequestOrderBy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListTasksRequestOrderBy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListTasksRequestOrderBy(ListTasksRequestOrderBy(tmp).String()) - return nil -} - -type ListTldsRequestOrderBy string - -const ( - // Order by TLD name (ascending). - ListTldsRequestOrderByNameAsc = ListTldsRequestOrderBy("name_asc") - // Order by TLD name (descending). - ListTldsRequestOrderByNameDesc = ListTldsRequestOrderBy("name_desc") -) - -func (enum ListTldsRequestOrderBy) String() string { - if enum == "" { - // return default value if empty - return "name_asc" - } - return string(enum) -} - -func (enum ListTldsRequestOrderBy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListTldsRequestOrderBy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListTldsRequestOrderBy(ListTldsRequestOrderBy(tmp).String()) - return nil -} - -type RawFormat string - -const ( - // If unspecified, the format is unknown by default. - RawFormatUnknownRawFormat = RawFormat("unknown_raw_format") - // Export the DNS zone in text bind format. - RawFormatBind = RawFormat("bind") -) - -func (enum RawFormat) String() string { - if enum == "" { - // return default value if empty - return "unknown_raw_format" - } - return string(enum) -} - -func (enum RawFormat) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *RawFormat) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = RawFormat(RawFormat(tmp).String()) - return nil -} - -type RecordHTTPServiceConfigStrategy string - -const ( - // Returns a random IP based of the list of IPs available. - RecordHTTPServiceConfigStrategyRandom = RecordHTTPServiceConfigStrategy("random") - // Based on the hash of bestwho, returns a random functioning IP out of the best IPs available. - RecordHTTPServiceConfigStrategyHashed = RecordHTTPServiceConfigStrategy("hashed") - // Return all functioning IPs available. - RecordHTTPServiceConfigStrategyAll = RecordHTTPServiceConfigStrategy("all") -) - -func (enum RecordHTTPServiceConfigStrategy) String() string { - if enum == "" { - // return default value if empty - return "random" - } - return string(enum) -} - -func (enum RecordHTTPServiceConfigStrategy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *RecordHTTPServiceConfigStrategy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = RecordHTTPServiceConfigStrategy(RecordHTTPServiceConfigStrategy(tmp).String()) - return nil -} - -type RecordType string - -const ( - // If unspecified, the record's type is unknown by default. - RecordTypeUnknown = RecordType("unknown") - // An A record contains an IP address. Example: '203.0.113.210'. - RecordTypeA = RecordType("A") - // An AAAA record contains an IPv6 address. Example: '2001:DB8:2000:bf0::1'. - RecordTypeAAAA = RecordType("AAAA") - // A CNAME record specifies the canonical name of a record. Example 'webserver-01.yourcompany.com'. - RecordTypeCNAME = RecordType("CNAME") - // A TXT record can be used to attach textual data to a domain. Example 'v=spf1 include:_spf.tem.scw.cloud -all'. - RecordTypeTXT = RecordType("TXT") - // SRV records can be used to encode the location and port of services on a domain name. Example : '20 443 sipdir.scaleway.example.com'. - RecordTypeSRV = RecordType("SRV") - // TLSA records are used to bind SSL/TLS certificates to named hosts and ports. - RecordTypeTLSA = RecordType("TLSA") - // An MX record specifies a mail exchanger host for a domain. Example '10 mx.example.net.'. - RecordTypeMX = RecordType("MX") - // Specifies nameservers for a domain. Example: 'ns1.yourcompany.com'. - RecordTypeNS = RecordType("NS") - // A reverse pointer is used to specify the hostname that belongs to an IP or an IPv6 address. Example: 'www.yourcompany.com.'. - RecordTypePTR = RecordType("PTR") - // A 'Certification Authority Authorization' record is used to specify certificate authorities that may issue certificates for a domain. Example: '0 issue ca.yourcompany.com'. - RecordTypeCAA = RecordType("CAA") - // The ALIAS pseudo-record type is supported to provide CNAME-like mechanisms on a zone's apex. - RecordTypeALIAS = RecordType("ALIAS") - // A LOC record is a way of expressing geographic location information for a domain name. It contains WGS84 latitude, longitude and altitude. Example: '51 56 0.123 N 5 54 0.000 E 4.00m 1.00m 10000.00m 10.00m'. - RecordTypeLOC = RecordType("LOC") - // An SSHFP record type is used for storing Secure Shell (SSH) fingerprints. Example: '2 1 123456789abcdef67890123456789abcdef67890'. - RecordTypeSSHFP = RecordType("SSHFP") - // A Hardware Info record is used to specify the CPU and operating system you are using. Example: 'i386 Linux'. - RecordTypeHINFO = RecordType("HINFO") - // A Responsible Person record stores the mailbox name and the more-information pointer. Example: 'michel.yourcompany.com michel.people.yourcompany.com', to indicate that michel@yourcompany.com is responsible and that more information about Michel is available by querying the `TXT` record of 'michel.people.yourcompany.com'. - RecordTypeRP = RecordType("RP") - // A URI record, is used to publish mappings from hostnames to URIs. Example: '10 1 'ftp://ftp.yourcompany.com/public'. - RecordTypeURI = RecordType("URI") - // DS records (Delegation Signer) are used to secure delegations (DNSSEC). Example: '2371 13 2 1F987CC6583E92DF0890718C42'. - RecordTypeDS = RecordType("DS") - // A Naming Authority Pointer record is used to set rules for how websites process requests. Example: '100 50 "s" "z3950+I2L+I2C" "" _z3950._tcp.yourcompany.com'. - RecordTypeNAPTR = RecordType("NAPTR") - // A DNAME record provides redirection from one part of the DNS name tree to another part of the DNS name tree. DNAME and CNAME records both cause a lookup to (potentially) return data corresponding to a different domain name from the queried domain name. Example: 'yourcompany.com'. - RecordTypeDNAME = RecordType("DNAME") -) - -func (enum RecordType) String() string { - if enum == "" { - // return default value if empty - return "unknown" - } - return string(enum) -} - -func (enum RecordType) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *RecordType) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = RecordType(RecordType(tmp).String()) - return nil -} - -type RenewableDomainStatus string - -const ( - // If unspecified, the status is unknown by default. - RenewableDomainStatusUnknown = RenewableDomainStatus("unknown") - // The domain can be renewed. - RenewableDomainStatusRenewable = RenewableDomainStatus("renewable") - // The domain is expired, but it still can be late renewed. - RenewableDomainStatusLateReneweable = RenewableDomainStatus("late_reneweable") - // The domain cannot be renewed. - RenewableDomainStatusNotRenewable = RenewableDomainStatus("not_renewable") -) - -func (enum RenewableDomainStatus) String() string { - if enum == "" { - // return default value if empty - return "unknown" - } - return string(enum) -} - -func (enum RenewableDomainStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *RenewableDomainStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = RenewableDomainStatus(RenewableDomainStatus(tmp).String()) - return nil -} - -type SSLCertificateStatus string - -const ( - // If unspecified, the SSL certificate's status is unknown by default. - SSLCertificateStatusUnknown = SSLCertificateStatus("unknown") - // The SSL certificate has been created but it has not been processed yet. - SSLCertificateStatusNew = SSLCertificateStatus("new") - // The SSL certificate's status is pending. - SSLCertificateStatusPending = SSLCertificateStatus("pending") - // The SSL certificate has been created and processed. - SSLCertificateStatusSuccess = SSLCertificateStatus("success") - // An error occurred during the SSL certificate's creation. - SSLCertificateStatusError = SSLCertificateStatus("error") -) - -func (enum SSLCertificateStatus) String() string { - if enum == "" { - // return default value if empty - return "unknown" - } - return string(enum) -} - -func (enum SSLCertificateStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *SSLCertificateStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = SSLCertificateStatus(SSLCertificateStatus(tmp).String()) - return nil -} - -type TaskStatus string - -const ( - // If unspecified, the status is unavailable by default. - TaskStatusUnavailable = TaskStatus("unavailable") - // The task has been created but it has not yet started. - TaskStatusNew = TaskStatus("new") - // The task is waiting for a payment to be validated. - TaskStatusWaitingPayment = TaskStatus("waiting_payment") - // The task is pending. - TaskStatusPending = TaskStatus("pending") - // The task has been completed. - TaskStatusSuccess = TaskStatus("success") - // The task is in an error state. - TaskStatusError = TaskStatus("error") -) - -func (enum TaskStatus) String() string { - if enum == "" { - // return default value if empty - return "unavailable" - } - return string(enum) -} - -func (enum TaskStatus) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *TaskStatus) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = TaskStatus(TaskStatus(tmp).String()) - return nil -} - -type TaskType string - -const ( - // If unspecified, the status is unknown by default. - TaskTypeUnknown = TaskType("unknown") - // Create a new internal domain. - TaskTypeCreateDomain = TaskType("create_domain") - // Create a new external domain. - TaskTypeCreateExternalDomain = TaskType("create_external_domain") - // Renew a domain. - TaskTypeRenewDomain = TaskType("renew_domain") - // Transfer a domain to Scaleway Domains and DNS. - TaskTypeTransferDomain = TaskType("transfer_domain") - // Trade a domain to a new owner. - TaskTypeTradeDomain = TaskType("trade_domain") - // Lock the transfer of a domain for protection. - TaskTypeLockDomainTransfer = TaskType("lock_domain_transfer") - // Unlock the transfer of a domain. - TaskTypeUnlockDomainTransfer = TaskType("unlock_domain_transfer") - // Enable DNSSEC for a domain. - TaskTypeEnableDnssec = TaskType("enable_dnssec") - // Disable DNSSEC for a domain. - TaskTypeDisableDnssec = TaskType("disable_dnssec") - // Update the domain's information. - TaskTypeUpdateDomain = TaskType("update_domain") - // Change the technical or administrative contact. - TaskTypeUpdateContact = TaskType("update_contact") - // Delete a domain and destroy its zone versions, zones, and SSL certificates. - TaskTypeDeleteDomain = TaskType("delete_domain") - // Cancel a task that has not yet started. - TaskTypeCancelTask = TaskType("cancel_task") - // Generate a new SSL certificate. - TaskTypeGenerateSslCertificate = TaskType("generate_ssl_certificate") - // Renew an SSL certificate. - TaskTypeRenewSslCertificate = TaskType("renew_ssl_certificate") - // Send a message. For most cases, it will be followed by an email. - TaskTypeSendMessage = TaskType("send_message") - // Delete a domain that has expired and not been restored for at least 3 months. - TaskTypeDeleteDomainExpired = TaskType("delete_domain_expired") - // Delete a newly registered external domain that has not been validated after 48 hours or when the external domain fails to point to our name servers for more than 14 days. - TaskTypeDeleteExternalDomain = TaskType("delete_external_domain") - // Create domain's hostname with glue IPs. - TaskTypeCreateHost = TaskType("create_host") - // Update domain's hostname with glue IPs. - TaskTypeUpdateHost = TaskType("update_host") - // Delete domain's hostname. - TaskTypeDeleteHost = TaskType("delete_host") - // Move a domain to another Project. - TaskTypeMoveProject = TaskType("move_project") - // Transfer a domain from Online to Scaleway Domains and DNS. - TaskTypeTransferOnlineDomain = TaskType("transfer_online_domain") -) - -func (enum TaskType) String() string { - if enum == "" { - // return default value if empty - return "unknown" - } - return string(enum) -} - -func (enum TaskType) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *TaskType) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = TaskType(TaskType(tmp).String()) - return nil -} - -// RecordGeoIPConfigMatch: record geo ip config match. -type RecordGeoIPConfigMatch struct { - Countries []string `json:"countries"` - - Continents []string `json:"continents"` - - Data string `json:"data"` -} - -// RecordViewConfigView: record view config view. -type RecordViewConfigView struct { - Subnet string `json:"subnet"` - - Data string `json:"data"` -} - -// RecordWeightedConfigWeightedIP: record weighted config weighted ip. -type RecordWeightedConfigWeightedIP struct { - IP net.IP `json:"ip"` - - Weight uint32 `json:"weight"` -} - -// DSRecordPublicKey: ds record public key. -type DSRecordPublicKey struct { - Key string `json:"key"` -} - -// RecordGeoIPConfig: record geo ip config. -type RecordGeoIPConfig struct { - Matches []*RecordGeoIPConfigMatch `json:"matches"` - - Default string `json:"default"` -} - -// RecordHTTPServiceConfig: record http service config. -type RecordHTTPServiceConfig struct { - IPs []net.IP `json:"ips"` - - MustContain *string `json:"must_contain"` - - URL string `json:"url"` - - UserAgent *string `json:"user_agent"` - - // Strategy: default value: random - Strategy RecordHTTPServiceConfigStrategy `json:"strategy"` -} - -// RecordViewConfig: record view config. -type RecordViewConfig struct { - Views []*RecordViewConfigView `json:"views"` -} - -// RecordWeightedConfig: record weighted config. -type RecordWeightedConfig struct { - WeightedIPs []*RecordWeightedConfigWeightedIP `json:"weighted_ips"` -} - -// ContactExtensionFRAssociationInfo: contact extension fr association info. -type ContactExtensionFRAssociationInfo struct { - PublicationJo *time.Time `json:"publication_jo"` - - PublicationJoPage uint32 `json:"publication_jo_page"` -} - -// ContactExtensionFRCodeAuthAfnicInfo: contact extension fr code auth afnic info. -type ContactExtensionFRCodeAuthAfnicInfo struct { - CodeAuthAfnic string `json:"code_auth_afnic"` -} - -// ContactExtensionFRDunsInfo: contact extension fr duns info. -type ContactExtensionFRDunsInfo struct { - DunsID string `json:"duns_id"` - - LocalID string `json:"local_id"` -} - -// ContactExtensionFRIndividualInfo: contact extension fr individual info. -type ContactExtensionFRIndividualInfo struct { - WhoisOptIn bool `json:"whois_opt_in"` -} - -// ContactExtensionFRTrademarkInfo: contact extension fr trademark info. -type ContactExtensionFRTrademarkInfo struct { - TrademarkInpi string `json:"trademark_inpi"` -} - -// DSRecordDigest: ds record digest. -type DSRecordDigest struct { - // Type: default value: sha_1 - Type DSRecordDigestType `json:"type"` - - Digest string `json:"digest"` - - PublicKey *DSRecordPublicKey `json:"public_key"` -} - -// Record: record. -type Record struct { - Data string `json:"data"` - - Name string `json:"name"` - - Priority uint32 `json:"priority"` - - TTL uint32 `json:"ttl"` - - // Type: default value: unknown - Type RecordType `json:"type"` - - Comment *string `json:"comment"` - - // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. - GeoIPConfig *RecordGeoIPConfig `json:"geo_ip_config,omitempty"` - - // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. - HTTPServiceConfig *RecordHTTPServiceConfig `json:"http_service_config,omitempty"` - - // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. - WeightedConfig *RecordWeightedConfig `json:"weighted_config,omitempty"` - - // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. - ViewConfig *RecordViewConfig `json:"view_config,omitempty"` - - ID string `json:"id"` -} - -// RecordIdentifier: record identifier. -type RecordIdentifier struct { - Name string `json:"name"` - - // Type: default value: unknown - Type RecordType `json:"type"` - - Data *string `json:"data"` - - TTL *uint32 `json:"ttl"` -} - -// ContactExtensionEU: contact extension eu. -type ContactExtensionEU struct { - EuropeanCitizenship string `json:"european_citizenship"` -} - -// ContactExtensionFR: contact extension fr. -type ContactExtensionFR struct { - // Mode: default value: mode_unknown - Mode ContactExtensionFRMode `json:"mode"` - - // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. - IndividualInfo *ContactExtensionFRIndividualInfo `json:"individual_info,omitempty"` - - // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. - DunsInfo *ContactExtensionFRDunsInfo `json:"duns_info,omitempty"` - - // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. - AssociationInfo *ContactExtensionFRAssociationInfo `json:"association_info,omitempty"` - - // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. - TrademarkInfo *ContactExtensionFRTrademarkInfo `json:"trademark_info,omitempty"` - - // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. - CodeAuthAfnicInfo *ContactExtensionFRCodeAuthAfnicInfo `json:"code_auth_afnic_info,omitempty"` -} - -// ContactExtensionNL: contact extension nl. -type ContactExtensionNL struct { - // LegalForm: default value: legal_form_unknown - LegalForm ContactExtensionNLLegalForm `json:"legal_form"` - - LegalFormRegistrationNumber string `json:"legal_form_registration_number"` -} - -// ContactQuestion: contact question. -type ContactQuestion struct { - Question string `json:"question"` - - Answer string `json:"answer"` -} - -// TldOffer: tld offer. -type TldOffer struct { - Action string `json:"action"` - - OperationPath string `json:"operation_path"` - - Price *scw.Money `json:"price"` -} - -// DSRecord: ds record. -type DSRecord struct { - KeyID uint32 `json:"key_id"` - - // Algorithm: default value: rsamd5 - Algorithm DSRecordAlgorithm `json:"algorithm"` - - // Precisely one of Digest, PublicKey must be set. - Digest *DSRecordDigest `json:"digest,omitempty"` - - // Precisely one of Digest, PublicKey must be set. - PublicKey *DSRecordPublicKey `json:"public_key,omitempty"` -} - -// RecordChangeAdd: record change add. -type RecordChangeAdd struct { - Records []*Record `json:"records"` -} - -// RecordChangeClear: record change clear. -type RecordChangeClear struct { -} - -// RecordChangeDelete: record change delete. -type RecordChangeDelete struct { - // Precisely one of ID, IDFields must be set. - ID *string `json:"id,omitempty"` - - // Precisely one of ID, IDFields must be set. - IDFields *RecordIdentifier `json:"id_fields,omitempty"` -} - -// RecordChangeSet: record change set. -type RecordChangeSet struct { - // Precisely one of ID, IDFields must be set. - ID *string `json:"id,omitempty"` - - // Precisely one of ID, IDFields must be set. - IDFields *RecordIdentifier `json:"id_fields,omitempty"` - - Records []*Record `json:"records"` -} - -// ImportRawDNSZoneRequestTsigKey: import raw dns zone request tsig key. -type ImportRawDNSZoneRequestTsigKey struct { - Name string `json:"name"` - - Key string `json:"key"` - - Algorithm string `json:"algorithm"` -} - -// Contact: contact. -type Contact struct { - ID string `json:"id"` - - // LegalForm: default value: legal_form_unknown - LegalForm ContactLegalForm `json:"legal_form"` - - Firstname string `json:"firstname"` - - Lastname string `json:"lastname"` - - CompanyName string `json:"company_name"` - - Email string `json:"email"` - - EmailAlt string `json:"email_alt"` - - PhoneNumber string `json:"phone_number"` - - FaxNumber string `json:"fax_number"` - - AddressLine1 string `json:"address_line_1"` - - AddressLine2 string `json:"address_line_2"` - - Zip string `json:"zip"` - - City string `json:"city"` - - Country string `json:"country"` - - VatIDentificationCode string `json:"vat_identification_code"` - - CompanyIDentificationCode string `json:"company_identification_code"` - - // Lang: default value: unknown_language_code - Lang std.LanguageCode `json:"lang"` - - Resale bool `json:"resale"` - - // Deprecated - Questions *[]*ContactQuestion `json:"questions,omitempty"` - - ExtensionFr *ContactExtensionFR `json:"extension_fr"` - - ExtensionEu *ContactExtensionEU `json:"extension_eu"` - - WhoisOptIn bool `json:"whois_opt_in"` - - // EmailStatus: default value: email_status_unknown - EmailStatus ContactEmailStatus `json:"email_status"` - - State string `json:"state"` - - ExtensionNl *ContactExtensionNL `json:"extension_nl"` - - // Status: default value: status_unknown - Status ContactStatus `json:"status"` -} - -// ContactRolesRoles: contact roles roles. -type ContactRolesRoles struct { - IsOwner bool `json:"is_owner"` - - IsAdministrative bool `json:"is_administrative"` - - IsTechnical bool `json:"is_technical"` -} - -// DomainRegistrationStatusExternalDomain: domain registration status external domain. -type DomainRegistrationStatusExternalDomain struct { - ValidationToken string `json:"validation_token"` -} - -// DomainRegistrationStatusTransfer: domain registration status transfer. -type DomainRegistrationStatusTransfer struct { - // Status: default value: status_unknown - Status DomainRegistrationStatusTransferStatus `json:"status"` - - VoteCurrentOwner bool `json:"vote_current_owner"` - - VoteNewOwner bool `json:"vote_new_owner"` -} - -// Tld: tld. -type Tld struct { - Name string `json:"name"` - - DnssecSupport bool `json:"dnssec_support"` - - DurationInYearsMin uint32 `json:"duration_in_years_min"` - - DurationInYearsMax uint32 `json:"duration_in_years_max"` - - IDnSupport bool `json:"idn_support"` - - Offers map[string]*TldOffer `json:"offers"` - - Specifications map[string]string `json:"specifications"` -} - -// NewContact: new contact. -type NewContact struct { - // LegalForm: default value: legal_form_unknown - LegalForm ContactLegalForm `json:"legal_form"` - - Firstname string `json:"firstname"` - - Lastname string `json:"lastname"` - - CompanyName *string `json:"company_name"` - - Email string `json:"email"` - - EmailAlt *string `json:"email_alt"` - - PhoneNumber string `json:"phone_number"` - - FaxNumber *string `json:"fax_number"` - - AddressLine1 string `json:"address_line_1"` - - AddressLine2 *string `json:"address_line_2"` - - Zip string `json:"zip"` - - City string `json:"city"` - - Country string `json:"country"` - - VatIDentificationCode *string `json:"vat_identification_code"` - - CompanyIDentificationCode *string `json:"company_identification_code"` - - // Lang: default value: unknown_language_code - Lang std.LanguageCode `json:"lang"` - - Resale bool `json:"resale"` - - // Deprecated - Questions *[]*ContactQuestion `json:"questions,omitempty"` - - ExtensionFr *ContactExtensionFR `json:"extension_fr"` - - ExtensionEu *ContactExtensionEU `json:"extension_eu"` - - WhoisOptIn bool `json:"whois_opt_in"` - - State *string `json:"state"` - - ExtensionNl *ContactExtensionNL `json:"extension_nl"` -} - -// CheckContactsCompatibilityResponseContactCheckResult: check contacts compatibility response contact check result. -type CheckContactsCompatibilityResponseContactCheckResult struct { - Compatible bool `json:"compatible"` - - ErrorMessage *string `json:"error_message"` -} - -// DNSZone: dns zone. -type DNSZone struct { - Domain string `json:"domain"` - - Subdomain string `json:"subdomain"` - - Ns []string `json:"ns"` - - NsDefault []string `json:"ns_default"` - - NsMaster []string `json:"ns_master"` - - // Status: default value: unknown - Status DNSZoneStatus `json:"status"` - - Message *string `json:"message"` - - UpdatedAt *time.Time `json:"updated_at"` - - ProjectID string `json:"project_id"` - - LinkedProducts []LinkedProduct `json:"linked_products"` -} - -// DomainDNSSEC: domain dnssec. -type DomainDNSSEC struct { - // Status: default value: feature_status_unknown - Status DomainFeatureStatus `json:"status"` - - DsRecords []*DSRecord `json:"ds_records"` -} - -// RecordChange: record change. -type RecordChange struct { - // Precisely one of Add, Set, Delete, Clear must be set. - Add *RecordChangeAdd `json:"add,omitempty"` - - // Precisely one of Add, Set, Delete, Clear must be set. - Set *RecordChangeSet `json:"set,omitempty"` - - // Precisely one of Add, Set, Delete, Clear must be set. - Delete *RecordChangeDelete `json:"delete,omitempty"` - - // Precisely one of Add, Set, Delete, Clear must be set. - Clear *RecordChangeClear `json:"clear,omitempty"` -} - -// ImportProviderDNSZoneRequestOnlineV1: import provider dns zone request online v1. -type ImportProviderDNSZoneRequestOnlineV1 struct { - Token string `json:"token"` -} - -// ImportRawDNSZoneRequestAXFRSource: import raw dns zone request axfr source. -type ImportRawDNSZoneRequestAXFRSource struct { - NameServer string `json:"name_server"` - - TsigKey *ImportRawDNSZoneRequestTsigKey `json:"tsig_key"` -} - -// ImportRawDNSZoneRequestBindSource: import raw dns zone request bind source. -type ImportRawDNSZoneRequestBindSource struct { - Content string `json:"content"` -} - -// ContactRoles: contact roles. -type ContactRoles struct { - Contact *Contact `json:"contact"` - - Roles map[string]*ContactRolesRoles `json:"roles"` -} - -// Nameserver: nameserver. -type Nameserver struct { - Name string `json:"name"` - - IP []string `json:"ip"` -} - -// DNSZoneVersion: dns zone version. -type DNSZoneVersion struct { - ID string `json:"id"` - - CreatedAt *time.Time `json:"created_at"` -} - -// Host: host. -type Host struct { - Domain string `json:"domain"` - - Name string `json:"name"` - - IPs []net.IP `json:"ips"` - - // Status: default value: unknown_status - Status HostStatus `json:"status"` -} - -// DomainSummary: domain summary. -type DomainSummary struct { - Domain string `json:"domain"` - - ProjectID string `json:"project_id"` - - // AutoRenewStatus: default value: feature_status_unknown - AutoRenewStatus DomainFeatureStatus `json:"auto_renew_status"` - - // DnssecStatus: default value: feature_status_unknown - DnssecStatus DomainFeatureStatus `json:"dnssec_status"` - - EppCode []string `json:"epp_code"` - - ExpiredAt *time.Time `json:"expired_at"` - - UpdatedAt *time.Time `json:"updated_at"` - - Registrar string `json:"registrar"` - - IsExternal bool `json:"is_external"` - - // Status: default value: status_unknown - Status DomainStatus `json:"status"` - - // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. - ExternalDomainRegistrationStatus *DomainRegistrationStatusExternalDomain `json:"external_domain_registration_status,omitempty"` - - // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. - TransferRegistrationStatus *DomainRegistrationStatusTransfer `json:"transfer_registration_status,omitempty"` - - OrganizationID string `json:"organization_id"` - - CreatedAt *time.Time `json:"created_at"` - - PendingTrade bool `json:"pending_trade"` -} - -// RenewableDomain: renewable domain. -type RenewableDomain struct { - Domain string `json:"domain"` - - ProjectID string `json:"project_id"` - - OrganizationID string `json:"organization_id"` - - // Status: default value: unknown - Status RenewableDomainStatus `json:"status"` - - RenewableDurationInYears *int32 `json:"renewable_duration_in_years"` - - ExpiredAt *time.Time `json:"expired_at"` - - LimitRenewAt *time.Time `json:"limit_renew_at"` - - LimitRedemptionAt *time.Time `json:"limit_redemption_at"` - - EstimatedDeleteAt *time.Time `json:"estimated_delete_at"` - - Tld *Tld `json:"tld"` -} - -// SSLCertificate: ssl certificate. -type SSLCertificate struct { - DNSZone string `json:"dns_zone"` - - AlternativeDNSZones []string `json:"alternative_dns_zones"` - - // Status: default value: unknown - Status SSLCertificateStatus `json:"status"` - - PrivateKey string `json:"private_key"` - - CertificateChain string `json:"certificate_chain"` - - CreatedAt *time.Time `json:"created_at"` - - ExpiredAt *time.Time `json:"expired_at"` -} - -// Task: task. -type Task struct { - // ID: the unique identifier of the task. - ID string `json:"id"` - - // ProjectID: the project ID associated to the task. - ProjectID string `json:"project_id"` - - // OrganizationID: the organization ID associated to the task. - OrganizationID string `json:"organization_id"` - - // Domain: the domain name associated to the task. - Domain *string `json:"domain"` - - // Type: the type of the task. - // Default value: unknown - Type TaskType `json:"type"` - - // Status: the status of the task. - // Default value: unavailable - Status TaskStatus `json:"status"` - - // StartedAt: start date of the task. - StartedAt *time.Time `json:"started_at"` - - // UpdatedAt: last update of the task. - UpdatedAt *time.Time `json:"updated_at"` - - // Message: error message associated to the task. - Message *string `json:"message"` - - // ContactIDentifier: human-friendly contact identifier used when the task concerns a contact. - ContactIDentifier *string `json:"contact_identifier"` -} - -// TransferInDomainRequestTransferRequest: transfer in domain request transfer request. -type TransferInDomainRequestTransferRequest struct { - Domain string `json:"domain"` - - AuthCode string `json:"auth_code"` -} - -// UpdateContactRequestQuestion: update contact request question. -type UpdateContactRequestQuestion struct { - Question *string `json:"question"` - - Answer *string `json:"answer"` -} - -// AvailableDomain: available domain. -type AvailableDomain struct { - Domain string `json:"domain"` - - Available bool `json:"available"` - - Tld *Tld `json:"tld"` -} - -// CheckContactsCompatibilityResponse: check contacts compatibility response. -type CheckContactsCompatibilityResponse struct { - Compatible bool `json:"compatible"` - - OwnerCheckResult *CheckContactsCompatibilityResponseContactCheckResult `json:"owner_check_result"` - - AdministrativeCheckResult *CheckContactsCompatibilityResponseContactCheckResult `json:"administrative_check_result"` - - TechnicalCheckResult *CheckContactsCompatibilityResponseContactCheckResult `json:"technical_check_result"` -} - -// ClearDNSZoneRecordsRequest: clear dns zone records request. -type ClearDNSZoneRecordsRequest struct { - // DNSZone: DNS zone to clear. - DNSZone string `json:"-"` -} - -// ClearDNSZoneRecordsResponse: clear dns zone records response. -type ClearDNSZoneRecordsResponse struct { -} - -// CloneDNSZoneRequest: clone dns zone request. -type CloneDNSZoneRequest struct { - // DNSZone: DNS zone to clone. - DNSZone string `json:"-"` - - // DestDNSZone: destination DNS zone in which to clone the chosen DNS zone. - DestDNSZone string `json:"dest_dns_zone"` - - // Overwrite: specifies whether or not the destination DNS zone will be overwritten. - Overwrite bool `json:"overwrite"` - - // ProjectID: project ID of the destination DNS zone. - ProjectID *string `json:"project_id,omitempty"` -} - -// CreateDNSZoneRequest: create dns zone request. -type CreateDNSZoneRequest struct { - // Domain: domain in which to crreate the DNS zone. - Domain string `json:"domain"` - - // Subdomain: subdomain of the DNS zone to create. - Subdomain string `json:"subdomain"` - - // ProjectID: project ID in which to create the DNS zone. - ProjectID string `json:"project_id"` -} - -// CreateSSLCertificateRequest: create ssl certificate request. -type CreateSSLCertificateRequest struct { - DNSZone string `json:"dns_zone"` - - AlternativeDNSZones []string `json:"alternative_dns_zones"` -} - -// DeleteDNSZoneRequest: delete dns zone request. -type DeleteDNSZoneRequest struct { - // DNSZone: DNS zone to delete. - DNSZone string `json:"-"` - - // ProjectID: project ID of the DNS zone to delete. - ProjectID string `json:"-"` -} - -// DeleteDNSZoneResponse: delete dns zone response. -type DeleteDNSZoneResponse struct { -} - -// DeleteDNSZoneTsigKeyRequest: delete dns zone tsig key request. -type DeleteDNSZoneTsigKeyRequest struct { - DNSZone string `json:"-"` -} - -// DeleteExternalDomainResponse: delete external domain response. -type DeleteExternalDomainResponse struct { -} - -// DeleteSSLCertificateRequest: delete ssl certificate request. -type DeleteSSLCertificateRequest struct { - DNSZone string `json:"-"` -} - -// DeleteSSLCertificateResponse: delete ssl certificate response. -type DeleteSSLCertificateResponse struct { -} - -// Domain: domain. -type Domain struct { - Domain string `json:"domain"` - - OrganizationID string `json:"organization_id"` - - ProjectID string `json:"project_id"` - - // AutoRenewStatus: status of the automatic renewal of the domain. - // Default value: feature_status_unknown - AutoRenewStatus DomainFeatureStatus `json:"auto_renew_status"` - - // Dnssec: status of the DNSSEC configuration of the domain. - Dnssec *DomainDNSSEC `json:"dnssec"` - - // EppCode: list of the domain's EPP codes. - EppCode []string `json:"epp_code"` - - // ExpiredAt: date of expiration of the domain. - ExpiredAt *time.Time `json:"expired_at"` - - // UpdatedAt: domain's last modification date. - UpdatedAt *time.Time `json:"updated_at"` - - Registrar string `json:"registrar"` - - // IsExternal: indicates whether Scaleway is the domain's registrar. - IsExternal bool `json:"is_external"` - - // Status: status of the domain. - // Default value: status_unknown - Status DomainStatus `json:"status"` - - // DNSZones: list of the domain's DNS zones. - DNSZones []*DNSZone `json:"dns_zones"` - - // OwnerContact: contact information of the domain's owner. - OwnerContact *Contact `json:"owner_contact"` - - // TechnicalContact: contact information of the domain's technical contact. - TechnicalContact *Contact `json:"technical_contact"` - - // AdministrativeContact: contact information of the domain's administrative contact. - AdministrativeContact *Contact `json:"administrative_contact"` - - // ExternalDomainRegistrationStatus: registration status of an external domain, if available. - // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. - ExternalDomainRegistrationStatus *DomainRegistrationStatusExternalDomain `json:"external_domain_registration_status,omitempty"` - - // TransferRegistrationStatus: status of a domain, when available for transfer. - // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. - TransferRegistrationStatus *DomainRegistrationStatusTransfer `json:"transfer_registration_status,omitempty"` - - // Tld: domain's TLD information. - Tld *Tld `json:"tld"` - - // LinkedProducts: list of Scaleway resources linked to the domain. - LinkedProducts []LinkedProduct `json:"linked_products"` - - // PendingTrade: indicates if a trade is ongoing. - PendingTrade bool `json:"pending_trade"` -} - -// ExportRawDNSZoneRequest: export raw dns zone request. -type ExportRawDNSZoneRequest struct { - // DNSZone: DNS zone to export. - DNSZone string `json:"-"` - - // Format: DNS zone format. - // Default value: unknown_raw_format - Format RawFormat `json:"-"` -} - -// GetDNSZoneTsigKeyRequest: get dns zone tsig key request. -type GetDNSZoneTsigKeyRequest struct { - DNSZone string `json:"-"` -} - -// GetDNSZoneTsigKeyResponse: get dns zone tsig key response. -type GetDNSZoneTsigKeyResponse struct { - Name string `json:"name"` - - Key string `json:"key"` - - Algorithm string `json:"algorithm"` -} - -// GetDNSZoneVersionDiffRequest: get dns zone version diff request. -type GetDNSZoneVersionDiffRequest struct { - DNSZoneVersionID string `json:"-"` -} - -// GetDNSZoneVersionDiffResponse: get dns zone version diff response. -type GetDNSZoneVersionDiffResponse struct { - Changes []*RecordChange `json:"changes"` -} - -// GetDomainAuthCodeResponse: get domain auth code response. -type GetDomainAuthCodeResponse struct { - AuthCode string `json:"auth_code"` -} - -// GetSSLCertificateRequest: get ssl certificate request. -type GetSSLCertificateRequest struct { - DNSZone string `json:"-"` -} - -// ImportProviderDNSZoneRequest: import provider dns zone request. -type ImportProviderDNSZoneRequest struct { - DNSZone string `json:"-"` - - // Precisely one of OnlineV1 must be set. - OnlineV1 *ImportProviderDNSZoneRequestOnlineV1 `json:"online_v1,omitempty"` -} - -// ImportProviderDNSZoneResponse: import provider dns zone response. -type ImportProviderDNSZoneResponse struct { - Records []*Record `json:"records"` -} - -// ImportRawDNSZoneRequest: import raw dns zone request. -type ImportRawDNSZoneRequest struct { - // DNSZone: DNS zone to import. - DNSZone string `json:"-"` - - // Deprecated - Content *string `json:"content,omitempty"` - - ProjectID string `json:"project_id"` - - // Deprecated: Format: default value: unknown_raw_format - Format *RawFormat `json:"format,omitempty"` - - // BindSource: import a bind file format. - // Precisely one of BindSource, AxfrSource must be set. - BindSource *ImportRawDNSZoneRequestBindSource `json:"bind_source,omitempty"` - - // AxfrSource: import from the name server given with TSIG, to use or not. - // Precisely one of BindSource, AxfrSource must be set. - AxfrSource *ImportRawDNSZoneRequestAXFRSource `json:"axfr_source,omitempty"` -} - -// ImportRawDNSZoneResponse: import raw dns zone response. -type ImportRawDNSZoneResponse struct { - Records []*Record `json:"records"` -} - -// ListContactsResponse: list contacts response. -type ListContactsResponse struct { - TotalCount uint32 `json:"total_count"` - - Contacts []*ContactRoles `json:"contacts"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListContactsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListContactsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListContactsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Contacts = append(r.Contacts, results.Contacts...) - r.TotalCount += uint32(len(results.Contacts)) - return uint32(len(results.Contacts)), nil -} - -// ListDNSZoneNameserversRequest: list dns zone nameservers request. -type ListDNSZoneNameserversRequest struct { - // DNSZone: DNS zone on which to filter the returned DNS zone name servers. - DNSZone string `json:"-"` - - // ProjectID: project ID on which to filter the returned DNS zone name servers. - ProjectID *string `json:"-"` -} - -// ListDNSZoneNameserversResponse: list dns zone nameservers response. -type ListDNSZoneNameserversResponse struct { - // Ns: DNS zone name servers returned. - Ns []*Nameserver `json:"ns"` -} - -// ListDNSZoneRecordsRequest: list dns zone records request. -type ListDNSZoneRecordsRequest struct { - // DNSZone: DNS zone on which to filter the returned DNS zone records. - DNSZone string `json:"-"` - - // ProjectID: project ID on which to filter the returned DNS zone records. - ProjectID *string `json:"-"` - - // OrderBy: sort order of the returned DNS zone records. - // Default value: name_asc - OrderBy ListDNSZoneRecordsRequestOrderBy `json:"-"` - - // Page: page number to return, from the paginated results. - Page *int32 `json:"-"` - - // PageSize: maximum number of DNS zone records per page. - PageSize *uint32 `json:"-"` - - // Name: name on which to filter the returned DNS zone records. - Name string `json:"-"` - - // Type: record type on which to filter the returned DNS zone records. - // Default value: unknown - Type RecordType `json:"-"` - - // ID: record ID on which to filter the returned DNS zone records. - ID *string `json:"-"` -} - -// ListDNSZoneRecordsResponse: list dns zone records response. -type ListDNSZoneRecordsResponse struct { - // TotalCount: total number of DNS zone records. - TotalCount uint32 `json:"total_count"` - - // Records: paginated returned DNS zone records. - Records []*Record `json:"records"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListDNSZoneRecordsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListDNSZoneRecordsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListDNSZoneRecordsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Records = append(r.Records, results.Records...) - r.TotalCount += uint32(len(results.Records)) - return uint32(len(results.Records)), nil -} - -// ListDNSZoneVersionRecordsRequest: list dns zone version records request. -type ListDNSZoneVersionRecordsRequest struct { - DNSZoneVersionID string `json:"-"` - - // Page: page number to return, from the paginated results. - Page *int32 `json:"-"` - - // PageSize: maximum number of DNS zones versions records per page. - PageSize *uint32 `json:"-"` -} - -// ListDNSZoneVersionRecordsResponse: list dns zone version records response. -type ListDNSZoneVersionRecordsResponse struct { - // TotalCount: total number of DNS zones versions records. - TotalCount uint32 `json:"total_count"` - - Records []*Record `json:"records"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListDNSZoneVersionRecordsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListDNSZoneVersionRecordsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListDNSZoneVersionRecordsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Records = append(r.Records, results.Records...) - r.TotalCount += uint32(len(results.Records)) - return uint32(len(results.Records)), nil -} - -// ListDNSZoneVersionsRequest: list dns zone versions request. -type ListDNSZoneVersionsRequest struct { - DNSZone string `json:"-"` - - // Page: page number to return, from the paginated results. - Page *int32 `json:"-"` - - // PageSize: maximum number of DNS zones versions per page. - PageSize *uint32 `json:"-"` -} - -// ListDNSZoneVersionsResponse: list dns zone versions response. -type ListDNSZoneVersionsResponse struct { - // TotalCount: total number of DNS zones versions. - TotalCount uint32 `json:"total_count"` - - Versions []*DNSZoneVersion `json:"versions"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListDNSZoneVersionsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListDNSZoneVersionsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListDNSZoneVersionsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Versions = append(r.Versions, results.Versions...) - r.TotalCount += uint32(len(results.Versions)) - return uint32(len(results.Versions)), nil -} - -// ListDNSZonesRequest: list dns zones request. -type ListDNSZonesRequest struct { - // OrganizationID: organization ID on which to filter the returned DNS zones. - OrganizationID *string `json:"-"` - - // ProjectID: project ID on which to filter the returned DNS zones. - ProjectID *string `json:"-"` - - // OrderBy: sort order of the returned DNS zones. - // Default value: domain_asc - OrderBy ListDNSZonesRequestOrderBy `json:"-"` - - // Page: page number to return, from the paginated results. - Page *int32 `json:"-"` - - // PageSize: maximum number of DNS zones to return per page. - PageSize *uint32 `json:"-"` - - // Domain: domain on which to filter the returned DNS zones. - Domain string `json:"-"` - - // Deprecated: DNSZone: DNS zone on which to filter the returned DNS zones. - DNSZone *string `json:"-"` - - // DNSZones: DNS zones on which to filter the returned DNS zones. - DNSZones []string `json:"-"` - - // CreatedAfter: only list DNS zones created after this date. - CreatedAfter *time.Time `json:"-"` - - // CreatedBefore: only list DNS zones created before this date. - CreatedBefore *time.Time `json:"-"` - - // UpdatedAfter: only list DNS zones updated after this date. - UpdatedAfter *time.Time `json:"-"` - - // UpdatedBefore: only list DNS zones updated before this date. - UpdatedBefore *time.Time `json:"-"` -} - -// ListDNSZonesResponse: list dns zones response. -type ListDNSZonesResponse struct { - // TotalCount: total number of DNS zones matching the requested criteria. - TotalCount uint32 `json:"total_count"` - - // DNSZones: paginated returned DNS zones. - DNSZones []*DNSZone `json:"dns_zones"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListDNSZonesResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListDNSZonesResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListDNSZonesResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.DNSZones = append(r.DNSZones, results.DNSZones...) - r.TotalCount += uint32(len(results.DNSZones)) - return uint32(len(results.DNSZones)), nil -} - -// ListDomainHostsResponse: list domain hosts response. -type ListDomainHostsResponse struct { - TotalCount uint32 `json:"total_count"` - - Hosts []*Host `json:"hosts"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListDomainHostsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListDomainHostsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListDomainHostsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Hosts = append(r.Hosts, results.Hosts...) - r.TotalCount += uint32(len(results.Hosts)) - return uint32(len(results.Hosts)), nil -} - -// ListDomainsResponse: list domains response. -type ListDomainsResponse struct { - TotalCount uint32 `json:"total_count"` - - Domains []*DomainSummary `json:"domains"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListDomainsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListDomainsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Domains = append(r.Domains, results.Domains...) - r.TotalCount += uint32(len(results.Domains)) - return uint32(len(results.Domains)), nil -} - -// ListRenewableDomainsResponse: list renewable domains response. -type ListRenewableDomainsResponse struct { - TotalCount uint32 `json:"total_count"` - - Domains []*RenewableDomain `json:"domains"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListRenewableDomainsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListRenewableDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListRenewableDomainsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Domains = append(r.Domains, results.Domains...) - r.TotalCount += uint32(len(results.Domains)) - return uint32(len(results.Domains)), nil -} - -// ListSSLCertificatesRequest: list ssl certificates request. -type ListSSLCertificatesRequest struct { - DNSZone string `json:"-"` - - Page *int32 `json:"-"` - - PageSize *uint32 `json:"-"` - - ProjectID *string `json:"-"` -} - -// ListSSLCertificatesResponse: list ssl certificates response. -type ListSSLCertificatesResponse struct { - TotalCount uint32 `json:"total_count"` - - Certificates []*SSLCertificate `json:"certificates"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListSSLCertificatesResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListSSLCertificatesResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListSSLCertificatesResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Certificates = append(r.Certificates, results.Certificates...) - r.TotalCount += uint32(len(results.Certificates)) - return uint32(len(results.Certificates)), nil -} - -// ListTasksResponse: list tasks response. -type ListTasksResponse struct { - TotalCount uint32 `json:"total_count"` - - Tasks []*Task `json:"tasks"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListTasksResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListTasksResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListTasksResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Tasks = append(r.Tasks, results.Tasks...) - r.TotalCount += uint32(len(results.Tasks)) - return uint32(len(results.Tasks)), nil -} - -// ListTldsResponse: list tlds response. -type ListTldsResponse struct { - // Tlds: array of TLDs. - Tlds []*Tld `json:"tlds"` - - // TotalCount: total count of TLDs returned. - TotalCount uint64 `json:"total_count"` -} - -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListTldsResponse) UnsafeGetTotalCount() uint64 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListTldsResponse) UnsafeAppend(res interface{}) (uint64, error) { - results, ok := res.(*ListTldsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Tlds = append(r.Tlds, results.Tlds...) - r.TotalCount += uint64(len(results.Tlds)) - return uint64(len(results.Tlds)), nil -} - -// OrderResponse: order response. -type OrderResponse struct { - Domains []string `json:"domains"` - - OrganizationID string `json:"organization_id"` - - ProjectID string `json:"project_id"` - - TaskID string `json:"task_id"` - - CreatedAt *time.Time `json:"created_at"` -} - -// RefreshDNSZoneRequest: refresh dns zone request. -type RefreshDNSZoneRequest struct { - // DNSZone: DNS zone to refresh. - DNSZone string `json:"-"` - - // RecreateDNSZone: specifies whether or not to recreate the DNS zone. - RecreateDNSZone bool `json:"recreate_dns_zone"` - - // RecreateSubDNSZone: specifies whether or not to recreate the sub DNS zone. - RecreateSubDNSZone bool `json:"recreate_sub_dns_zone"` -} - -// RefreshDNSZoneResponse: refresh dns zone response. -type RefreshDNSZoneResponse struct { - // DNSZones: DNS zones returned. - DNSZones []*DNSZone `json:"dns_zones"` -} - -// RegisterExternalDomainResponse: register external domain response. -type RegisterExternalDomainResponse struct { - Domain string `json:"domain"` - - OrganizationID string `json:"organization_id"` - - ValidationToken string `json:"validation_token"` - - CreatedAt *time.Time `json:"created_at"` - - ProjectID string `json:"project_id"` -} - -// RegistrarAPIBuyDomainsRequest: registrar api buy domains request. -type RegistrarAPIBuyDomainsRequest struct { - Domains []string `json:"domains"` - - DurationInYears uint32 `json:"duration_in_years"` - - ProjectID string `json:"project_id"` - - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContactID *string `json:"owner_contact_id,omitempty"` - - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContact *NewContact `json:"owner_contact,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContactID *string `json:"technical_contact_id,omitempty"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContact *NewContact `json:"technical_contact,omitempty"` -} - -// RegistrarAPICheckContactsCompatibilityRequest: registrar api check contacts compatibility request. -type RegistrarAPICheckContactsCompatibilityRequest struct { - Domains []string `json:"domains"` - - Tlds []string `json:"tlds"` - - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContactID *string `json:"owner_contact_id,omitempty"` - - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContact *NewContact `json:"owner_contact,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContactID *string `json:"technical_contact_id,omitempty"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContact *NewContact `json:"technical_contact,omitempty"` -} - -// RegistrarAPICreateDomainHostRequest: registrar api create domain host request. -type RegistrarAPICreateDomainHostRequest struct { - Domain string `json:"-"` - - Name string `json:"name"` - - IPs []net.IP `json:"ips"` -} - -// RegistrarAPIDeleteDomainHostRequest: registrar api delete domain host request. -type RegistrarAPIDeleteDomainHostRequest struct { - Domain string `json:"-"` - - Name string `json:"-"` -} - -// RegistrarAPIDeleteExternalDomainRequest: registrar api delete external domain request. -type RegistrarAPIDeleteExternalDomainRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIDisableDomainAutoRenewRequest: registrar api disable domain auto renew request. -type RegistrarAPIDisableDomainAutoRenewRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIDisableDomainDNSSECRequest: registrar api disable domain dnssec request. -type RegistrarAPIDisableDomainDNSSECRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIEnableDomainAutoRenewRequest: registrar api enable domain auto renew request. -type RegistrarAPIEnableDomainAutoRenewRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIEnableDomainDNSSECRequest: registrar api enable domain dnssec request. -type RegistrarAPIEnableDomainDNSSECRequest struct { - Domain string `json:"-"` - - DsRecord *DSRecord `json:"ds_record,omitempty"` -} - -// RegistrarAPIGetContactRequest: registrar api get contact request. -type RegistrarAPIGetContactRequest struct { - ContactID string `json:"-"` -} - -// RegistrarAPIGetDomainAuthCodeRequest: registrar api get domain auth code request. -type RegistrarAPIGetDomainAuthCodeRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIGetDomainRequest: registrar api get domain request. -type RegistrarAPIGetDomainRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIListContactsRequest: registrar api list contacts request. -type RegistrarAPIListContactsRequest struct { - Page *int32 `json:"-"` - - PageSize *uint32 `json:"-"` - - Domain *string `json:"-"` - - ProjectID *string `json:"-"` - - OrganizationID *string `json:"-"` - - // Role: default value: unknown_role - Role ListContactsRequestRole `json:"-"` - - // EmailStatus: default value: email_status_unknown - EmailStatus ContactEmailStatus `json:"-"` -} - -// RegistrarAPIListDomainHostsRequest: registrar api list domain hosts request. -type RegistrarAPIListDomainHostsRequest struct { - Domain string `json:"-"` - - Page *int32 `json:"-"` - - PageSize *uint32 `json:"-"` -} - -// RegistrarAPIListDomainsRequest: registrar api list domains request. -type RegistrarAPIListDomainsRequest struct { - Page *int32 `json:"-"` - - PageSize *uint32 `json:"-"` - - // OrderBy: default value: domain_asc - OrderBy ListDomainsRequestOrderBy `json:"-"` - - Registrar *string `json:"-"` - - // Status: default value: status_unknown - Status DomainStatus `json:"-"` - - ProjectID *string `json:"-"` - - OrganizationID *string `json:"-"` - - IsExternal *bool `json:"-"` - - Domain *string `json:"-"` -} - -// RegistrarAPIListRenewableDomainsRequest: registrar api list renewable domains request. -type RegistrarAPIListRenewableDomainsRequest struct { - Page *int32 `json:"-"` - - PageSize *uint32 `json:"-"` - - // OrderBy: default value: domain_asc - OrderBy ListRenewableDomainsRequestOrderBy `json:"-"` - - ProjectID *string `json:"-"` - - OrganizationID *string `json:"-"` -} - -// RegistrarAPIListTasksRequest: registrar api list tasks request. -type RegistrarAPIListTasksRequest struct { - Page *int32 `json:"-"` - - PageSize *uint32 `json:"-"` - - ProjectID *string `json:"-"` - - OrganizationID *string `json:"-"` - - Domain *string `json:"-"` - - Types []TaskType `json:"-"` - - Statuses []TaskStatus `json:"-"` - - // OrderBy: default value: domain_desc - OrderBy ListTasksRequestOrderBy `json:"-"` -} - -// RegistrarAPIListTldsRequest: registrar api list tlds request. -type RegistrarAPIListTldsRequest struct { - // Tlds: array of TLDs to return. - Tlds []string `json:"-"` - - // Page: page number for the returned Projects. - Page *int32 `json:"-"` - - // PageSize: maximum number of Project per page. - PageSize *uint32 `json:"-"` - - // OrderBy: sort order of the returned TLDs. - // Default value: name_asc - OrderBy ListTldsRequestOrderBy `json:"-"` -} - -// RegistrarAPILockDomainTransferRequest: registrar api lock domain transfer request. -type RegistrarAPILockDomainTransferRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIRegisterExternalDomainRequest: registrar api register external domain request. -type RegistrarAPIRegisterExternalDomainRequest struct { - Domain string `json:"domain"` - - ProjectID string `json:"project_id"` -} - -// RegistrarAPIRenewDomainsRequest: registrar api renew domains request. -type RegistrarAPIRenewDomainsRequest struct { - Domains []string `json:"domains"` - - DurationInYears uint32 `json:"duration_in_years"` - - ForceLateRenewal *bool `json:"force_late_renewal,omitempty"` -} - -// RegistrarAPISearchAvailableDomainsRequest: registrar api search available domains request. -type RegistrarAPISearchAvailableDomainsRequest struct { - // Domains: a list of domain to search, TLD is optional. - Domains []string `json:"-"` - - // Tlds: array of tlds to search on. - Tlds []string `json:"-"` - - // StrictSearch: search exact match. - StrictSearch bool `json:"-"` -} - -// RegistrarAPITradeDomainRequest: registrar api trade domain request. -type RegistrarAPITradeDomainRequest struct { - Domain string `json:"-"` - - ProjectID *string `json:"project_id,omitempty"` - - // Precisely one of NewOwnerContactID, NewOwnerContact must be set. - NewOwnerContactID *string `json:"new_owner_contact_id,omitempty"` - - // Precisely one of NewOwnerContactID, NewOwnerContact must be set. - NewOwnerContact *NewContact `json:"new_owner_contact,omitempty"` -} - -// RegistrarAPITransferInDomainRequest: registrar api transfer in domain request. -type RegistrarAPITransferInDomainRequest struct { - Domains []*TransferInDomainRequestTransferRequest `json:"domains"` - - ProjectID string `json:"project_id"` - - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContactID *string `json:"owner_contact_id,omitempty"` - - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContact *NewContact `json:"owner_contact,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContactID *string `json:"technical_contact_id,omitempty"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContact *NewContact `json:"technical_contact,omitempty"` -} - -// RegistrarAPIUnlockDomainTransferRequest: registrar api unlock domain transfer request. -type RegistrarAPIUnlockDomainTransferRequest struct { - Domain string `json:"-"` -} - -// RegistrarAPIUpdateContactRequest: registrar api update contact request. -type RegistrarAPIUpdateContactRequest struct { - ContactID string `json:"-"` - - Email *string `json:"email,omitempty"` - - EmailAlt *string `json:"email_alt,omitempty"` - - PhoneNumber *string `json:"phone_number,omitempty"` - - FaxNumber *string `json:"fax_number,omitempty"` - - AddressLine1 *string `json:"address_line_1,omitempty"` - - AddressLine2 *string `json:"address_line_2,omitempty"` - - Zip *string `json:"zip,omitempty"` - - City *string `json:"city,omitempty"` - - Country *string `json:"country,omitempty"` - - VatIDentificationCode *string `json:"vat_identification_code,omitempty"` - - CompanyIDentificationCode *string `json:"company_identification_code,omitempty"` - - // Lang: default value: unknown_language_code - Lang std.LanguageCode `json:"lang"` - - Resale *bool `json:"resale,omitempty"` - - // Deprecated - Questions *[]*UpdateContactRequestQuestion `json:"questions,omitempty"` - - ExtensionFr *ContactExtensionFR `json:"extension_fr,omitempty"` - - ExtensionEu *ContactExtensionEU `json:"extension_eu,omitempty"` - - WhoisOptIn *bool `json:"whois_opt_in,omitempty"` - - State *string `json:"state,omitempty"` - - ExtensionNl *ContactExtensionNL `json:"extension_nl,omitempty"` -} - -// RegistrarAPIUpdateDomainHostRequest: registrar api update domain host request. -type RegistrarAPIUpdateDomainHostRequest struct { - Domain string `json:"-"` - - Name string `json:"-"` - - IPs *[]string `json:"ips,omitempty"` -} - -// RegistrarAPIUpdateDomainRequest: registrar api update domain request. -type RegistrarAPIUpdateDomainRequest struct { - Domain string `json:"-"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContactID *string `json:"technical_contact_id,omitempty"` - - // Precisely one of TechnicalContactID, TechnicalContact must be set. - TechnicalContact *NewContact `json:"technical_contact,omitempty"` - - // Deprecated - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContactID *string `json:"owner_contact_id,omitempty"` - - // Deprecated - // Precisely one of OwnerContactID, OwnerContact must be set. - OwnerContact *NewContact `json:"owner_contact,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` - - // Precisely one of AdministrativeContactID, AdministrativeContact must be set. - AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` -} - -// RestoreDNSZoneVersionRequest: restore dns zone version request. -type RestoreDNSZoneVersionRequest struct { - DNSZoneVersionID string `json:"-"` -} - -// RestoreDNSZoneVersionResponse: restore dns zone version response. -type RestoreDNSZoneVersionResponse struct { -} - -// SearchAvailableDomainsResponse: search available domains response. -type SearchAvailableDomainsResponse struct { - // AvailableDomains: array of available domains. - AvailableDomains []*AvailableDomain `json:"available_domains"` -} - -// UpdateDNSZoneNameserversRequest: update dns zone nameservers request. -type UpdateDNSZoneNameserversRequest struct { - // DNSZone: DNS zone in which to update the DNS zone name servers. - DNSZone string `json:"-"` - - // Ns: new DNS zone name servers. - Ns []*Nameserver `json:"ns"` -} - -// UpdateDNSZoneNameserversResponse: update dns zone nameservers response. -type UpdateDNSZoneNameserversResponse struct { - // Ns: DNS zone name servers returned. - Ns []*Nameserver `json:"ns"` -} - -// UpdateDNSZoneRecordsRequest: update dns zone records request. -type UpdateDNSZoneRecordsRequest struct { - // DNSZone: DNS zone in which to update the DNS zone records. - DNSZone string `json:"-"` - - // Changes: changes made to the records. - Changes []*RecordChange `json:"changes"` - - // ReturnAllRecords: specifies whether or not to return all the records. - ReturnAllRecords *bool `json:"return_all_records,omitempty"` - - // DisallowNewZoneCreation: disable the creation of the target zone if it does not exist. Target zone creation is disabled by default. - DisallowNewZoneCreation bool `json:"disallow_new_zone_creation"` - - // Serial: use the provided serial (0) instead of the auto-increment serial. - Serial *uint64 `json:"serial,omitempty"` -} - -// UpdateDNSZoneRecordsResponse: update dns zone records response. -type UpdateDNSZoneRecordsResponse struct { - // Records: DNS zone records returned. - Records []*Record `json:"records"` -} - -// UpdateDNSZoneRequest: update dns zone request. -type UpdateDNSZoneRequest struct { - // DNSZone: DNS zone to update. - DNSZone string `json:"-"` - - // NewDNSZone: name of the new DNS zone to create. - NewDNSZone *string `json:"new_dns_zone,omitempty"` - - // ProjectID: project ID in which to create the new DNS zone. - ProjectID string `json:"project_id"` -} - -// Manage your domains, DNS zones and records with the Domains and DNS API. -type API struct { - client *scw.Client -} - -// NewAPI returns a API object from a Scaleway client. -func NewAPI(client *scw.Client) *API { - return &API{ - client: client, - } -} - -// ListDNSZones: Retrieve the list of DNS zones you can manage and filter DNS zones associated with specific domain names. -func (s *API) ListDNSZones(req *ListDNSZonesRequest, opts ...scw.RequestOption) (*ListDNSZonesResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "organization_id", req.OrganizationID) - parameter.AddToQuery(query, "project_id", req.ProjectID) - parameter.AddToQuery(query, "order_by", req.OrderBy) - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "domain", req.Domain) - parameter.AddToQuery(query, "dns_zone", req.DNSZone) - parameter.AddToQuery(query, "dns_zones", req.DNSZones) - parameter.AddToQuery(query, "created_after", req.CreatedAfter) - parameter.AddToQuery(query, "created_before", req.CreatedBefore) - parameter.AddToQuery(query, "updated_after", req.UpdatedAfter) - parameter.AddToQuery(query, "updated_before", req.UpdatedBefore) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones", - Query: query, - } - - var resp ListDNSZonesResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// CreateDNSZone: Create a new DNS zone specified by the domain name, the subdomain and the Project ID. -func (s *API) CreateDNSZone(req *CreateDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { - var err error - - if req.ProjectID == "" { - defaultProjectID, _ := s.client.GetDefaultProjectID() - req.ProjectID = defaultProjectID - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/dns-zones", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp DNSZone - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// UpdateDNSZone: Update the name and/or the Organizations for a DNS zone. -func (s *API) UpdateDNSZone(req *UpdateDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { - var err error - - if req.ProjectID == "" { - defaultProjectID, _ := s.client.GetDefaultProjectID() - req.ProjectID = defaultProjectID - } - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PATCH", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp DNSZone - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// CloneDNSZone: Clone an existing DNS zone with all its records into a new DNS zone. -func (s *API) CloneDNSZone(req *CloneDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/clone", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp DNSZone - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// DeleteDNSZone: Delete a DNS zone and all its records. -func (s *API) DeleteDNSZone(req *DeleteDNSZoneRequest, opts ...scw.RequestOption) (*DeleteDNSZoneResponse, error) { - var err error - - if req.ProjectID == "" { - defaultProjectID, _ := s.client.GetDefaultProjectID() - req.ProjectID = defaultProjectID - } - - query := url.Values{} - parameter.AddToQuery(query, "project_id", req.ProjectID) - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "DELETE", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "", - Query: query, - } - - var resp DeleteDNSZoneResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListDNSZoneRecords: Retrieve a list of DNS records within a DNS zone that has default name servers. -// You can filter records by type and name. -func (s *API) ListDNSZoneRecords(req *ListDNSZoneRecordsRequest, opts ...scw.RequestOption) (*ListDNSZoneRecordsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "project_id", req.ProjectID) - parameter.AddToQuery(query, "order_by", req.OrderBy) - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "name", req.Name) - parameter.AddToQuery(query, "type", req.Type) - parameter.AddToQuery(query, "id", req.ID) - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", - Query: query, - } - - var resp ListDNSZoneRecordsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// UpdateDNSZoneRecords: Update records within a DNS zone that has default name servers and perform several actions on your records. -// -// Actions include: -// - add: allows you to add a new record or add a new IP to an existing A record, for example -// - set: allows you to edit a record or edit an IP from an existing A record, for example -// - delete: allows you to delete a record or delete an IP from an existing A record, for example -// - clear: allows you to delete all records from a DNS zone -// -// All edits will be versioned. -func (s *API) UpdateDNSZoneRecords(req *UpdateDNSZoneRecordsRequest, opts ...scw.RequestOption) (*UpdateDNSZoneRecordsResponse, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PATCH", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp UpdateDNSZoneRecordsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListDNSZoneNameservers: Retrieve a list of name servers within a DNS zone and their optional glue records. -func (s *API) ListDNSZoneNameservers(req *ListDNSZoneNameserversRequest, opts ...scw.RequestOption) (*ListDNSZoneNameserversResponse, error) { - var err error - - query := url.Values{} - parameter.AddToQuery(query, "project_id", req.ProjectID) - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/nameservers", - Query: query, - } - - var resp ListDNSZoneNameserversResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// UpdateDNSZoneNameservers: Update name servers within a DNS zone and set optional glue records. -func (s *API) UpdateDNSZoneNameservers(req *UpdateDNSZoneNameserversRequest, opts ...scw.RequestOption) (*UpdateDNSZoneNameserversResponse, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PUT", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/nameservers", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp UpdateDNSZoneNameserversResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ClearDNSZoneRecords: Delete all records within a DNS zone that has default name servers.
-// All edits will be versioned. -func (s *API) ClearDNSZoneRecords(req *ClearDNSZoneRecordsRequest, opts ...scw.RequestOption) (*ClearDNSZoneRecordsResponse, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "DELETE", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", - } - - var resp ClearDNSZoneRecordsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ExportRawDNSZone: Export a DNS zone with default name servers, in a specific format. -func (s *API) ExportRawDNSZone(req *ExportRawDNSZoneRequest, opts ...scw.RequestOption) (*scw.File, error) { - var err error - - query := url.Values{} - parameter.AddToQuery(query, "format", req.Format) - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/raw", - Query: query, - } - - var resp scw.File - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ImportRawDNSZone: Import and replace the format of records from a given provider, with default name servers. -func (s *API) ImportRawDNSZone(req *ImportRawDNSZoneRequest, opts ...scw.RequestOption) (*ImportRawDNSZoneResponse, error) { - var err error - - if req.ProjectID == "" { - defaultProjectID, _ := s.client.GetDefaultProjectID() - req.ProjectID = defaultProjectID - } - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/raw", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp ImportRawDNSZoneResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ImportProviderDNSZone: Import and replace the format of records from a given provider, with default name servers. -func (s *API) ImportProviderDNSZone(req *ImportProviderDNSZoneRequest, opts ...scw.RequestOption) (*ImportProviderDNSZoneResponse, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/import-provider", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp ImportProviderDNSZoneResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// RefreshDNSZone: Refresh an SOA DNS zone to reload the records in the DNS zone and update the SOA serial. -// You can recreate the given DNS zone and its sub DNS zone if needed. -func (s *API) RefreshDNSZone(req *RefreshDNSZoneRequest, opts ...scw.RequestOption) (*RefreshDNSZoneResponse, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/refresh", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp RefreshDNSZoneResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListDNSZoneVersions: Retrieve a list of a DNS zone's versions.
-// The maximum version count is 100. If the count reaches this limit, the oldest version will be deleted after each new modification. -func (s *API) ListDNSZoneVersions(req *ListDNSZoneVersionsRequest, opts ...scw.RequestOption) (*ListDNSZoneVersionsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/versions", - Query: query, - } - - var resp ListDNSZoneVersionsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListDNSZoneVersionRecords: Retrieve a list of records from a specific DNS zone version. -func (s *API) ListDNSZoneVersionRecords(req *ListDNSZoneVersionRecordsRequest, opts ...scw.RequestOption) (*ListDNSZoneVersionRecordsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - - if fmt.Sprint(req.DNSZoneVersionID) == "" { - return nil, errors.New("field DNSZoneVersionID cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "", - Query: query, - } - - var resp ListDNSZoneVersionRecordsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// GetDNSZoneVersionDiff: Access a previous DNS zone version to see the differences from another specific version. -func (s *API) GetDNSZoneVersionDiff(req *GetDNSZoneVersionDiffRequest, opts ...scw.RequestOption) (*GetDNSZoneVersionDiffResponse, error) { - var err error - - if fmt.Sprint(req.DNSZoneVersionID) == "" { - return nil, errors.New("field DNSZoneVersionID cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "/diff", - } - - var resp GetDNSZoneVersionDiffResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// RestoreDNSZoneVersion: Restore and activate a version of a specific DNS zone. -func (s *API) RestoreDNSZoneVersion(req *RestoreDNSZoneVersionRequest, opts ...scw.RequestOption) (*RestoreDNSZoneVersionResponse, error) { - var err error - - if fmt.Sprint(req.DNSZoneVersionID) == "" { - return nil, errors.New("field DNSZoneVersionID cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "/restore", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp RestoreDNSZoneVersionResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// GetSSLCertificate: Get the DNS zone's TLS certificate. If you do not have a certificate, the ouptut returns `no certificate found`. -func (s *API) GetSSLCertificate(req *GetSSLCertificateRequest, opts ...scw.RequestOption) (*SSLCertificate, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/ssl-certificates/" + fmt.Sprint(req.DNSZone) + "", - } - - var resp SSLCertificate - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// CreateSSLCertificate: Create a new TLS certificate or retrieve information about an existing TLS certificate. -func (s *API) CreateSSLCertificate(req *CreateSSLCertificateRequest, opts ...scw.RequestOption) (*SSLCertificate, error) { - var err error - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/ssl-certificates", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp SSLCertificate - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListSSLCertificates: List all the TLS certificates a user has created, specified by the user's Project ID and the DNS zone. -func (s *API) ListSSLCertificates(req *ListSSLCertificatesRequest, opts ...scw.RequestOption) (*ListSSLCertificatesResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "dns_zone", req.DNSZone) - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "project_id", req.ProjectID) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/ssl-certificates", - Query: query, - } - - var resp ListSSLCertificatesResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// DeleteSSLCertificate: Delete an existing TLS certificate specified by its DNS zone. Deleting a TLS certificate is permanent and cannot be undone. -func (s *API) DeleteSSLCertificate(req *DeleteSSLCertificateRequest, opts ...scw.RequestOption) (*DeleteSSLCertificateResponse, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "DELETE", - Path: "/domain/v2beta1/ssl-certificates/" + fmt.Sprint(req.DNSZone) + "", - } - - var resp DeleteSSLCertificateResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// GetDNSZoneTsigKey: Retrieve information about the TSIG key of a given DNS zone to allow AXFR requests. -func (s *API) GetDNSZoneTsigKey(req *GetDNSZoneTsigKeyRequest, opts ...scw.RequestOption) (*GetDNSZoneTsigKeyResponse, error) { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return nil, errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/tsig-key", - } - - var resp GetDNSZoneTsigKeyResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// DeleteDNSZoneTsigKey: Delete an existing TSIG key specified by its DNS zone. Deleting a TSIG key is permanent and cannot be undone. -func (s *API) DeleteDNSZoneTsigKey(req *DeleteDNSZoneTsigKeyRequest, opts ...scw.RequestOption) error { - var err error - - if fmt.Sprint(req.DNSZone) == "" { - return errors.New("field DNSZone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "DELETE", - Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/tsig-key", - } - - err = s.client.Do(scwReq, nil, opts...) - if err != nil { - return err - } - return nil -} - -// Manage your domains and contacts. -type RegistrarAPI struct { - client *scw.Client -} - -// NewRegistrarAPI returns a RegistrarAPI object from a Scaleway client. -func NewRegistrarAPI(client *scw.Client) *RegistrarAPI { - return &RegistrarAPI{ - client: client, - } -} - -// ListTasks: List all operations performed on the account. -// You can filter the list of tasks by domain name. -func (s *RegistrarAPI) ListTasks(req *RegistrarAPIListTasksRequest, opts ...scw.RequestOption) (*ListTasksResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "project_id", req.ProjectID) - parameter.AddToQuery(query, "organization_id", req.OrganizationID) - parameter.AddToQuery(query, "domain", req.Domain) - parameter.AddToQuery(query, "types", req.Types) - parameter.AddToQuery(query, "statuses", req.Statuses) - parameter.AddToQuery(query, "order_by", req.OrderBy) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/tasks", - Query: query, - } - - var resp ListTasksResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// BuyDomains: Request the registration of domain names. -// You can provide a domain's already existing contact or a new contact. -func (s *RegistrarAPI) BuyDomains(req *RegistrarAPIBuyDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { - var err error - - if req.ProjectID == "" { - defaultProjectID, _ := s.client.GetDefaultProjectID() - req.ProjectID = defaultProjectID - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/buy-domains", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp OrderResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// RenewDomains: Request the renewal of one or more domain names. -func (s *RegistrarAPI) RenewDomains(req *RegistrarAPIRenewDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { - var err error - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/renew-domains", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp OrderResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// TransferInDomain: Request the transfer of a domain from another registrar to Scaleway Domains and DNS. -func (s *RegistrarAPI) TransferInDomain(req *RegistrarAPITransferInDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { - var err error - - if req.ProjectID == "" { - defaultProjectID, _ := s.client.GetDefaultProjectID() - req.ProjectID = defaultProjectID - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/transfer-domains", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp OrderResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// TradeDomain: Request to change a domain's contact owner.
-// If you specify the `organization_id` of the domain's new owner, the contact will change from the current owner's Scaleway account to the new owner's Scaleway account.
-// If the new owner's current contact information is not available, the first ever contact they have created for previous domains is taken into account to operate the change.
-// If the new owner has never created a contact to register domains before, an error message displays. -func (s *RegistrarAPI) TradeDomain(req *RegistrarAPITradeDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/trade", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp OrderResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// RegisterExternalDomain: Request the registration of an external domain name. -func (s *RegistrarAPI) RegisterExternalDomain(req *RegistrarAPIRegisterExternalDomainRequest, opts ...scw.RequestOption) (*RegisterExternalDomainResponse, error) { - var err error - - if req.ProjectID == "" { - defaultProjectID, _ := s.client.GetDefaultProjectID() - req.ProjectID = defaultProjectID - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/external-domains", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp RegisterExternalDomainResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// DeleteExternalDomain: Delete an external domain name. -func (s *RegistrarAPI) DeleteExternalDomain(req *RegistrarAPIDeleteExternalDomainRequest, opts ...scw.RequestOption) (*DeleteExternalDomainResponse, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "DELETE", - Path: "/domain/v2beta1/external-domains/" + fmt.Sprint(req.Domain) + "", - } - - var resp DeleteExternalDomainResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// CheckContactsCompatibility: Check whether contacts are compatible with a domain or a TLD. -// If contacts are not compatible with either the domain or the TLD, the information that needs to be corrected is returned. -func (s *RegistrarAPI) CheckContactsCompatibility(req *RegistrarAPICheckContactsCompatibilityRequest, opts ...scw.RequestOption) (*CheckContactsCompatibilityResponse, error) { - var err error - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/check-contacts-compatibility", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp CheckContactsCompatibilityResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListContacts: Retrieve the list of contacts and their associated domains and roles. -// You can filter the list by domain name. -func (s *RegistrarAPI) ListContacts(req *RegistrarAPIListContactsRequest, opts ...scw.RequestOption) (*ListContactsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "domain", req.Domain) - parameter.AddToQuery(query, "project_id", req.ProjectID) - parameter.AddToQuery(query, "organization_id", req.OrganizationID) - parameter.AddToQuery(query, "role", req.Role) - parameter.AddToQuery(query, "email_status", req.EmailStatus) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/contacts", - Query: query, - } - - var resp ListContactsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// GetContact: Retrieve a contact's details from the registrar using the given contact's ID. -func (s *RegistrarAPI) GetContact(req *RegistrarAPIGetContactRequest, opts ...scw.RequestOption) (*Contact, error) { - var err error - - if fmt.Sprint(req.ContactID) == "" { - return nil, errors.New("field ContactID cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/contacts/" + fmt.Sprint(req.ContactID) + "", - } - - var resp Contact - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// UpdateContact: Edit the contact's information. -func (s *RegistrarAPI) UpdateContact(req *RegistrarAPIUpdateContactRequest, opts ...scw.RequestOption) (*Contact, error) { - var err error - - if fmt.Sprint(req.ContactID) == "" { - return nil, errors.New("field ContactID cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PATCH", - Path: "/domain/v2beta1/contacts/" + fmt.Sprint(req.ContactID) + "", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Contact - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListDomains: Retrieve the list of domains you own. -func (s *RegistrarAPI) ListDomains(req *RegistrarAPIListDomainsRequest, opts ...scw.RequestOption) (*ListDomainsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "order_by", req.OrderBy) - parameter.AddToQuery(query, "registrar", req.Registrar) - parameter.AddToQuery(query, "status", req.Status) - parameter.AddToQuery(query, "project_id", req.ProjectID) - parameter.AddToQuery(query, "organization_id", req.OrganizationID) - parameter.AddToQuery(query, "is_external", req.IsExternal) - parameter.AddToQuery(query, "domain", req.Domain) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/domains", - Query: query, - } - - var resp ListDomainsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListRenewableDomains: Retrieve the list of domains you own that can be renewed. You can also see the maximum renewal duration in years for your domains that are renewable. -func (s *RegistrarAPI) ListRenewableDomains(req *RegistrarAPIListRenewableDomainsRequest, opts ...scw.RequestOption) (*ListRenewableDomainsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "order_by", req.OrderBy) - parameter.AddToQuery(query, "project_id", req.ProjectID) - parameter.AddToQuery(query, "organization_id", req.OrganizationID) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/renewable-domains", - Query: query, - } - - var resp ListRenewableDomainsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// GetDomain: Retrieve a specific domain and display the domain's information. -func (s *RegistrarAPI) GetDomain(req *RegistrarAPIGetDomainRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "", - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// UpdateDomain: Update contacts for a specific domain or create a new contact.
-// If you add the same contact for multiple roles (owner, administrative, technical), only one ID will be created and used for all of the roles. -func (s *RegistrarAPI) UpdateDomain(req *RegistrarAPIUpdateDomainRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PATCH", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// LockDomainTransfer: Lock the transfer of a domain. This means that the domain cannot be transferred and the authorization code cannot be requested to your current registrar. -func (s *RegistrarAPI) LockDomainTransfer(req *RegistrarAPILockDomainTransferRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/lock-transfer", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// UnlockDomainTransfer: Unlock the transfer of a domain. This means that the domain can be transferred and the authorization code can be requested to your current registrar. -func (s *RegistrarAPI) UnlockDomainTransfer(req *RegistrarAPIUnlockDomainTransferRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/unlock-transfer", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// EnableDomainAutoRenew: Enable the `auto renew` feature for a domain. This means the domain will be automatically renewed before its expiry date. -func (s *RegistrarAPI) EnableDomainAutoRenew(req *RegistrarAPIEnableDomainAutoRenewRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/enable-auto-renew", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// DisableDomainAutoRenew: Disable the `auto renew` feature for a domain. This means the domain will not be renewed before its expiry date. -func (s *RegistrarAPI) DisableDomainAutoRenew(req *RegistrarAPIDisableDomainAutoRenewRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/disable-auto-renew", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// GetDomainAuthCode: Retrieve the authorization code to tranfer an unlocked domain. The output returns an error if the domain is locked. -// Some TLDs may have a different procedure to retrieve the authorization code. In that case, the information displays in the message field. -func (s *RegistrarAPI) GetDomainAuthCode(req *RegistrarAPIGetDomainAuthCodeRequest, opts ...scw.RequestOption) (*GetDomainAuthCodeResponse, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/auth-code", - } - - var resp GetDomainAuthCodeResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// EnableDomainDNSSEC: If your domain has the default Scaleway NS and uses another registrar, you have to update the DS record manually. -func (s *RegistrarAPI) EnableDomainDNSSEC(req *RegistrarAPIEnableDomainDNSSECRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/enable-dnssec", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// DisableDomainDNSSEC: Disable DNSSEC for a domain. -func (s *RegistrarAPI) DisableDomainDNSSEC(req *RegistrarAPIDisableDomainDNSSECRequest, opts ...scw.RequestOption) (*Domain, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/disable-dnssec", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Domain - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// SearchAvailableDomains: Search a domain or a maximum of 10 domains that are available. -// -// If the TLD list is empty or not set, the search returns the results from the most popular TLDs. -func (s *RegistrarAPI) SearchAvailableDomains(req *RegistrarAPISearchAvailableDomainsRequest, opts ...scw.RequestOption) (*SearchAvailableDomainsResponse, error) { - var err error - - query := url.Values{} - parameter.AddToQuery(query, "domains", req.Domains) - parameter.AddToQuery(query, "tlds", req.Tlds) - parameter.AddToQuery(query, "strict_search", req.StrictSearch) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/search-domains", - Query: query, - } - - var resp SearchAvailableDomainsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListTlds: Retrieve the list of TLDs and offers associated with them. -func (s *RegistrarAPI) ListTlds(req *RegistrarAPIListTldsRequest, opts ...scw.RequestOption) (*ListTldsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "tlds", req.Tlds) - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "order_by", req.OrderBy) - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/tlds", - Query: query, - } - - var resp ListTldsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// CreateDomainHost: Create a hostname for a domain with glue IPs. -func (s *RegistrarAPI) CreateDomainHost(req *RegistrarAPICreateDomainHostRequest, opts ...scw.RequestOption) (*Host, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Host - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// ListDomainHosts: List a domain's hostnames using their glue IPs. -func (s *RegistrarAPI) ListDomainHosts(req *RegistrarAPIListDomainHostsRequest, opts ...scw.RequestOption) (*ListDomainHostsResponse, error) { - var err error - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts", - Query: query, - } - - var resp ListDomainHostsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// UpdateDomainHost: Update a domain's hostname with glue IPs. -func (s *RegistrarAPI) UpdateDomainHost(req *RegistrarAPIUpdateDomainHostRequest, opts ...scw.RequestOption) (*Host, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - if fmt.Sprint(req.Name) == "" { - return nil, errors.New("field Name cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PATCH", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts/" + fmt.Sprint(req.Name) + "", - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Host - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -// DeleteDomainHost: Delete a domain's hostname. -func (s *RegistrarAPI) DeleteDomainHost(req *RegistrarAPIDeleteDomainHostRequest, opts ...scw.RequestOption) (*Host, error) { - var err error - - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - - if fmt.Sprint(req.Name) == "" { - return nil, errors.New("field Name cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "DELETE", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts/" + fmt.Sprint(req.Name) + "", - } - - var resp Host - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} \ No newline at end of file diff --git a/pkg/domain/utils.go b/pkg/domain/utils.go deleted file mode 100644 index 4a47c8a..0000000 --- a/pkg/domain/utils.go +++ /dev/null @@ -1,143 +0,0 @@ -package domain - -import ( - "fmt" - "time" - - "github.com/scaleway/scaleway-sdk-go/internal/async" - "github.com/scaleway/scaleway-sdk-go/internal/errors" - "github.com/scaleway/scaleway-sdk-go/scw" -) - -const ( - defaultRetryInterval = 15 * time.Second - defaultTimeout = 5 * time.Minute -) - -const ( - // ErrCodeNoSuchDNSZone for service response error code - // - // The specified dns zone does not exist. - ErrCodeNoSuchDNSZone = "NoSuchDNSZone" - ErrCodeNoSuchDNSRecord = "NoSuchDNSRecord" -) - -// WaitForDNSZoneRequest is used by WaitForDNSZone method. -type WaitForDNSZoneRequest struct { - DNSZone string - DNSZones []string - Timeout *time.Duration - RetryInterval *time.Duration -} - -func (s *API) WaitForDNSZone( - req *WaitForDNSZoneRequest, - opts ...scw.RequestOption, -) (*DNSZone, error) { - - timeout := defaultTimeout - if req.Timeout != nil { - timeout = *req.Timeout - } - retryInterval := defaultRetryInterval - if req.RetryInterval != nil { - retryInterval = *req.RetryInterval - } - - terminalStatus := map[DNSZoneStatus]struct{}{ - DNSZoneStatusActive: {}, - DNSZoneStatusLocked: {}, - DNSZoneStatusError: {}, - } - - dns, err := async.WaitSync(&async.WaitSyncConfig{ - Get: func() (interface{}, bool, error) { - listReq := &ListDNSZonesRequest{ - DNSZones: req.DNSZones, - } - - if req.DNSZone != "" { - listReq.DNSZone = &req.DNSZone - } - - // listing dns zones and take the first one - DNSZones, err := s.ListDNSZones(listReq, opts...) - - if err != nil { - return nil, false, err - } - - if len(DNSZones.DNSZones) == 0 { - return nil, true, fmt.Errorf(ErrCodeNoSuchDNSZone) - } - - Dns := DNSZones.DNSZones[0] - - _, isTerminal := terminalStatus[Dns.Status] - - return Dns, isTerminal, nil - }, - Timeout: timeout, - IntervalStrategy: async.LinearIntervalStrategy(retryInterval), - }) - - if err != nil { - return nil, errors.Wrap(err, "waiting for DNS failed") - } - - return dns.(*DNSZone), nil -} - -// WaitForDNSRecordExistRequest is used by WaitForDNSRecordExist method. -type WaitForDNSRecordExistRequest struct { - DNSZone string - RecordName string - RecordType RecordType - Timeout *time.Duration - RetryInterval *time.Duration -} - -func (s *API) WaitForDNSRecordExist( - req *WaitForDNSRecordExistRequest, - opts ...scw.RequestOption, -) (*Record, error) { - timeout := defaultTimeout - if req.Timeout != nil { - timeout = *req.Timeout - } - retryInterval := defaultRetryInterval - if req.RetryInterval != nil { - retryInterval = *req.RetryInterval - } - - dns, err := async.WaitSync(&async.WaitSyncConfig{ - Get: func() (interface{}, bool, error) { - // listing dns zone records and take the first one - DNSRecords, err := s.ListDNSZoneRecords(&ListDNSZoneRecordsRequest{ - Name: req.RecordName, - Type: req.RecordType, - DNSZone: req.DNSZone, - }, opts...) - - if err != nil { - return nil, false, err - } - - if DNSRecords.TotalCount == 0 { - return nil, false, fmt.Errorf(ErrCodeNoSuchDNSRecord) - } - - record := DNSRecords.Records[0] - - return record, true, nil - }, - Timeout: timeout, - IntervalStrategy: async.LinearIntervalStrategy(retryInterval), - }) - - if err != nil { - return nil, errors.Wrap(err, "check for DNS Record exist failed") - } - - return dns.(*Record), nil -} \ No newline at end of file diff --git a/pkg/util/version.go b/pkg/util/version.go deleted file mode 100644 index 613d967..0000000 --- a/pkg/util/version.go +++ /dev/null @@ -1,35 +0,0 @@ -package util - -import ( - "fmt" - "runtime" -) - -// These are set during build time via -ldflags -var ( - version = "0.0.1+dev" - gitCommit string - buildDate string -) - -// VersionInfo represents the current running version -type VersionInfo struct { - Version string `json:"version"` - GitCommit string `json:"gitCommit"` - BuildDate string `json:"buildDate"` - GoVersion string `json:"goVersion"` - Compiler string `json:"compiler"` - Platform string `json:"platform"` -} - -// GetVersion returns the current running version -func GetVersion() VersionInfo { - return VersionInfo{ - Version: version, - GitCommit: gitCommit, - BuildDate: buildDate, - GoVersion: runtime.Version(), - Compiler: runtime.Compiler, - Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), - } -} diff --git a/pkg/dns/dns.go b/sthome/dns.go similarity index 89% rename from pkg/dns/dns.go rename to sthome/dns.go index e2400a8..a9bc9f8 100644 --- a/pkg/dns/dns.go +++ b/sthome/dns.go @@ -1,4 +1,4 @@ -package dns +package sthome import ( "fmt" @@ -50,14 +50,14 @@ func (e *sthomeSolver) addDNSAnswer(q dns.Question, msg *dns.Msg, req *dns.Msg) // NS and SOA are for authoritative lookups, return obviously invalid data case dns.TypeNS: - rr, err := dns.NewRR(fmt.Sprintf("%s 5 IN NS ns.example-acme-webook.invalid.", q.Name)) + rr, err := dns.NewRR(fmt.Sprintf("%s 5 IN NS ns.sthome-acme-webook.invalid.", q.Name)) if err != nil { return err } msg.Answer = append(msg.Answer, rr) return nil case dns.TypeSOA: - rr, err := dns.NewRR(fmt.Sprintf("%s 5 IN SOA %s 20 5 5 5 5", "ns.example-acme-webook.invalid.", "ns.example-acme-webook.invalid.")) + rr, err := dns.NewRR(fmt.Sprintf("%s 5 IN SOA %s 20 5 5 5 5", "ns.sthome-acme-webook.invalid.", "ns.sthome-acme-webook.invalid.")) if err != nil { return err } diff --git a/pkg/dns/sthome.go b/sthome/sthome.go similarity index 79% rename from pkg/dns/sthome.go rename to sthome/sthome.go index fbddf7c..6bce952 100644 --- a/pkg/dns/sthome.go +++ b/sthome/sthome.go @@ -1,15 +1,14 @@ -// package example contains a self-contained example of a webhook that passes the cert-manager +// package sthome contains a self-contained sthome of a webhook that passes the cert-manager // DNS conformance tests -package dns +package sthome import ( "fmt" "os" "sync" - //"github.com/jetstack/cert-manager/pkg/acme/webhook" - "github.com/jetstack/cert-manager/pkg/acme/webhook" - acme "github.com/jetstack/cert-manager/pkg/acme/webhook/apis/acme/v1alpha1" + "github.com/cert-manager/cert-manager/pkg/acme/webhook" + acme "github.com/cert-manager/cert-manager/pkg/acme/webhook/apis/acme/v1alpha1" "github.com/miekg/dns" "k8s.io/client-go/rest" ) @@ -57,7 +56,7 @@ func (e *sthomeSolver) Initialize(kubeClientConfig *rest.Config, stopCh <-chan s func New(port string) webhook.Solver { e := &sthomeSolver{ - name: "example", + name: "sthome", txtRecords: make(map[string]string), } e.server = &dns.Server{ diff --git a/pkg/dns/sthome_test.go b/sthome/sthome_test.go similarity index 88% rename from pkg/dns/sthome_test.go rename to sthome/sthome_test.go index e3001aa..d285a53 100644 --- a/pkg/dns/sthome_test.go +++ b/sthome/sthome_test.go @@ -1,23 +1,23 @@ -package dns +package sthome import ( "crypto/rand" "math/big" "testing" - acme "github.com/jetstack/cert-manager/pkg/acme/webhook/apis/acme/v1alpha1" + acme "github.com/cert-manager/cert-manager/pkg/acme/webhook/apis/acme/v1alpha1" "github.com/miekg/dns" "github.com/stretchr/testify/assert" ) -func TestSthomeSolver_Name(t *testing.T) { +func TeststhomeSolver_Name(t *testing.T) { port, _ := rand.Int(rand.Reader, big.NewInt(50000)) port = port.Add(port, big.NewInt(15534)) solver := New(port.String()) assert.Equal(t, "sthome", solver.Name()) } -func TestSthomeSolver_Initialize(t *testing.T) { +func TeststhomeSolver_Initialize(t *testing.T) { port, _ := rand.Int(rand.Reader, big.NewInt(50000)) port = port.Add(port, big.NewInt(15534)) solver := New(port.String()) @@ -27,7 +27,7 @@ func TestSthomeSolver_Initialize(t *testing.T) { close(done) } -func TestSthomeSolver_Present_Cleanup(t *testing.T) { +func TeststhomeSolver_Present_Cleanup(t *testing.T) { port, _ := rand.Int(rand.Reader, big.NewInt(50000)) port = port.Add(port, big.NewInt(15534)) solver := New(port.String()) @@ -39,9 +39,9 @@ func TestSthomeSolver_Present_Cleanup(t *testing.T) { hostname string record string }{ - {"test1.sthome.net.", "testkey1"}, - {"test2.sthome.net.", "testkey2"}, - {"test3.sthome.net.", "testkey3"}, + {"test1.sthome.com.", "testkey1"}, + {"test2.sthome.com.", "testkey2"}, + {"test3.sthome.com.", "testkey3"}, } for _, test := range validTestData { err := solver.Present(&acme.ChallengeRequest{