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{